difftreelog
refactor temporarly break cross, but greatly cleanup data
in: trunk
16 files changed
Cargo.lockdiffbeforeafterboth320 packageslockfile v3
Might be heavy and slow!
abort-on-drop
0.2.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dd6d700ad9af641490c1f7d67980d2de4d1433016e5b12f819448d3c832142adepends onused byaddr2line
0.21.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cbdepends onused byadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.5.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0depends onaes
0.8.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2depends onused byaes-gcm
0.10.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1used byage
0.9.2crates.io↘ 29↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d55a4d912c80a92762ffd1c884065f3f9646467d22c95390e824a0ff7def472depends on- aes
0.8.3 - aes-gcm
0.10.3 - age-core
0.9.0 - base64
0.13.1 - bcrypt-pbkdf
0.9.0 - bech32
0.9.1 - cbc
0.1.2 - chacha20poly1305
0.10.1 - cipher
0.4.4 - cookie-factory
0.3.2 - ctr
0.9.2 - curve25519-dalek
3.2.0 - hkdf
0.12.3 - hmac
0.12.1 - i18n-embed
0.13.9 - i18n-embed-fl
0.6.7 - lazy_static
1.4.0 - nom
7.1.3 - num-traits
0.2.17 - pin-project
1.1.3 - rand
0.7.3 - rand
0.8.5 - rsa
0.7.2 - rust-embed
6.8.1 - scrypt
0.10.0 - sha2
0.10.8 - subtle
2.5.0 - x25519-dalek
1.1.1 - zeroize
1.6.0
- aes
age-core
0.9.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3d2e815ac879dc23c1139e720d21c6cd4d1276345c772587285d965a69b8f32depends onused byaho-corasick
1.1.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518abdepends onalejandra
3.0.0github.com/kamadorueda/alejandra↘ 3↖ 1sourcegit+https://github.com/kamadorueda/alejandra#e53c2c6c6c103dc3f848dbd9fbd93ee7c69c109fdepends onused byandroid_system_properties
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311depends onused byandroid-tzdata
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0used byansi-str
0.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1ddepends onused byansitok
0.2.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83anstream
0.6.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44depends onused byanstyle
1.0.4crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87anstyle-parse
0.2.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140depends onused byanstyle-query
1.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494bdepends onused byanstyle-wincon
3.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628depends onused byanyhow
1.0.75crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6arc-swap
1.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6used byasync-trait
0.1.74crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9depends onused byatty
0.2.14crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onused byautocfg
1.1.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabacktrace
0.3.69crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837depends onused bybase64
0.13.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8used bybase64
0.21.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9used bybcrypt-pbkdf
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3806a8db60cf56efee531616a34a6aaa9a114d6da2add861b0fa4a188881b2c7depends onused bybetter-command
0.1.0workspace↘ 6↖ 1bitflags
1.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718abitflags
2.4.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07depends onblock-buffer
0.10.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71depends onused byblock-padding
0.3.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93depends onused byblowfish
0.9.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7depends onused bybumpalo
3.14.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aecused bybytecount
0.6.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205used bybyteorder
1.4.3crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610bytes
1.5.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223used bycbc
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6depends onused bycbitset
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29b6ad25ae296159fb0da12b970b2fe179b234584d7cd294c891e2bbb284466bdepends onused bycc
1.0.83crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0depends oncfg-if
1.0.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdchacha20
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818depends onused bychacha20poly1305
0.10.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35used bychrono
0.4.31crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38depends onused bycipher
0.4.4crates.io↘ 3↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3daddepends onclap
4.4.7crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17bdepends onclap_builder
4.4.7crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663depends onused byclap_derive
4.4.7crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442used byclap_lex
0.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1used bycolorchoice
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7used byconsole
0.15.7crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8used byconst-oid
0.9.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6fused bycookie-factory
0.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126bused bycore-foundation-sys
0.8.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efaused bycountme
2.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum328b822bdcba4d4e402be8d9adb6eebf269f969f8eadef977a553ff3c4fbcb58used bycpufeatures
0.2.9crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1depends oncrypto-common
0.1.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3ctr
0.9.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835depends onused bycurve25519-dalek
3.2.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61used bydashmap
5.5.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856used byder
0.6.1crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4dedepends onderanged
0.3.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3depends onused bydigest
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends onused bydigest
0.10.7crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292dirs
5.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225depends onused bydirs-sys
0.4.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321cused bydisplaydoc
0.2.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175ddepends onused byeither
1.9.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07used byencode_unicode
0.3.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831fused byenv_logger
0.10.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0used byequivalent
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5used byerrno
0.3.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860depends onused byfastrand
2.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5used byfind-crate
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2depends onfleet
0.1.0workspace↘ 34↖ 0depends on- abort-on-drop
0.2.2 - age
0.9.2 - age-core
0.9.0 - anyhow
1.0.75 - async-trait
0.1.74 - base64
0.21.5 - better-command
0.1.0 - chrono
0.4.31 - clap
4.4.7 - futures
0.3.29 - hostname
0.3.1 - human-repr
1.1.0 - indicatif
0.17.7 - itertools
0.11.0 - nixlike
0.1.0 - once_cell
1.19.0 - openssh
0.10.1 - owo-colors
3.5.0 - peg
0.8.2 - r2d2
0.8.10 - regex
1.10.2 - serde
1.0.193 - serde_json
1.0.108 - shlex
1.2.0 - tabled
0.14.0 - tempfile
3.8.1 - time
0.3.30 - tokio
1.33.0 - tokio-util
0.7.10 - tracing
0.1.40 - tracing-indicatif
0.3.6 - tracing-subscriber
0.3.17 - unindent
0.2.3 - z85
3.0.5
- abort-on-drop
fleet-install-secrets
0.1.0workspace↘ 10↖ 0fluent
0.16.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7depends onfluent-bundle
0.15.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffddepends onused byfluent-langneg
0.13.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94depends onfluent-syntax
0.11.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78depends onfnv
1.0.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1used byfutures
0.3.29crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335depends onused byfutures-channel
0.3.29crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacbdepends onfutures-core
0.3.29crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088cfutures-executor
0.3.29crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bcused byfutures-io
0.3.29crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaafutures-macro
0.3.29crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddbdepends onused byfutures-sink
0.3.29crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817futures-task
0.3.29crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumefd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2futures-util
0.3.29crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104depends ongeneric-array
0.14.7crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9adepends ongetrandom
0.1.16crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fceused bygetrandom
0.2.10crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427ghash
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40depends onused bygimli
0.28.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0used byhashbrown
0.9.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04used byhashbrown
0.14.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12used byheck
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8hermit-abi
0.1.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhermit-abi
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7hkdf
0.12.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437depends onused byhmac
0.12.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5edepends onhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhuman-repr
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58b778a5761513caf593693f8951c97a5b610841e754788400f32102eefdff1used byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byi18n-config
0.4.6crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640i18n-embed
0.13.9crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92a86226a7a16632de6723449ee5fe70bac5af718bc642ee9ca2f0f6e14fa1fadepends onused byi18n-embed-fl
0.6.7crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd26a3d3569737dfaac7fc1c4078e6af07471c3060b8e570bcd83cdd5f4685395depends onused byi18n-embed-impl
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2a4d5bff745c9a6e1459c490059281b353a4ab0a4e1e58b3eeeaef71f97d07bused byiana-time-zone
0.1.57crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613depends onused byiana-time-zone-haiku
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269fdepends onused byindexmap
2.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897depends onused byindicatif
0.17.7crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25depends oninout
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5depends onused byinstant
0.1.12crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends onused byintl_pluralrules
7.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972depends onused byintl-memoizer
0.5.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66fdepends onio_tee
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304used byis_ci
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fbused byis-terminal
0.4.9crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8bused byitertools
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57depends onused byitoa
1.0.9crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38used byjs-sys
0.3.64crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935adepends onlazy_static
1.4.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646depends onlibc
0.2.149crates.io↘ 0↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29bused by- android_system_properties
0.1.5 - atty
0.2.14 - backtrace
0.3.69 - cc
1.0.83 - console
0.15.7 - cpufeatures
0.2.9 - dirs-sys
0.4.1 - errno
0.3.5 - getrandom
0.1.16 - getrandom
0.2.10 - hermit-abi
0.1.19 - hostname
0.3.1 - libmimalloc-sys
0.1.35 - libredox
0.0.1 - mio
0.8.8 - nix
0.27.1 - num_cpus
1.16.0 - openssh
0.10.1 - parking_lot_core
0.9.8 - rand
0.7.3 - rand
0.8.5 - rustix
0.38.21 - signal-hook-registry
1.4.1 - socket2
0.5.4 - tokio
1.33.0 - tokio-pipe
0.2.12
- android_system_properties
libm
0.2.7crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4libmimalloc-sys
0.1.35crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664depends onused bylibredox
0.0.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8used bylinked-hash-map
0.5.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770fused bylinux-raw-sys
0.4.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03fused bylock_api
0.4.10crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16depends onlog
0.4.20crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8fmatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558depends onused bymemchr
2.6.4crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167memoffset
0.6.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onused bymimalloc
0.1.39crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9cdepends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7depends onused bymio
0.8.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2used bynix
0.27.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053depends onused bynixlike
0.1.0workspace↘ 8↖ 1nom
7.1.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4adepends onnu-ansi-term
0.46.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84depends onused bynum_cpus
1.16.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43depends onused bynum-bigint-dig
0.8.4crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151depends onused bynum-integer
0.1.45crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-iter
0.1.43crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252used bynum-traits
0.2.17crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267cdepends onnumber_prefix
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3used byobject
0.32.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0depends onused byonce_cell
1.19.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92opaque-debug
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssh
0.10.1crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3dfe68c42d6ee6bd9de175b7a5d9bb86aa99d4e2fa7cf2f2a44e97f60b6d2759depends onused byoption-ext
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7dused byoverload
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39used byowo-colors
3.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6fdepends onused bypapergrid
0.10.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8used byparking_lot
0.12.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onparking_lot_core
0.9.8crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447pbkdf2
0.11.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917depends onpeg
0.8.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61depends onused bypeg-macros
0.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90used bypeg-runtime
0.8.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922used bypin-project
1.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422depends onused bypin-project-internal
1.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405depends onused bypin-project-lite
0.2.13crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58pin-utils
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184used bypkcs1
0.4.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719depends onused bypkcs8
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4baused bypoly1305
0.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abfused bypolyval
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fbused byportable-atomic
1.4.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338bused bypowerfmt
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391used byppv-lite86
0.2.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6deproc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro2
1.0.69crates.io↘ 1↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92dadepends onused by- async-trait
0.1.74 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.29 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.2 - peg-macros
0.8.2 - pin-project-internal
1.1.3 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - quote
1.0.33 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - syn
1.0.109 - syn
2.0.38 - tabled_derive
0.6.0 - thiserror-impl
1.0.50 - tokio-macros
2.1.0 - tracing-attributes
0.1.27 - vte_generate_state_changes
0.1.1 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro-support
0.2.87 - zeroize_derive
1.4.2
- async-trait
quote
1.0.33crates.io↘ 1↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293caedepends onused by- async-trait
0.1.74 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.29 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.2 - peg-macros
0.8.2 - pin-project-internal
1.1.3 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - syn
1.0.109 - syn
2.0.38 - tabled_derive
0.6.0 - thiserror-impl
1.0.50 - tokio-macros
2.1.0 - tracing-attributes
0.1.27 - vte_generate_state_changes
0.1.1 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro
0.2.87 - wasm-bindgen-macro-support
0.2.87 - zeroize_derive
1.4.2
- async-trait
r2d2
0.8.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93used byrand
0.7.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used byrand
0.8.5crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404rand_chacha
0.2.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onused byrand_chacha
0.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onused byrand_core
0.5.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.4crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922cdepends onrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byredox_syscall
0.3.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29depends onused byredox_syscall
0.4.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aadepends onused byredox_users
0.4.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4used byregex
1.10.2crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-automata
0.4.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483fused byregex-syntax
0.6.29crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1used byregex-syntax
0.8.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9fremowt-agent
0.1.0workspace↘ 0↖ 0rnix
0.10.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8024a523e8836f1a5d051203dc00d833357fee94e351b51348dfaeca5364daa9depends onused byron
0.8.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94used byrowan
0.12.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1b36e449f3702f3b0c821411db1cbdf30fb451726a9456dce5dabcd44420043used byrsa
0.7.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099cdepends onused byrust-embed
6.8.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma36224c3276f8c4ebc8c20f158eca7ca4359c8db89991c4925132aaaf6702661used byrust-embed-impl
6.8.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1acused byrust-embed-utils
7.8.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d38ff6bf570dc3bb7100fce9f7b60c33fa71d80e88da3f2580df4ff2bdded74depends onrustc-demangle
0.1.23crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76used byrustc-hash
1.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustix
0.38.21crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3ryu
1.0.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741used bysalsa20
0.10.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused byscheduled-thread-pool
0.2.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19depends onused byscopeguard
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49used byscrypt
0.10.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45dused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused byself_cell
0.10.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8afused byserde
1.0.193crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89depends onserde_derive
1.0.193crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3depends onserde_json
1.0.108crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526bdepends onserde_spanned
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186depends onused byserde-transcode
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum590c0e25c2a5bb6e85bf5c1bce768ceb86b316e7a01bdf07d2cb4ec2271990e2depends onused bysha2
0.10.8crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8depends onsharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshell-escape
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184fused byshlex
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380used bysignal-hook-registry
1.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1depends onused bysignature
1.6.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7cdepends onused byslab
0.4.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67depends onused bysmallvec
1.11.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5asmol_str
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9depends onused bysocket2
0.5.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989edepends onused byspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byspki
0.6.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212bdepends onused bystrsim
0.10.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623subtle
2.5.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebcsupports-color
1.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6fdepends onused bysyn
1.0.109crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237syn
2.0.38crates.io↘ 3↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408bused by- async-trait
0.1.74 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.29 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.2 - pin-project-internal
1.1.3 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - thiserror-impl
1.0.50 - tokio-macros
2.1.0 - tracing-attributes
0.1.27 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro-support
0.2.87 - zeroize_derive
1.4.2
- async-trait
tabled
0.14.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22used bytabled_derive
0.6.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4used bytempfile
3.8.1crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5termcolor
1.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64depends onused byterminal_size
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7depends onused bytext-size
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233used bythiserror
1.0.50crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2depends onthiserror-impl
1.0.50crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8depends onused bythread_local
1.1.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152depends onused bytime
0.3.30crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5used bytime-core
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3used bytime-macros
0.2.15crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20depends onused bytinystr
0.7.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8faa444297615a4e020acb64146b0603c9c395c03a97c17fd9028816d3b4d63edepends onused bytokio
1.33.0crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653depends ontokio-macros
2.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675edepends onused bytokio-pipe
0.2.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf213a84bffbd61b8fa0ba8a044b4bbe35d471d0b518867181e82bd5c15542784depends onused bytokio-util
0.7.10crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15depends onused bytoml
0.5.11crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234depends onused bytoml
0.8.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc226a7bba6d859b63c92c4b4fe69c5b6b72d0cb897dbc8e6012298e6154cb56eused bytoml_datetime
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4bdepends onused bytoml_edit
0.20.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ff63e60a958cefbb518ae1fd6566af80d9d4be430a33f3723dfc47d1d411d95used bytracing
0.1.40crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364eftracing-attributes
0.1.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7depends onused bytracing-core
0.1.32crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54depends ontracing-indicatif
0.3.6crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum069580424efe11d97c3fef4197fa98c004fa26672cc71ad8770d224e23b1951dtracing-log
0.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922used bytracing-subscriber
0.3.17crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77depends ontype-map
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46depends onused bytypenum
1.17.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825unic-langid
0.9.1crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2fdepends onunic-langid-impl
0.9.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ffdepends onused byunicase
2.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89depends onused byunicode-ident
1.0.12crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4bunicode-width
0.1.11crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85unindent
0.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ceused byuniversal-hash
0.5.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07eadepends onused byutf8parse
0.2.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370avaluable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byversion_check
0.9.4crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvt100
0.15.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274deused byvte
0.10.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983used byvte
0.11.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197used byvte_generate_state_changes
0.1.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ffdepends onwalkdir
2.4.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54eedepends onwasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423used bywasm-bindgen
0.2.87crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342depends onwasm-bindgen-backend
0.2.87crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abddepends onwasm-bindgen-macro
0.2.87crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1dused bywasm-bindgen-macro-support
0.2.87crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7bused bywinapi
0.3.9crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.6crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows
0.48.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700fdepends onused bywindows_aarch64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8used bywindows_aarch64_gnullvm
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8used bywindows_aarch64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43used bywindows_aarch64_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bcused bywindows_i686_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84fused bywindows_i686_gnu
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743eused bywindows_i686_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060used bywindows_i686_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406used bywindows_x86_64_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36used bywindows_x86_64_gnu
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718eused bywindows_x86_64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3used bywindows_x86_64_gnullvm
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044ccused bywindows_x86_64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0used bywindows_x86_64_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538used bywindows-sys
0.45.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0depends onused bywindows-sys
0.48.0crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9depends onwindows-targets
0.42.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071depends onused bywindows-targets
0.48.5crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940cdepends onwinnow
0.5.15crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefcdepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byz85
3.0.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fczeroize
1.6.0crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9depends onzeroize_derive
1.4.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69depends onused by
329 packageslockfile v3
Might be heavy and slow!
abort-on-drop
0.2.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dd6d700ad9af641490c1f7d67980d2de4d1433016e5b12f819448d3c832142adepends onused byaddr2line
0.21.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cbdepends onused byadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.5.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0depends onaes
0.8.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2depends onused byaes-gcm
0.10.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1used byage
0.9.2crates.io↘ 29↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d55a4d912c80a92762ffd1c884065f3f9646467d22c95390e824a0ff7def472depends on- aes
0.8.3 - aes-gcm
0.10.3 - age-core
0.9.0 - base64
0.13.1 - bcrypt-pbkdf
0.9.0 - bech32
0.9.1 - cbc
0.1.2 - chacha20poly1305
0.10.1 - cipher
0.4.4 - cookie-factory
0.3.2 - ctr
0.9.2 - curve25519-dalek
3.2.0 - hkdf
0.12.4 - hmac
0.12.1 - i18n-embed
0.13.9 - i18n-embed-fl
0.6.7 - lazy_static
1.4.0 - nom
7.1.3 - num-traits
0.2.17 - pin-project
1.1.3 - rand
0.7.3 - rand
0.8.5 - rsa
0.7.2 - rust-embed
6.8.1 - scrypt
0.10.0 - sha2
0.10.8 - subtle
2.5.0 - x25519-dalek
1.1.1 - zeroize
1.7.0
- aes
age-core
0.9.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3d2e815ac879dc23c1139e720d21c6cd4d1276345c772587285d965a69b8f32depends onused byaho-corasick
1.1.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0depends onalejandra
3.0.0github.com/kamadorueda/alejandra↘ 3↖ 1sourcegit+https://github.com/kamadorueda/alejandra#e53c2c6c6c103dc3f848dbd9fbd93ee7c69c109fdepends onused byandroid_system_properties
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311depends onused byandroid-tzdata
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0used byansi-str
0.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1ddepends onused byansitok
0.2.0crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83anstream
0.6.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6depends onused byanstyle
1.0.4crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87anstyle-parse
0.2.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928cdepends onused byanstyle-query
1.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648depends onused byanstyle-wincon
3.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7depends onused byanyhow
1.0.77crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9arc-swap
1.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6used byasync-trait
0.1.75crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98depends onused byatty
0.2.14crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onused byautocfg
1.1.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabacktrace
0.3.69crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837depends onused bybase64
0.13.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8used bybase64
0.21.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9used bybcrypt-pbkdf
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3806a8db60cf56efee531616a34a6aaa9a114d6da2add861b0fa4a188881b2c7depends onused bybetter-command
0.1.0workspace↘ 6↖ 1bitflags
1.3.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718aused bybitflags
2.4.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07depends onblock-buffer
0.10.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71depends onused byblock-padding
0.3.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93depends onused byblowfish
0.9.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7depends onused bybumpalo
3.14.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aecused bybytecount
0.6.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205used bybyteorder
1.5.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64bbytes
1.5.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223used bycbc
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6depends onused bycbitset
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum29b6ad25ae296159fb0da12b970b2fe179b234584d7cd294c891e2bbb284466bdepends onused bycc
1.0.83crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0depends oncfg-if
1.0.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdchacha20
0.9.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818depends onused bychacha20poly1305
0.10.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35used bychrono
0.4.31crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38depends onused bycipher
0.4.4crates.io↘ 3↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3daddepends onclap
4.4.12crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056ddepends onclap_builder
4.4.12crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9depends onused byclap_derive
4.4.7crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442used byclap_lex
0.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1used bycolorchoice
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7used byconsole
0.15.7crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8used byconst-oid
0.9.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8used bycookie-factory
0.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126bused bycore-foundation-sys
0.8.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868fused bycountme
2.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum328b822bdcba4d4e402be8d9adb6eebf269f969f8eadef977a553ff3c4fbcb58used bycpufeatures
0.2.11crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0depends oncrypto-common
0.1.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3ctr
0.9.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835depends onused bycurve25519-dalek
3.2.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61used bydashmap
5.5.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856used byder
0.6.1crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4dedepends onderanged
0.3.11crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4depends onused bydigest
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends onused bydigest
0.10.7crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292dirs
5.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225depends onused bydirs-sys
0.4.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321cused bydisplaydoc
0.2.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175ddepends onused byeither
1.9.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07used byencode_unicode
0.3.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831fused byenv_logger
0.10.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbeceused byequivalent
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5used byerrno
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245depends onused byfastrand
2.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5used byfind-crate
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2depends onfleet
0.2.0workspace↘ 34↖ 0depends on- abort-on-drop
0.2.2 - age
0.9.2 - age-core
0.9.0 - anyhow
1.0.77 - async-trait
0.1.75 - base64
0.21.5 - better-command
0.1.0 - chrono
0.4.31 - clap
4.4.12 - futures
0.3.30 - hostname
0.3.1 - human-repr
1.1.0 - indicatif
0.17.7 - itertools
0.11.0 - nixlike
0.1.0 - once_cell
1.19.0 - openssh
0.10.2 - owo-colors
3.5.0 - peg
0.8.2 - r2d2
0.8.10 - regex
1.10.2 - serde
1.0.193 - serde_json
1.0.108 - shlex
1.2.0 - tabled
0.14.0 - tempfile
3.9.0 - time
0.3.31 - tokio
1.35.1 - tokio-util
0.7.10 - tracing
0.1.40 - tracing-indicatif
0.3.6 - tracing-subscriber
0.3.18 - unindent
0.2.3 - z85
3.0.5
- abort-on-drop
fleet-install-secrets
0.1.0workspace↘ 10↖ 0fluent
0.16.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7depends onfluent-bundle
0.15.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffddepends onused byfluent-langneg
0.13.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94depends onfluent-syntax
0.11.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78depends onfnv
1.0.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1used byfutures
0.3.30crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0depends onused byfutures-channel
0.3.30crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78depends onfutures-core
0.3.30crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1dfutures-executor
0.3.30crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01dused byfutures-io
0.3.30crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1futures-macro
0.3.30crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489acdepends onused byfutures-sink
0.3.30crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5futures-task
0.3.30crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004futures-util
0.3.30crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48depends ongeneric-array
0.14.7crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9adepends ongetrandom
0.1.16crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fceused bygetrandom
0.2.11crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070fghash
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40depends onused bygimli
0.28.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253used byhashbrown
0.9.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04used byhashbrown
0.14.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604used byheck
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8hermit-abi
0.1.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhermit-abi
0.3.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7hkdf
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7depends onused byhmac
0.12.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5edepends onhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhuman-repr
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf58b778a5761513caf593693f8951c97a5b610841e754788400f32102eefdff1used byhumantime
2.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4used byi18n-config
0.4.6crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640i18n-embed
0.13.9crates.io↘ 13↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92a86226a7a16632de6723449ee5fe70bac5af718bc642ee9ca2f0f6e14fa1fadepends onused byi18n-embed-fl
0.6.7crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd26a3d3569737dfaac7fc1c4078e6af07471c3060b8e570bcd83cdd5f4685395depends onused byi18n-embed-impl
0.8.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81093c4701672f59416582fe3145676126fd23ba5db910acad0793c1108aaa58used byiana-time-zone
0.1.59crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539depends onused byiana-time-zone-haiku
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269fdepends onused byindexmap
2.1.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1fdepends onused byindicatif
0.17.7crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25depends oninout
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5depends onused byinstant
0.1.12crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends onused byintl_pluralrules
7.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972depends onused byintl-memoizer
0.5.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66fdepends onio_tee
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304used byis_ci
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fbused byis-terminal
0.4.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455used byitertools
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57depends onused byitoa
1.0.10crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4cused byjs-sys
0.3.66crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229cadepends onlazy_static
1.4.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646depends onlibc
0.2.151crates.io↘ 0↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4used by- android_system_properties
0.1.5 - atty
0.2.14 - backtrace
0.3.69 - cc
1.0.83 - console
0.15.7 - cpufeatures
0.2.11 - dirs-sys
0.4.1 - errno
0.3.8 - getrandom
0.1.16 - getrandom
0.2.11 - hermit-abi
0.1.19 - hostname
0.3.1 - libmimalloc-sys
0.1.35 - libredox
0.0.1 - mio
0.8.10 - nix
0.27.1 - num_cpus
1.16.0 - openssh
0.10.2 - parking_lot_core
0.9.9 - rand
0.7.3 - rand
0.8.5 - rustix
0.38.28 - signal-hook-registry
1.4.1 - socket2
0.5.5 - tokio
1.35.1 - tokio-pipe
0.2.12
- android_system_properties
libm
0.2.8crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058libmimalloc-sys
0.1.35crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664depends onused bylibredox
0.0.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8used bylinked-hash-map
0.5.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770fused bylinux-raw-sys
0.4.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456used bylock_api
0.4.11crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45depends onlog
0.4.20crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8fmatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.1.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558depends onused bymemchr
2.7.1crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149memoffset
0.6.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onused bymimalloc
0.1.39crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9cdepends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7depends onused bymio
0.8.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09used bynix
0.27.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053depends onused bynixlike
0.1.0workspace↘ 8↖ 1nom
7.1.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4adepends onnu-ansi-term
0.46.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84depends onused bynum_cpus
1.16.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43depends onused bynum-bigint-dig
0.8.4crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151depends onused bynum-integer
0.1.45crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-iter
0.1.43crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252used bynum-traits
0.2.17crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267cdepends onnumber_prefix
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3used byobject
0.32.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441depends onused byonce_cell
1.19.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92opaque-debug
0.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssh
0.10.2crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8274f2bf1fc3785406a3ff07c92c15590c00e84efb883da77b671562ca9a6115depends onused byoption-ext
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7dused byoverload
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39used byowo-colors
3.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6fdepends onused bypapergrid
0.10.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8used byparking_lot
0.12.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onparking_lot_core
0.9.9crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008epbkdf2
0.11.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917depends onpeg
0.8.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61depends onused bypeg-macros
0.8.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90used bypeg-runtime
0.8.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922used bypin-project
1.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422depends onused bypin-project-internal
1.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405depends onused bypin-project-lite
0.2.13crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58pin-utils
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184used bypkcs1
0.4.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719depends onused bypkcs8
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4baused bypoly1305
0.8.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abfused bypolyval
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fbused byportable-atomic
1.6.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0used bypowerfmt
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391used byppv-lite86
0.2.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6deproc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro2
1.0.71crates.io↘ 1↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8depends onused by- async-trait
0.1.75 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.30 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.3 - peg-macros
0.8.2 - pin-project-internal
1.1.3 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - quote
1.0.33 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - syn
1.0.109 - syn
2.0.43 - tabled_derive
0.6.0 - thiserror-impl
1.0.53 - tokio-macros
2.2.0 - tracing-attributes
0.1.27 - vte_generate_state_changes
0.1.1 - wasm-bindgen-backend
0.2.89 - wasm-bindgen-macro-support
0.2.89 - zeroize_derive
1.4.2
- async-trait
quote
1.0.33crates.io↘ 1↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293caedepends onused by- async-trait
0.1.75 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.30 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.3 - peg-macros
0.8.2 - pin-project-internal
1.1.3 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - syn
1.0.109 - syn
2.0.43 - tabled_derive
0.6.0 - thiserror-impl
1.0.53 - tokio-macros
2.2.0 - tracing-attributes
0.1.27 - vte_generate_state_changes
0.1.1 - wasm-bindgen-backend
0.2.89 - wasm-bindgen-macro
0.2.89 - wasm-bindgen-macro-support
0.2.89 - zeroize_derive
1.4.2
- async-trait
r2d2
0.8.10crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93used byrand
0.7.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03used byrand
0.8.5crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404rand_chacha
0.2.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onused byrand_chacha
0.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onused byrand_core
0.5.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.4crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922cdepends onrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byredox_syscall
0.4.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aadepends onredox_users
0.4.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4used byregex
1.10.2crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343regex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-automata
0.4.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483fused byregex-syntax
0.6.29crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1used byregex-syntax
0.8.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9fremowt-agent
0.1.0workspace↘ 0↖ 0rnix
0.10.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8024a523e8836f1a5d051203dc00d833357fee94e351b51348dfaeca5364daa9depends onused byron
0.8.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94used byrowan
0.12.6crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1b36e449f3702f3b0c821411db1cbdf30fb451726a9456dce5dabcd44420043used byrsa
0.7.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099cdepends onused byrust-embed
6.8.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma36224c3276f8c4ebc8c20f158eca7ca4359c8db89991c4925132aaaf6702661used byrust-embed-impl
6.8.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1acused byrust-embed-utils
7.8.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d38ff6bf570dc3bb7100fce9f7b60c33fa71d80e88da3f2580df4ff2bdded74depends onrustc-demangle
0.1.23crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76used byrustc-hash
1.1.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustix
0.38.28crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316ryu
1.0.16crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4cused bysalsa20
0.10.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused byscheduled-thread-pool
0.2.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19depends onused byscopeguard
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49used byscrypt
0.10.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45dused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused byself_cell
0.10.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915ddepends onused byself_cell
1.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65baused byserde
1.0.193crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89depends onserde_derive
1.0.193crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3depends onserde_json
1.0.108crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526bdepends onserde_spanned
0.6.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1depends onused byserde-transcode
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum590c0e25c2a5bb6e85bf5c1bce768ceb86b316e7a01bdf07d2cb4ec2271990e2depends onused bysha2
0.10.8crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8depends onsharded-slab
0.1.7crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6depends onused byshell-escape
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184fused byshlex
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380used bysignal-hook-registry
1.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1depends onused bysignature
1.6.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7cdepends onused byslab
0.4.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67depends onused bysmallvec
1.11.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970smol_str
0.1.24crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9depends onused bysocket2
0.5.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9depends onused byspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byspki
0.6.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212bdepends onused bystrsim
0.10.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623subtle
2.5.0crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebcsupports-color
1.3.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6fdepends onused bysyn
1.0.109crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237syn
2.0.43crates.io↘ 3↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53used by- async-trait
0.1.75 - clap_derive
4.4.7 - displaydoc
0.2.4 - futures-macro
0.3.30 - i18n-embed-fl
0.6.7 - i18n-embed-impl
0.8.3 - pin-project-internal
1.1.3 - rust-embed-impl
6.8.1 - serde_derive
1.0.193 - thiserror-impl
1.0.53 - tokio-macros
2.2.0 - tracing-attributes
0.1.27 - wasm-bindgen-backend
0.2.89 - wasm-bindgen-macro-support
0.2.89 - zeroize_derive
1.4.2
- async-trait
tabled
0.14.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22used bytabled_derive
0.6.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4used bytempfile
3.9.0crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fatermcolor
1.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449depends onused byterminal_size
0.3.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7depends onused bytext-size
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233used bythiserror
1.0.53crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb2cd5904763bad08ad5513ddbb12cf2ae273ca53fa9f68e843e236ec6dfccc09depends onthiserror-impl
1.0.53crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3dcf4a824cce0aeacd6f38ae6f24234c8e80d68632338ebaa1443b5df9e29e19depends onused bythread_local
1.1.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152depends onused bytime
0.3.31crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583eused bytime-core
0.1.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3used bytime-macros
0.2.16crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43fdepends onused bytinystr
0.7.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ecedepends onused bytokio
1.35.1crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104depends ontokio-macros
2.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923bdepends onused bytokio-pipe
0.2.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf213a84bffbd61b8fa0ba8a044b4bbe35d471d0b518867181e82bd5c15542784depends onused bytokio-util
0.7.10crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15depends onused bytoml
0.5.11crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234depends onused bytoml
0.8.8crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35used bytoml_datetime
0.6.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1depends onused bytoml_edit
0.21.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03used bytracing
0.1.40crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364eftracing-attributes
0.1.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7depends onused bytracing-core
0.1.32crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54depends ontracing-indicatif
0.3.6crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum069580424efe11d97c3fef4197fa98c004fa26672cc71ad8770d224e23b1951dtracing-log
0.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3used bytracing-subscriber
0.3.18crates.io↘ 10↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8bdepends ontype-map
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46depends onused bytypenum
1.17.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825unic-langid
0.9.4crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516depends onunic-langid-impl
0.9.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6depends onused byunicase
2.7.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89depends onused byunicode-ident
1.0.12crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4bunicode-width
0.1.11crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85unindent
0.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ceused byuniversal-hash
0.5.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07eadepends onused byutf8parse
0.2.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370avaluable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byversion_check
0.9.4crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvt100
0.15.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274deused byvte
0.10.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983used byvte
0.11.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197used byvte_generate_state_changes
0.1.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ffdepends onwalkdir
2.4.0crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54eedepends onwasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423used bywasm-bindgen
0.2.89crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064edepends onwasm-bindgen-backend
0.2.89crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826depends onwasm-bindgen-macro
0.2.89crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2used bywasm-bindgen-macro-support
0.2.89crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283used bywinapi
0.3.9crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.6crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows_aarch64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8used bywindows_aarch64_gnullvm
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8used bywindows_aarch64_gnullvm
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015eaused bywindows_aarch64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43used bywindows_aarch64_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bcused bywindows_aarch64_msvc
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075efused bywindows_i686_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84fused bywindows_i686_gnu
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743eused bywindows_i686_gnu
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313used bywindows_i686_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060used bywindows_i686_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406used bywindows_i686_msvc
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9aused bywindows_x86_64_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36used bywindows_x86_64_gnu
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718eused bywindows_x86_64_gnu
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befdused bywindows_x86_64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3used bywindows_x86_64_gnullvm
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044ccused bywindows_x86_64_gnullvm
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949eused bywindows_x86_64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0used bywindows_x86_64_msvc
0.48.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538used bywindows_x86_64_msvc
0.52.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04used bywindows-core
0.52.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9depends onused bywindows-sys
0.45.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0depends onused bywindows-sys
0.48.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9depends onwindows-sys
0.52.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33ddepends onwindows-targets
0.42.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071depends onused bywindows-targets
0.48.5crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940cdepends onwindows-targets
0.52.0crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cddepends onwinnow
0.5.31crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641cdepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byz85
3.0.5crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fczeroize
1.7.0crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2ddepends onzeroize_derive
1.4.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69depends onused by
cmds/fleet/Cargo.tomldiffbeforeafterboth--- a/cmds/fleet/Cargo.toml
+++ b/cmds/fleet/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "fleet"
description = "NixOS configuration management"
-version = "0.1.0"
+version = "0.2.0"
authors = ["Yaroslav Bolyukin <iam@lach.pw>"]
edition = "2021"
cmds/fleet/src/better_nix_eval.rsdiffbeforeafterboth--- a/cmds/fleet/src/better_nix_eval.rs
+++ b/cmds/fleet/src/better_nix_eval.rs
@@ -9,7 +9,7 @@
use std::sync::{Arc, OnceLock};
use anyhow::{anyhow, bail, ensure, Context, Result};
-use better_command::{ClonableHandler, NixHandler, Handler, NoopHandler};
+use better_command::{ClonableHandler, Handler, NixHandler, NoopHandler};
use futures::StreamExt;
use itertools::Itertools;
use r2d2::{Pool, PooledConnection};
@@ -299,8 +299,11 @@
let mut fexpr = b"builtins.toJSON (".to_vec();
fexpr.extend_from_slice(expr.as_ref());
fexpr.push(b')');
- let v = self.execute_expression_string(fexpr).await?;
- Ok(serde_json::from_str(&v)?)
+ let v = self
+ .execute_expression_string(fexpr)
+ .await
+ .context("string expression")?;
+ serde_json::from_str(&v).context("json parse")
}
async fn execute_expression_wrapping(
&mut self,
@@ -450,15 +453,26 @@
#[macro_export]
macro_rules! nix_expr_inner {
- (Obj { $($ident:ident: $($val:tt)+),* $(,)? }) => {{
- use $crate::better_nix_eval::NixExprBuilder;
+ //(@munch_object FIXME: value should be arbitrary nix_expr_inner input... Time to write proc-macro?
+ (@obj($o:ident) $field:ident, $($tt:tt)*) => {{
+ $o.obj_key(
+ NixExprBuilder::string(stringify!($field)),
+ NixExprBuilder::field($field),
+ );
+ nix_expr_inner!(@obj($o) $($tt)*);
+ }};
+ (@obj($o:ident) $field:ident: $v:block, $($tt:tt)*) => {{
+ $o.obj_key(
+ NixExprBuilder::string(stringify!($field)),
+ NixExprBuilder::serialized(&$v),
+ );
+ nix_expr_inner!(@obj($o) $($tt)*);
+ }};
+ (@obj($o:ident)) => {{}};
+ (Obj { $($tt:tt)* }) => {{
+ use $crate::{better_nix_eval::NixExprBuilder, nix_expr_inner};
let mut out = NixExprBuilder::object();
- $(
- out.obj_key(
- NixExprBuilder::string(stringify!($ident)),
- $crate::nix_expr_inner!($($val)+),
- );
- )*
+ nix_expr_inner!(@obj(out) $($tt)*);
out.end_obj();
out
}};
@@ -522,6 +536,9 @@
$o.push(Index::ExprApply($crate::nix_expr_inner!($($var)+)));
nix_go!(@o($o) $($tt)*);
};
+ (@o($o:ident) | $($var:tt)*) => {
+ $o.push(Index::Pipe($crate::nix_expr_inner!($($var)+)));
+ };
(@o($o:ident)) => {};
($field:ident $($tt:tt)+) => {{
use $crate::{nix_go, better_nix_eval::Index};
@@ -545,6 +562,7 @@
Apply(String),
Expr(NixExprBuilder),
ExprApply(NixExprBuilder),
+ Pipe(NixExprBuilder),
}
impl Index {
pub fn var(v: impl AsRef<str>) -> Self {
@@ -582,6 +600,9 @@
Index::ExprApply(e) => {
write!(f, "<apply>({})", e.out)
}
+ Index::Pipe(e) => {
+ write!(f, "<map>({})", e.out)
+ }
}
}
}
@@ -604,9 +625,9 @@
session: NixSession,
value: Option<u32>,
}
-fn context(full_path: Option<&[Index]>, query: &str) -> String {
+fn context(op: &str, full_path: Option<&[Index]>, query: &str) -> String {
if let Some(full_path) = &full_path {
- format!("full path: {}", PathDisplay(full_path))
+ format!("on {op}, full path: {}", PathDisplay(full_path))
} else {
format!("query: {query:?}")
}
@@ -628,7 +649,7 @@
.await
.execute_assign(query)
.await
- .with_context(|| context(None, query))?;
+ .with_context(|| context("new root", None, query))?;
Ok(Self(Arc::new(FieldInner {
full_path: None,
session,
@@ -686,6 +707,12 @@
query.push_str(&index);
query = format!("({query})");
}
+ Index::Pipe(v) => {
+ let index = Field::new(self.0.session.clone(), &v.out).await?;
+ used_fields.push(index.clone());
+ let index = format!("sess_field_{}", index.0.value.expect("value"));
+ query = format!("({index} {query})");
+ }
}
}
@@ -720,7 +747,7 @@
.await
.execute_expression_to_json(&query)
.await
- .with_context(|| context(self.0.full_path.as_deref(), &query))
+ .with_context(|| context("as_json", self.0.full_path.as_deref(), &query))
}
pub async fn has_field(&self, name: &str) -> Result<bool> {
let id = self.0.value.expect("can't list root fields");
@@ -733,7 +760,7 @@
.await
.execute_expression_to_json(&query)
.await
- .with_context(|| context(self.0.full_path.as_deref(), &query))
+ .with_context(|| context("has_field", self.0.full_path.as_deref(), &query))
}
pub async fn list_fields(&self) -> Result<Vec<String>> {
let id = self.0.value.expect("can't list root fields");
@@ -745,7 +772,7 @@
.await
.execute_expression_to_json(&query)
.await
- .with_context(|| context(self.0.full_path.as_deref(), &query))
+ .with_context(|| context("list field", self.0.full_path.as_deref(), &query))
}
pub async fn type_of(&self) -> Result<String> {
let id = self.0.value.expect("can't list root fields");
@@ -757,7 +784,11 @@
.await
.execute_expression_to_json(&query)
.await
- .with_context(|| context(self.0.full_path.as_deref(), &query))
+ .with_context(|| context("type_of", self.0.full_path.as_deref(), &query))
+ }
+ pub async fn import(&self) -> Result<Self> {
+ let import = Self::new(self.0.session.clone(), "import").await?;
+ Ok(nix_go!(self | import))
}
pub async fn build(&self) -> Result<HashMap<String, PathBuf>> {
let id = self.0.value.expect("can't use build on not-value");
@@ -773,7 +804,7 @@
ensure!(
!vid.is_empty(),
"build failed: {}",
- context(self.0.full_path.as_deref(), &query),
+ context("build", self.0.full_path.as_deref(), &query),
);
let Some(vid) = vid.strip_prefix("This derivation produced the following outputs:\n")
else {
cmds/fleet/src/cmds/build_systems.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/build_systems.rs
+++ b/cmds/fleet/src/cmds/build_systems.rs
@@ -53,7 +53,7 @@
fn build_attr(&self) -> String {
match self {
PackageAction::SdImage => "sdImage".to_owned(),
- PackageAction::InstallationCd => "installationCd".to_owned(),
+ PackageAction::InstallationCd => "isoImage".to_owned(),
}
}
}
@@ -178,7 +178,7 @@
if !build.disable_rollback {
let _span = info_span!("preparing").entered();
info!("preparing for rollback");
- let generation = get_current_generation(&host).await?;
+ let generation = get_current_generation(host).await?;
info!(
"rollback target would be {} {}",
generation.id, generation.datetime
@@ -234,7 +234,7 @@
let mut switch_script = built.clone();
switch_script.push("bin");
switch_script.push("switch-to-configuration");
- let mut cmd = host.cmd(switch_script).await?;
+ let mut cmd = host.cmd(switch_script).in_current_span().await?;
cmd.arg(action.name());
if let Err(e) = cmd.sudo().run().in_current_span().await {
error!("failed to activate: {e}");
@@ -285,11 +285,9 @@
info!("building");
let host = config.host(&host).await?;
let action = Action::from(self.subcommand.clone());
- let fleet_field = &config.fleet_field;
+ let fleet_config = &config.config_field;
let drv = nix_go!(
- fleet_field.buildSystems(Obj {
- localSystem: { config.local_system.clone() }
- })[{ action.build_attr() }][{ &host.name }]
+ fleet_config.hosts[{ &host.name }].nixosSystem.config.system.build[{ action.build_attr() }]
);
let outputs = drv.build().await.map_err(|e| {
if action.build_attr() == "sdImage" {
cmds/fleet/src/cmds/info.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/info.rs
+++ b/cmds/fleet/src/cmds/info.rs
@@ -37,9 +37,9 @@
InfoCmd::ListHosts { ref tagged } => {
'host: for host in config.list_hosts().await? {
if !tagged.is_empty() {
- let fleet_field = &config.fleet_field;
+ let config = &config.config_unchecked_field;
let tags: Vec<String> =
- nix_go_json!(fleet_field.configuredSystems[{ host.name }].config.tags);
+ nix_go_json!(config.hosts[{ host.name }].nixosSystem.config.tags);
for tag in tagged {
if !tags.contains(tag) {
continue 'host;
cmds/fleet/src/cmds/secrets/mod.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/secrets/mod.rs
+++ b/cmds/fleet/src/cmds/secrets/mod.rs
@@ -10,14 +10,15 @@
use futures::StreamExt;
use itertools::Itertools;
use owo_colors::OwoColorize;
+use serde::Deserialize;
use std::{
- collections::HashSet,
+ collections::{BTreeSet, HashSet},
io::{self, Cursor, Read},
path::PathBuf,
};
use tabled::{Table, Tabled};
use tokio::fs::read_to_string;
-use tracing::{info, info_span, warn};
+use tracing::{error, info, info_span, warn, Instrument};
#[derive(Parser)]
pub enum Secret {
@@ -92,77 +93,182 @@
List {},
}
-async fn generate_shared(
+#[tracing::instrument(skip(config, secret, field, prefer_identities))]
+async fn update_owner_set(
+ secret_name: &str,
config: &Config,
- display_name: &str,
- secret: Field,
+ mut secret: FleetSharedSecret,
+ field: Field,
+ updated_set: &[String],
+ prefer_identities: &[String],
) -> Result<FleetSharedSecret> {
- Ok(if secret.has_field("generateImpure").await? {
- let config_field = &config.config_unchecked_field;
- let generate = nix_go!(secret.generateImpure);
- let owners: Vec<String> = nix_go_json!(secret.expectedOwners);
+ let original_set = secret.owners.clone();
- let on: String = nix_go_json!(generate.on);
- let call_package = nix_go!(
- config_field.buildableSystems(Obj {
- localSystem: { config.local_system.clone() }
- })[{ on }]
- .config
- .nixpkgs
- .resolvedPkgs
- .callPackage
- );
+ let set = original_set.iter().collect::<BTreeSet<_>>();
+ let expected_set = updated_set.iter().collect::<BTreeSet<_>>();
- let host = config.host(&on).await?;
+ if set == expected_set {
+ info!("no need to update owner list, it is already correct");
+ return Ok(secret);
+ }
- let generator = nix_go!(call_package(generate.generator)(Obj {}));
- let generator = generator.build().await?;
- let generator = generator
- .get("out")
- .ok_or_else(|| anyhow!("missing generateImpure out"))?;
- let generator = host.remote_derivation(generator).await?;
+ let should_regenerate = if set.difference(&expected_set).next().is_some() {
+ // TODO: Remove this warning for revokable secrets.
+ warn!("host was removed from secret owners, but until this host rebuild, the secret will still be stored on it.");
+ nix_go_json!(field.regenerateOnOwnerRemoved)
+ } else if expected_set.difference(&set).next().is_some() {
+ nix_go_json!(field.regenerateOnOwnerAdded)
+ } else {
+ false
+ };
+
+ if should_regenerate {
+ info!("secret is owner-dependent, will regenerate");
+ let generated = generate_shared(config, secret_name, field, updated_set.to_vec()).await?;
+ Ok(generated)
+ } else {
+ let identity_holder = if !prefer_identities.is_empty() {
+ prefer_identities
+ .iter()
+ .find(|i| original_set.iter().any(|s| s == *i))
+ } else {
+ secret.owners.first()
+ };
+ let Some(identity_holder) = identity_holder else {
+ bail!("no available holder found");
+ };
- let mut recipients = String::new();
- for owner in &owners {
- let key = config.key(owner).await?;
- recipients.push_str(&format!("-r \"{key}\" "));
+ if let Some(data) = secret.secret.secret {
+ let host = config.host(identity_holder).await?;
+ let encrypted = host.reencrypt(data, updated_set.to_vec()).await?;
+ secret.secret.secret = Some(encrypted);
}
- recipients.push_str("-e");
- let out = host.mktemp_dir().await?;
+ secret.owners = updated_set.to_vec();
+ Ok(secret)
+ }
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+enum GeneratorKind {
+ Impure,
+}
+
+async fn generate_impure(
+ config: &Config,
+ _display_name: &str,
+ secret: Field,
+ default_generator: Field,
+ owners: &[String],
+) -> Result<FleetSecret> {
+ let config_field = &config.config_unchecked_field;
+ let generator = nix_go!(secret.generator);
+
+ let on: String = nix_go_json!(default_generator.impureOn);
+ let call_package = nix_go!(
+ config_field.buildableSystems(Obj {
+ localSystem: { config.local_system.clone() },
+ })[{ on }]
+ .config
+ .nixpkgs
+ .resolvedPkgs
+ .callPackage
+ );
+
+ let host = config.host(&on).await?;
+
+ let generator = nix_go!(call_package(generator)(Obj {}));
+ let generator = generator.build().await?;
+ let generator = generator
+ .get("out")
+ .ok_or_else(|| anyhow!("missing generateImpure out"))?;
+ let generator = host.remote_derivation(generator).await?;
+
+ let mut recipients = String::new();
+ for owner in owners {
+ let key = config.key(owner).await?;
+ recipients.push_str(&format!("-r \"{key}\" "));
+ }
+ recipients.push_str("-e");
- let mut gen = host.cmd(generator).await?;
- gen.env("rageArgs", recipients).env("out", &out);
- gen.run().await?;
+ let out = host.mktemp_dir().await?;
- {
- let marker = host.read_file_text(format!("{out}/marker")).await?;
- ensure!(marker == "SUCCESS", "generation not succeeded");
- }
+ let mut gen = host.cmd(generator).await?;
+ gen.env("rageArgs", recipients).env("out", &out);
+ gen.run().await.context("impure generator")?;
- let public = host.read_file_text(format!("{out}/public")).await.ok();
- let secret = host.read_file_bin(format!("{out}/secret")).await.ok();
- if let Some(secret) = &secret {
- ensure!(
- age::Decryptor::new(Cursor::new(&secret)).is_ok(),
- "builder produced non-encrypted value as secret, this is highly insecure"
- );
+ {
+ let marker = host.read_file_text(format!("{out}/marker")).await?;
+ ensure!(marker == "SUCCESS", "generation not succeeded");
+ }
+
+ let public = host.read_file_text(format!("{out}/public")).await.ok();
+ let secret = host.read_file_bin(format!("{out}/secret")).await.ok();
+ if let Some(secret) = &secret {
+ ensure!(
+ age::Decryptor::new(Cursor::new(&secret)).is_ok(),
+ "builder produced non-encrypted value as secret, this is highly insecure, and not allowed."
+ );
+ }
+
+ let created_at = host.read_file_value(format!("{out}/created_at")).await?;
+ let expires_at = host.read_file_value(format!("{out}/expires_at")).await.ok();
+
+ Ok(FleetSecret {
+ created_at,
+ expires_at,
+ public,
+ secret: secret.map(SecretData),
+ })
+}
+async fn generate(
+ config: &Config,
+ display_name: &str,
+ secret: Field,
+ owners: &[String],
+) -> Result<FleetSecret> {
+ let generator = nix_go!(secret.generator);
+ // Can't properly check on nix module system level
+ {
+ let gen_ty = generator.type_of().await?;
+ if gen_ty == "null" {
+ bail!("secret has no generator defined, can't automatically generate it.");
}
+ if gen_ty != "lambda" {
+ bail!("generator should be lambda, got {gen_ty}");
+ }
+ }
+ let default_pkgs = &config.default_pkgs;
+ let default_call_package = nix_go!(default_pkgs.callPackage);
+ // Generators provide additional information in passthru, to access
+ // passthru we should call generator, but information about where this generator is supposed to build
+ // is located in passthru... Thus evaluating generator on host.
+ //
+ // Maybe it is also possible to do some magic with __functor?
+ //
+ // I don't want to make modules always responsible for additional secret data anyway,
+ // so it should be in derivation, and not in the secret data itself.
+ let default_generator = nix_go!(default_call_package(generator)(Obj {}));
- let created_at = host.read_file_value(format!("{out}/created_at")).await?;
- let expires_at = host.read_file_value(format!("{out}/expires_at")).await.ok();
+ let kind: GeneratorKind = nix_go_json!(default_generator.generatorKind);
- FleetSharedSecret {
- owners,
- secret: FleetSecret {
- created_at,
- expires_at,
- public,
- secret: secret.map(SecretData),
- },
+ match kind {
+ GeneratorKind::Impure => {
+ generate_impure(config, display_name, secret, default_generator, owners).await
}
- } else {
- bail!("no generator defined for {display_name}")
+ }
+}
+async fn generate_shared(
+ config: &Config,
+ display_name: &str,
+ secret: Field,
+ expected_owners: Vec<String>,
+) -> Result<FleetSharedSecret> {
+ // let owners: Vec<String> = nix_go_json!(secret.expectedOwners);
+ Ok(FleetSharedSecret {
+ secret: generate(config, display_name, secret, &expected_owners).await?,
+ owners: expected_owners,
})
}
@@ -270,9 +376,7 @@
machines = shared.owners;
}
- let recipients = config
- .recipients(&machines.iter().map(String::as_str).collect_vec())
- .await?;
+ let recipients = config.recipients(machines.clone()).await?;
let secret = {
let mut input = vec![];
@@ -362,7 +466,7 @@
remove_machines,
prefer_identities,
} => {
- let mut secret = config.shared_secret(&name)?;
+ let secret = config.shared_secret(&name)?;
if secret.secret.secret.is_none() {
bail!("no secret");
}
@@ -378,61 +482,84 @@
if target_machines.is_empty() {
info!("no machines left for secret, removing it");
config.remove_shared(&name);
- return Ok(());
- }
-
- if target_machines == initial_machines {
- warn!("secret owners are already correct");
return Ok(());
}
- let identity_holder = if !prefer_identities.is_empty() {
- prefer_identities
- .iter()
- .find(|i| initial_machines.iter().any(|s| s == *i))
- } else {
- secret.owners.first()
- };
- let Some(identity_holder) = identity_holder else {
- bail!("no available holder found");
- };
- let target_recipients = futures::stream::iter(&target_machines)
- .then(|m| async { config.key(m).await })
- .collect::<Vec<_>>()
- .await;
- let target_recipients =
- target_recipients.into_iter().collect::<Result<Vec<_>>>()?;
+ let config_field = &config.config_unchecked_field;
+ let config_field = nix_go!(config_field.configUnchecked);
+ let field = nix_go!(config_field.sharedSecrets[{ name }]);
- if let Some(data) = secret.secret.secret {
- let host = config.host(&identity_holder).await?;
- let encrypted = host.reencrypt(data, target_recipients).await?;
- secret.secret.secret = Some(encrypted);
- }
-
- secret.owners = target_machines;
- config.replace_shared(name, secret);
+ let updated = update_owner_set(
+ &name,
+ config,
+ secret,
+ field,
+ &target_machines,
+ &prefer_identities,
+ )
+ .await?;
+ config.replace_shared(name, updated);
}
Secret::Regenerate { prefer_identities } => {
+ info!("checking for secrets to regenerate");
{
+ let _span = info_span!("shared").entered();
let expected_shared_set = config
.list_configured_shared()
.await?
.into_iter()
.collect::<HashSet<_>>();
let shared_set = config.list_shared().into_iter().collect::<HashSet<_>>();
- for removed in expected_shared_set.difference(&shared_set) {
- info!("generating secret: {removed}");
+ for missing in expected_shared_set.difference(&shared_set) {
let config_field = &config.config_unchecked_field;
let config_field = nix_go!(config_field.configUnchecked);
- let secret = nix_go!(config_field.sharedSecrets[{ removed }]);
- let shared = generate_shared(config, removed, secret).await?;
- config.replace_shared(removed.to_string(), shared)
+ let secret = nix_go!(config_field.sharedSecrets[{ missing }]);
+ let expected_owners: Option<Vec<String>> =
+ nix_go_json!(secret.expectedOwners);
+ let Some(expected_owners) = expected_owners else {
+ // TODO: Might still need to regenerate
+ continue;
+ };
+ info!("generating secret: {missing}");
+ let shared = generate_shared(config, missing, secret, expected_owners)
+ .in_current_span()
+ .await?;
+ config.replace_shared(missing.to_string(), shared)
+ }
+ }
+ for host in config.list_hosts().await? {
+ let _span = info_span!("host", host = host.name).entered();
+ let expected_set = host
+ .list_configured_secrets()
+ .in_current_span()
+ .await?
+ .into_iter()
+ .collect::<HashSet<_>>();
+ let stored_set = config
+ .list_secrets(&host.name)
+ .into_iter()
+ .collect::<HashSet<_>>();
+ for missing in expected_set.difference(&stored_set) {
+ info!("generating secret: {missing}");
+ let secret = host.secret_field(missing).in_current_span().await?;
+ let generated =
+ match generate(config, missing, secret, &[host.name.clone()])
+ .in_current_span()
+ .await
+ {
+ Ok(v) => v,
+ Err(e) => {
+ error!("{e}");
+ continue;
+ }
+ };
+ config.insert_secret(&host.name, missing.to_string(), generated)
}
}
let mut to_remove = Vec::new();
for name in &config.list_shared() {
info!("updating secret: {name}");
- let mut data = config.shared_secret(name)?;
+ let data = config.shared_secret(name)?;
let config_field = &config.config_unchecked_field;
let config_field = nix_go!(config_field.configUnchecked);
let expected_owners: Vec<String> =
@@ -442,55 +569,20 @@
to_remove.push(name.to_string());
continue;
}
- let set = data.owners.iter().collect::<HashSet<_>>();
- let expected_set = expected_owners.iter().collect::<HashSet<_>>();
- let should_remove = set.difference(&expected_set).next().is_some();
- if set == expected_set {
- info!("secret data is ok");
- continue;
- }
let secret = nix_go!(config_field.sharedSecrets[{ name }]);
- let owner_dependent: bool = nix_go_json!(secret.ownerDependent);
- let regenerate_on_remove: bool = nix_go_json!(secret.regenerateOnOwnerRemoved);
- #[allow(clippy::nonminimal_bool)]
- if !owner_dependent && !(should_remove && regenerate_on_remove) {
- warn!("reencrypting secret '{name}' for new owner set");
- // TODO: force regeneration
- if should_remove {
- warn!("secret will not be regenerated for removed machines, and until host rebuild, they will still possess the ability to decode secret");
- }
-
- let identity_holder = if !prefer_identities.is_empty() {
- prefer_identities
- .iter()
- .find(|i| data.owners.iter().any(|s| s == *i))
- } else {
- data.owners.first()
- };
- let Some(identity_holder) = identity_holder else {
- bail!("no available holder found");
- };
-
- let target_recipients = futures::stream::iter(&expected_owners)
- .then(|m| async { config.key(m).await })
- .collect::<Vec<_>>()
- .await;
- let target_recipients =
- target_recipients.into_iter().collect::<Result<Vec<_>>>()?;
-
- if let Some(secret) = data.secret.secret {
- let host = config.host(identity_holder).await?;
- let encrypted = host.reencrypt(secret, target_recipients).await?;
-
- data.secret.secret = Some(encrypted);
- }
- data.owners = expected_owners;
- config.replace_shared(name.to_owned(), data);
- } else {
- let shared = generate_shared(config, name, secret).await?;
- config.replace_shared(name.to_owned(), shared)
- }
+ config.replace_shared(
+ name.to_owned(),
+ update_owner_set(
+ &name,
+ config,
+ data,
+ secret,
+ &expected_owners,
+ &prefer_identities,
+ )
+ .await?,
+ );
}
for k in to_remove {
config.remove_shared(&k);
cmds/fleet/src/command.rsdiffbeforeafterboth--- a/cmds/fleet/src/command.rs
+++ b/cmds/fleet/src/command.rs
@@ -1,5 +1,3 @@
-use std::thread::sleep;
-use std::time::Duration;
use std::{ffi::OsStr, pin, process::Stdio, sync::Arc, task::Poll};
use anyhow::{anyhow, Result};
@@ -9,7 +7,7 @@
use openssh::{OverSsh, OwningCommand, Session};
use tokio::{io::AsyncRead, process::Command, select};
use tokio_util::codec::{BytesCodec, FramedRead, LinesCodec};
-use tracing::{info, debug};
+use tracing::debug;
fn escape_bash(input: &str, out: &mut String) {
const TO_ESCAPE: &str = "$ !\"#&'()*,;<>?[\\]^`{|}";
@@ -162,6 +160,10 @@
self
}
pub fn sudo(mut self) -> Self {
+ // TODO: Multiple escalation strategies.
+ // Maybe escalation should be moved to ConfigHost, to also support cases
+ // when there is no sudo on remote machine, but instead we can reconnect
+ // as root using ssh?
if std::env::var_os("NO_SUDO").is_some() {
let mut out = Self::new("su");
out.ssh_session = self.ssh_session.take();
@@ -267,7 +269,7 @@
) -> Result<Option<Vec<u8>>> {
cmd.stderr(Stdio::piped());
cmd.stdout(Stdio::piped());
- debug!("running command {cmd:?} on local");
+ debug!("running command {str:?} on local");
let mut child = cmd.spawn()?;
let mut stderr = child.stderr.take().unwrap();
let stdout = child.stdout.take().unwrap();
@@ -328,7 +330,7 @@
err_handler: &mut dyn Handler,
mut out_handler: Option<&mut dyn Handler>,
) -> Result<Option<Vec<u8>>> {
- debug!("running command {cmd:?} over ssh");
+ debug!("running command {str:?} over ssh");
cmd.stderr(openssh::Stdio::piped());
cmd.stdout(openssh::Stdio::piped());
let mut child = cmd.spawn().await?;
cmds/fleet/src/host.rsdiffbeforeafterboth--- a/cmds/fleet/src/host.rs
+++ b/cmds/fleet/src/host.rs
@@ -14,6 +14,7 @@
use openssh::SessionBuilder;
use serde::de::DeserializeOwned;
use tempfile::NamedTempFile;
+use tracing::instrument;
use crate::{
better_nix_eval::{Field, NixSessionPool},
@@ -28,12 +29,13 @@
pub opts: FleetOpts,
pub data: Mutex<FleetData>,
pub nix_args: Vec<OsString>,
- /// fleetConfigurations.<name>.<localSystem>
- pub fleet_field: Field,
- /// fleet_config.configUnchecked
+ /// fleet_config.config
pub config_field: Field,
- /// fleet_config.unchecked
+ /// fleet_config.unchecked.config
pub config_unchecked_field: Field,
+
+ /// import nixpkgs {system = local};
+ pub default_pkgs: Field,
}
#[derive(Clone)]
@@ -48,9 +50,12 @@
}
pub struct ConfigHost {
+ config: Config,
pub name: String,
pub local: bool,
pub session: OnceLock<Arc<openssh::Session>>,
+
+ pub nixos_config: Field,
}
impl ConfigHost {
async fn open_session(&self) -> Result<Arc<openssh::Session>> {
@@ -64,7 +69,7 @@
let session = session
.connect(&self.name)
.await
- .map_err(|e| anyhow!("ssh error: {e}"))?;
+ .map_err(|e| anyhow!("ssh error while connecting to {}: {e}", self.name))?;
let session = Arc::new(session);
self.session.set(session.clone()).expect("TOCTOU happened");
Ok(session)
@@ -119,7 +124,8 @@
let mut cmd = self.cmd("fleet-install-secrets").await?;
cmd.arg("reencrypt").eqarg("--secret", data.encode_z85());
for target in targets {
- cmd.eqarg("--targets", target);
+ let key = self.config.key(&target).await?;
+ cmd.eqarg("--targets", key);
}
let encoded = cmd
.sudo()
@@ -139,7 +145,7 @@
.arg("--substitute-on-destination")
.comparg("--to", format!("ssh-ng://{}", self.name))
.arg(path);
- nix.run_nix().await?;
+ nix.run_nix().await.context("nix copy")?;
Ok(path.to_owned())
}
pub async fn systemctl_stop(&self, name: &str) -> Result<()> {
@@ -161,6 +167,25 @@
}
cmd.run().await
}
+
+ pub async fn list_configured_secrets(&self) -> Result<Vec<String>> {
+ let nixos = &self.nixos_config;
+ let secrets = nix_go!(nixos.secrets);
+ let mut out = Vec::new();
+ for name in secrets.list_fields().await? {
+ let secret = nix_go!(secrets[{ name }]);
+ let is_shared: bool = nix_go_json!(secret.shared);
+ if is_shared {
+ continue;
+ }
+ out.push(name);
+ }
+ Ok(out)
+ }
+ pub async fn secret_field(&self, name: &str) -> Result<Field> {
+ let nixos = &self.nixos_config;
+ Ok(nix_go!(nixos.secrets[{ name }]))
+ }
}
impl Config {
@@ -178,28 +203,28 @@
}
pub async fn host(&self, name: &str) -> Result<ConfigHost> {
+ let config = &self.config_unchecked_field;
+ let nixos_config = nix_go!(config.configuredSystems[{ name }].config);
Ok(ConfigHost {
+ config: self.clone(),
name: name.to_owned(),
local: self.is_local(name),
session: OnceLock::new(),
+ nixos_config,
})
}
pub async fn list_hosts(&self) -> Result<Vec<ConfigHost>> {
- let fleet_field = &self.fleet_field;
- let names = nix_go!(fleet_field.configuredHosts).list_fields().await?;
+ let config = &self.config_unchecked_field;
+ let names = nix_go!(config.hosts).list_fields().await?;
let mut out = vec![];
for name in names {
- out.push(ConfigHost {
- local: self.is_local(&name),
- name,
- session: OnceLock::new(),
- })
+ out.push(self.host(&name).await?);
}
Ok(out)
}
pub async fn system_config(&self, host: &str) -> Result<Field> {
- let fleet_field = &self.fleet_field;
- Ok(nix_go!(fleet_field.configuredSystems[{ host }].config))
+ let fleet_field = &self.config_unchecked_field;
+ Ok(nix_go!(fleet_field.hosts[{ host }].nixosSystem.config))
}
pub(super) fn data(&self) -> MutexGuard<FleetData> {
@@ -233,6 +258,14 @@
data.shared_secrets.remove(secret);
}
+ pub fn list_secrets(&self, host: &str) -> Vec<String> {
+ let data = self.data();
+ let Some(secrets) = data.host_secrets.get(host) else {
+ return Vec::new();
+ };
+ secrets.keys().cloned().collect()
+ }
+
pub fn has_secret(&self, host: &str, secret: &str) -> bool {
let data = self.data();
let Some(host_secrets) = data.host_secrets.get(host) else {
@@ -319,18 +352,27 @@
let pool = NixSessionPool::new(directory.as_os_str().to_owned(), nix_args.clone()).await?;
let root_field = pool.get().await?;
+ let builtins_field = Field::field(root_field.clone(), "builtins").await?;
if self.local_system == "detect" {
- let builtins_field = Field::field(root_field.clone(), "builtins").await?;
self.local_system = nix_go_json!(builtins_field.currentSystem);
}
let local_system = self.local_system.clone();
let fleet_root = Field::field(root_field, "fleetConfigurations").await?;
-
let fleet_field = nix_go!(fleet_root.default);
- let config_field = nix_go!(fleet_field.configUnchecked);
- let config_unchecked_field = nix_go!(fleet_field.unchecked);
+ let config_field = nix_go!(fleet_field.config);
+ let config_unchecked_field = nix_go!(fleet_field.unchecked.config);
+
+ let import = nix_go!(builtins_field.import);
+ let overlays = nix_go!(fleet_field.overlays);
+ let nixpkgs = nix_go!(fleet_field.nixpkgs | import);
+
+ let default_pkgs = nix_go!(nixpkgs(Obj {
+ overlays,
+ system: { self.local_system.clone() },
+ }));
+
let mut fleet_data_path = directory.clone();
fleet_data_path.push("fleet.nix");
let bytes = std::fs::read_to_string(fleet_data_path)?;
@@ -342,9 +384,9 @@
data,
local_system,
nix_args,
- fleet_field,
config_field,
config_unchecked_field,
+ default_pkgs,
})))
}
}
cmds/fleet/src/keys.rsdiffbeforeafterboth--- a/cmds/fleet/src/keys.rs
+++ b/cmds/fleet/src/keys.rs
@@ -43,9 +43,9 @@
age::ssh::Recipient::from_str(&key).map_err(|e| anyhow!("parse recipient error: {:?}", e))
}
- pub async fn recipients(&self, hosts: &[&str]) -> Result<Vec<impl Recipient>> {
+ pub async fn recipients(&self, hosts: Vec<String>) -> Result<Vec<impl Recipient>> {
futures::stream::iter(hosts.iter())
- .then(|m| self.recipient(m))
+ .then(|m| self.recipient(m.as_ref()))
.try_collect::<Vec<_>>()
.await
}
cmds/fleet/src/main.rsdiffbeforeafterboth--- a/cmds/fleet/src/main.rs
+++ b/cmds/fleet/src/main.rs
@@ -12,6 +12,8 @@
mod fleetdata;
use std::ffi::OsString;
+use std::io::{stderr, stdout, Write};
+use std::process::exit;
use std::time::Duration;
use anyhow::{bail, Result};
@@ -24,7 +26,7 @@
use host::{Config, FleetOpts};
use human_repr::HumanCount;
use indicatif::{ProgressState, ProgressStyle};
-use tracing::info;
+use tracing::{error, info};
use tracing::{info_span, Instrument};
use tracing_indicatif::IndicatifLayer;
use tracing_subscriber::{prelude::*, EnvFilter};
@@ -81,7 +83,7 @@
}
#[derive(Parser)]
-#[clap(version = "1.0", author)]
+#[clap(version, author)]
struct RootOpts {
#[clap(flatten)]
fleet_opts: FleetOpts,
@@ -136,13 +138,13 @@
),
);
- let filter = EnvFilter::from_default_env();
+ let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.without_time()
- .with_target(false)
+ .with_target(true)
.with_writer(indicatif_layer.get_stderr_writer())
.with_filter(filter), // .withou,
)
@@ -151,8 +153,15 @@
}
#[tokio::main]
-async fn main() -> Result<()> {
+async fn main() {
setup_logging();
+ if let Err(e) = main_real().await {
+ error!("{e:#}");
+ exit(1);
+ }
+}
+
+async fn main_real() -> Result<()> {
let _ = better_nix_eval::TOKIO_RUNTIME.set(tokio::runtime::Handle::current());
let nix_args = std::env::var_os("NIX_ARGS")
flake.lockdiffbeforeafterboth--- a/flake.lock
+++ b/flake.lock
@@ -38,11 +38,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1703705939,
- "narHash": "sha256-9s2Ep3NyRDj9HUgfv2TQUwQEanRUAmeXkvKIr/o1XbY=",
+ "lastModified": 1703974965,
+ "narHash": "sha256-dvZjLuAcLnv25bqStTL2ZICC5YSs8aynF5amRM+I6UM=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "1ada32da4ba24d7310653c9ac54888bee463f455",
+ "rev": "9f434bd436e2bb5615827469ed651e30c26daada",
"type": "github"
},
"original": {
@@ -67,11 +67,11 @@
]
},
"locked": {
- "lastModified": 1703643208,
- "narHash": "sha256-UL4KO8JxnD5rOycwHqBAf84lExF1/VnYMDC7b/wpPDU=",
+ "lastModified": 1703902408,
+ "narHash": "sha256-qXdWvu+tlgNjeoz8yQMRKSom6QyRROfgpmeOhwbujqw=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "ce117f3e0de8262be8cd324ee6357775228687cf",
+ "rev": "319f57cd2c34348c55970a4bf2b35afe82088681",
"type": "github"
},
"original": {
flake.nixdiffbeforeafterboth--- a/flake.nix
+++ b/flake.nix
@@ -29,7 +29,7 @@
llvmPkgs = pkgs.buildPackages.llvmPackages_11;
rust =
(pkgs.rustChannelOf {
- date = "2023-12-26";
+ date = "2023-12-29";
channel = "nightly";
})
.default
lib/default.nixdiffbeforeafterboth--- a/lib/default.nix
+++ b/lib/default.nix
@@ -1,18 +1,31 @@
{flake-utils}: {
fleetConfiguration = {
+ # TODO: Provide by fleet, instead of requesting user to provide it.
+ # This is not good that user needs to provide it, as it becomes a flake data, and fleet arbitrarily rewriting it
+ # always dirnets the flake. Instead, fleetConfiguration should return function, parameters of which should be filled
+ # by fleet itself, which is possible since fleet moving to nix repl execution.
data,
nixpkgs,
+ overlays ? [],
hosts,
- ...
- } @ allConfig: let
+ modules,
+ globalModules ? [],
+ }: let
hostNames = nixpkgs.lib.attrNames hosts;
- config = builtins.removeAttrs allConfig ["nixpkgs" "data"];
fleetLib = import ./fleetLib.nix {
inherit nixpkgs hostNames;
};
in let
root = nixpkgs.lib.evalModules {
- modules = (import ../modules/fleet/_modules.nix) ++ [config data];
+ modules =
+ (import ../modules/fleet/_modules.nix)
+ ++ [
+ data
+ ({...}: {
+ inherit globalModules hosts;
+ })
+ ]
+ ++ modules;
specialArgs = {
inherit nixpkgs fleetLib;
};
@@ -25,84 +38,20 @@
withData = {
root,
data,
- }: rec {
+ }: {
configuredHosts = root.config.hosts;
- configuredUncheckedHosts = root.config.hosts;
- configuredSystems = configuredSystemsWithExtraModules [];
- configuredSystemsWithExtraModules = extraModules:
- nixpkgs.lib.listToAttrs (
- map
- (
- name: {
- inherit name;
- value = nixpkgs.lib.nixosSystem {
- system = configuredHosts.${name}.system;
- modules = configuredHosts.${name}.modules ++ extraModules;
- specialArgs = {
- inherit fleetLib;
- fleet = fleetLib.hostsToAttrs (host: configuredSystems.${host}.config);
- };
- };
- }
- )
- (builtins.attrNames root.config.hosts)
- );
- buildableSystems = {localSystem}: let
- buildConfigurationModule = {config, ...}: {
- # Equivalent to nixpkgs.localSystem
- # nixpkgs.system = localSystem;
- nixpkgs.buildPlatform.system = localSystem;
- };
- in
- configuredSystemsWithExtraModules [
- buildConfigurationModule
- ];
- buildSystems = {localSystem}: let
- buildConfigurationModule = {config, ...}: {
- # Equivalent to nixpkgs.localSystem
- # nixpkgs.system = localSystem;
- nixpkgs.buildPlatform.system = localSystem;
- };
- in {
- toplevel = builtins.mapAttrs (_name: value: value.config.system.build.toplevel) (configuredSystemsWithExtraModules [
- buildConfigurationModule
- ({...}: {
- buildTarget = "toplevel";
- })
- ]);
- sdImage = builtins.mapAttrs (_name: value: value.config.system.build.sdImage) (configuredSystemsWithExtraModules [
- buildConfigurationModule
- #(nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64-installer.nix")
- ({...}: {
- buildTarget = "sd-image";
- })
- ]);
- installationCd = builtins.mapAttrs (_name: value: value.config.system.build.isoImage) (configuredSystemsWithExtraModules [
- buildConfigurationModule
- (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")
- ({lib, ...}: {
- buildTarget = "installation-cd";
- # Needed for https://github.com/NixOS/nixpkgs/issues/58959
- boot.supportedFilesystems = lib.mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"];
- })
- ]);
- };
- configUnchecked = root.config;
+ config = root.config;
};
defaultData = withData {
inherit data;
root = checkedRoot;
};
uncheckedData = withData {inherit data root;};
- in rec {
- inherit (defaultData) configuredHosts configuredSystems buildSystems configUnchecked buildableSystems;
+ in {
+ inherit nixpkgs overlays;
+ inherit (defaultData) configuredHosts configuredSystems config buildableSystems;
unchecked = {
- inherit (uncheckedData) configuredHosts configuredSystems buildSystems configUnchecked buildableSystems;
- };
- injectData = data: let
- injectedData = withData data;
- in {
- inherit (injectedData) configuredHosts configuredSystems buildSystems configUnchecked;
+ inherit (uncheckedData) configuredHosts configuredSystems config buildableSystems;
};
};
}
modules/fleet/meta.nixdiffbeforeafterboth--- a/modules/fleet/meta.nix
+++ b/modules/fleet/meta.nix
@@ -1,49 +1,82 @@
-{ lib, fleetLib, config, ... }: with lib;
-let
- host = with types; {
- options = {
- modules = mkOption {
- type = listOf (mkOptionType {
- name = "submodule";
- inherit (submodule { }) check;
- merge = lib.options.mergeOneOption;
- description = "Nixos modules";
- });
- description = "List of nixos modules";
- default = [ ];
- };
- system = mkOption {
- type = str;
- description = "Type of system";
+{
+ lib,
+ fleetLib,
+ config,
+ nixpkgs,
+ ...
+}:
+with lib; let
+ hostModule = with types;
+ {...} @ hostConfig: {
+ options = {
+ modules = mkOption {
+ type = listOf (mkOptionType {
+ name = "submodule";
+ inherit (submodule {}) check;
+ merge = lib.options.mergeOneOption;
+ description = "Nixos modules";
+ });
+ description = "List of nixos modules";
+ default = [];
+ };
+ system = mkOption {
+ type = str;
+ description = "Type of system";
+ };
+ encryptionKey = mkOption {
+ type = str;
+ description = "Encryption key";
+ };
+ nixosSystem = mkOption {
+ type = unspecified;
+ description = "Nixos configuration";
+ };
};
- encryptionKey = mkOption {
- type = str;
- description = "Encryption key";
+ config.nixosSystem = nixpkgs.lib.nixosSystem {
+ inherit (hostConfig.config) system modules;
+ specialArgs = {
+ inherit fleetLib;
+ fleet = fleetLib.hostsToAttrs (host: config.hosts.${host}.nixosSystem.config);
+ };
};
};
+ overlayType = mkOptionType {
+ name = "nixpkgs-overlay";
+ description = "nixpkgs overlay";
+ check = lib.isFunction;
+ merge = lib.mergeOneOption;
};
-in
-{
+in {
options = with types; {
hosts = mkOption {
- type = attrsOf (submodule host);
- default = { };
+ type = attrsOf (submodule hostModule);
+ default = {};
description = "Configurations of individual hosts";
};
globalModules = mkOption {
type = listOf (mkOptionType {
name = "submodule";
- inherit (submodule { }) check;
+ inherit (submodule {}) check;
merge = lib.options.mergeOneOption;
description = "Nixos modules";
});
description = "Modules, which should be added to every system";
- default = [ ];
+ default = [];
};
+ overlays = mkOption {
+ default = [];
+ type = listOf overlayType;
+ };
};
config = {
hosts = fleetLib.hostsToAttrs (host: {
- modules = config.globalModules;
+ modules =
+ config.globalModules
+ ++ [
+ ({...}: {
+ nixpkgs.overlays = config.overlays;
+ })
+ ];
});
globalModules = import ../../nixos/modules/module-list.nix;
};
modules/fleet/secrets.nixdiffbeforeafterboth--- a/modules/fleet/secrets.nix
+++ b/modules/fleet/secrets.nix
@@ -1,69 +1,48 @@
{ lib, fleetLib, config, ... }: with lib; with fleetLib;
let
- sharedSecret = with types; {
+ sharedSecret = with types; ({config, ...}: {
options = {
expectedOwners = mkOption {
- type = listOf str;
+ type = nullOr (listOf str);
description = ''
- List of hosts to encrypt secret for
+ List of hosts to encrypt secret for. null if managed by user (= via owners field from fleet.nix)
Secrets would be decrypted and stored to /run/secrets/$\{name} on owners
'';
- default = [ ];
};
- ownerDependent = mkOption {
+ # TODO: Aren't those options may be just desugared to data/expectedData?
+ regenerateOnOwnerAdded = mkOption {
type = bool;
- description = "Is this secret owner-dependent, and needs to be regenerated on ownership set change, or it may be just reencrypted";
+ description = ''
+ Is this secret owner-dependent, and needs to be regenerated on ownership set change, or it may be just reencrypted.
+
+ You want to have this option set to true, when this secret contains some reference to its owners, i.e x509 SANs.
+ '';
};
- generateImpure = mkOption {
- type = unspecified;
+ regenerateOnOwnerRemoved = mkOption {
+ default = config.regenerateOnOwnerAdded;
+ type = bool;
+ description = ''
+ Should this secret be removed on owner removal, or it may be just reencrypted
+
+ Most probably its value should be equal to regenerateOnOwnerAdded, override only if you know what are you doing.
+ Contrary to regenerateOnOwnerAdded, you may want to set this option to false, when host permissions are revoked
+ in some other way than by this secret ownership, I.e by firewall/etc.
+ '';
};
generator = mkOption {
- type = nullOr (submodule {
- packages = mkOption {
- type = attrsOf package;
- description = ''
- Derivation to execute for shared secret generation (key = system).
- This derivation should produce directory, with exactly two files:
- - publicData
- - encryptedSecretData
-
- If null - secret value may only be created manually.
- '';
- };
- expectedData = mkOption {
- type = types.unspecified;
- description = "Data expected to be used for secret generation, if doesn't match specified - secret should be regenerated";
- };
- dependencies = mkOption {
- type = listOf str;
- description = ''
- List of secrets, on which this secret depends.
-
- During generation, generator command will be ran on host, which already has specified secrets generated.
- '';
- default = [];
- };
- data = mkOption {
- type = types.unspecified;
- description = "Data used for secret generation. Imported from fleet.nix";
- default = null;
- internal = true;
- };
- });
- default = null;
- };
- expireIn = mkOption {
- type = nullOr int;
- description = "Time in hours, in which this secret should be regenerated";
+ type = nullOr unspecified;
+ description = "Derivation to evaluate for secret generation";
default = null;
};
createdAt = mkOption {
type = nullOr str;
+ description = "When this secret was (re)generated";
default = null;
};
expiresAt = mkOption {
type = nullOr str;
+ description = "On which date this secret will expire, someone should regenerate this secret before it expires.";
default = null;
};
@@ -78,6 +57,9 @@
'';
default = [ ];
};
+ # TODO: Make secret generator generate arbitrary number of secret/public parts?
+ # Make it generate a folder, where all files except suffixed by .enc are public, and the rest are secret?
+ # How should modules refer to those files then?
public = mkOption {
type = nullOr str;
description = "Secret public data. Imported from fleet.nix";
@@ -90,7 +72,7 @@
internal = true;
};
};
- };
+ });
hostSecret = with types; {
options = {
createdAt = mkOption {
@@ -132,7 +114,7 @@
config = {
assertions = mapAttrsToList
(name: secret: {
- assertion = builtins.sort (a: b: a < b) secret.owners == builtins.sort (a: b: a < b) secret.expectedOwners;
+ assertion = secret.expectedOwners == null || builtins.sort (a: b: a < b) secret.owners == builtins.sort (a: b: a < b) secret.expectedOwners;
message = "Shared secret ${name} is expected to be encrypted for ${builtins.toJSON secret.expectedOwners}, but it is encrypted for ${builtins.toJSON secret.owners}. Run fleet secrets regenerate to fix";
})
config.sharedSecrets;
@@ -141,6 +123,7 @@
let
cleanupSecret = (secretName: v: {
inherit (v) public secret;
+ shared = true;
});
in
[
nixos/secrets.nixdiffbeforeafterboth--- a/nixos/secrets.nix
+++ b/nixos/secrets.nix
@@ -5,7 +5,7 @@
let
sysConfig = config;
secretType = types.submodule ({ config, ... }: {
- config = let secretName = config._module.args.name; in rec {
+ config = let secretName = config._module.args.name; in {
stableSecretPath = mkOptionDefault "/run/secrets/secret-stable-${secretName}";
secretPath = mkOptionDefault "/run/secrets/secret-${config.secretHash}-${secretName}";
secretHash = mkOptionDefault (if config.secret != null then (builtins.hashString "sha1" config.secret) else throw "secret is not defined for secret ${secretName}");
@@ -14,63 +14,74 @@
publicPath = mkOptionDefault "/run/secrets/public-${config.publicHash}-${secretName}";
publicHash = mkOptionDefault (if config.public != null then (builtins.hashString "sha1" config.public) else throw "public is not defined for secret ${secretName}");
};
- options = {
+ options = with types; {
+ shared = mkOption {
+ description = "Is this secret owned by this machine, or propagated from shared secrets";
+ default = false;
+ };
+
+ generator = mkOption {
+ type = nullOr unspecified;
+ description = "Derivation to evaluate for secret generation";
+ default = null;
+ };
+
public = mkOption {
- type = types.nullOr types.str;
+ type = nullOr str;
description = "Secret public data";
default = null;
};
secret = mkOption {
- type = types.nullOr types.str;
+ type = nullOr str;
description = "Encrypted secret data";
default = null;
};
mode = mkOption {
- type = types.str;
+ type = str;
description = "Secret mode";
default = "0440";
};
owner = mkOption {
- type = types.str;
+ type = str;
description = "Owner of the secret";
default = "root";
};
group = mkOption {
- type = types.str;
+ type = str;
description = "Group of the secret";
default = sysConfig.users.users.${config.owner}.group;
};
secretHash = mkOption {
- type = types.str;
+ type = str;
description = "Hash of .secret field";
};
publicHash = mkOption {
- type = types.str;
+ type = str;
description = "Hash of .public field";
};
stableSecretPath = mkOption {
- type = types.str;
+ type = str;
description = ''
Use this, if target process supports re-reading of secret from disk,
and doesn't needs to be restarted when secret is updated in file
'';
};
secretPath = mkOption {
- type = types.str;
+ type = str;
description = "Path to decrypted secret, suffixed with contents hash";
};
stablePublicPath = mkOption {
- type = types.str;
+ type = str;
description = ''
Use this, if target process supports re-reading of secret from disk,
and doesn't needs to be restarted when secret is updated in file
'';
};
publicPath = mkOption {
- type = types.str;
+ type = str;
description = "Path to the public part of secret";
};
};