guix weather
.
43e0d69757
Updating crates.io index Locking 27 packages to latest compatible versions Adding atomic-waker v1.1.2 Adding base64 v0.22.1 Adding h2 v0.4.6 Adding http v1.1.0 Adding http-body v1.0.1 Adding http-body-util v0.1.2 Adding hyper v1.5.0 Adding hyper-rustls v0.27.3 Updating hyper-tls v0.5.0 -> v0.6.0 Adding hyper-util v0.1.9 Updating reqwest v0.11.27 -> v0.12.8 Adding ring v0.17.8 Adding rustls v0.23.15 Updating rustls-pemfile v1.0.4 -> v2.2.0 Adding rustls-pki-types v1.10.0 Adding rustls-webpki v0.102.8 Adding spin v0.9.8 Adding subtle v2.6.1 Adding sync_wrapper v1.0.1 Updating system-configuration v0.5.1 -> v0.6.1 Updating system-configuration-sys v0.5.0 -> v0.6.0 Adding tokio-rustls v0.26.0 Adding untrusted v0.9.0 Adding windows-registry v0.2.0 (latest: v0.3.0) Adding windows-result v0.2.0 Adding windows-strings v0.1.0 (latest: v0.2.0) Adding zeroize v1.8.1 Signed-off-by: Christina Sørensen <christina@cafkafk.com> |
||
---|---|---|
.config | ||
.forgejo | ||
.github | ||
crates | ||
LICENSES | ||
.envrc | ||
.gitignore | ||
.rustfmt.toml | ||
.versionrc | ||
Cargo.lock | ||
Cargo.toml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
deny.toml | ||
flake.lock | ||
flake.nix | ||
justfile | ||
LICENSE.txt | ||
README.md | ||
REUSE.toml |
Nix Weather - Check Cache Availablility of NixOS Configurations
A fast rust tool to check availability of your entire system in caches. It so
to speak "checks the weather" before going to update. Heavily inspired by guix weather
.
Usage
Note
Currently,
nix-weather
only has first-class support for flakes.
General usage would be like this:
nix-weather --name myhost --config ~/git/my-nixos-config
Here, we specify the name of the host, as specified at the flake output
nixosConfiguration
, and a path to the NixOS configuration flake.
How It Works
The basic idea is that we construct a set of all requisites to build the top-level of a NixOS configuration, and then query Nix cache(s) for the narinfo. By doing this in a high concurrency, parallel task runner (i.e. tokio async runtime), and only querying the headers for status codes, we can reach impressive speeds, typically around 45~ network time.
One of the biggest limiting factors regarding speed is building the
config.system.toplevel
, and finding the necessary requisites with nix-store
.
Caching the requisites is a future goal, so that we only have to build the
toplevel
, and then match against its derivation in cache, which should cut
down the nix part of the runtime by ~80%.
Contributing
For information on contributing, please see CONTRIBUTING.md.