wire is a tool to deploy nixos systems wire.forall.systems
v1.4.0 4398c61d marshmallow

v1.4.0

In this release garnix has been replaced with our own binary cache as garnix has shutdown. This is a breaking change to your configuration if you previously used garnix to download wire. Please read https://wire.forall.systems/guides/installation.html#binary-cache for the up to date details! - `--print-build-logs` / `-L` argument. - `nix copy` & `nix build` operations are now manually implemented through a native rust nix daemon client if `--experimental-nix-client` is passed. - Node `target` liveliness is now determined directly by initiating a nix daemon handshake if `--experimental-nix-client` is passed. - Node evaluations are now cached between wire invocations in flake hives, invalidating old caches with a connection to the local nix daemon. - Parsing the output generated from `makeHive` now supports reading the schema version in semver format alongside the previous integer-based system. Currently, it still reports `1` to maintain backwards compatibility with v1.3.0. - A list of nodes that are currently deploying, failed, or waiting on a specific step are displayed below the status bar. - Changed public cache to `https://cache.forall.systems`, as noted above. - The Evaluate step is now only scheduled when the `.drv` output is actually required. This means that when building locally the Build step can construct the nix attribute directly skipping the Evaluate step. - The pre-activation key step is now scheduled after the evaluation step. The rationale for this is that while iterating on evaluation errors it was often quite annoying to repeatedly enter your password for key deployment. - Ipv6 addresses are now displayed in a nicer format in "Authenticate for ..." prompts. - Build logs from `-L` are now properly traced and logged alongside the build job name. - Internal representation of Nix store paths now use `snix`'s `StorePath` data type. - Flake evaluation caching now use `snix`'s `StorePath` native digests and name field as primary keys instead of full sqlite `text`. - Wire's cache is now deleted and recreated if migrations fail. - No longer panics on key agent env var not found. - Building & Pushing derivation outputs now explicitly operate on the `^out` output instead of incorrectly pushing all outputs (`^*`). This results in a roughly 12% speed increase in benchmarking. - Unknown fields in the hive schema are now ignored rather than rejected. - Cache database now uses `SqliteJournalMode::Wal` & `SqliteSynchronous::Normal`. - Attempting to reconnect to a rebooting node will now wait far longer before giving up. - Internally, Step store path outputs are now passed between steps via handles instead of mutable state. - Use `AssertPathExists` instead of conditional path existence checks for key services. - Built paths printed to stdout being clobbered with the status bar. - Not re-exporting `outputs.makeHive` under `outputs.lib.makeHive`. - Evaluating a flake hive attribute will now correctly use the `/nix/store` path returned from `nix flake prefetch`, instead of the `--path` URI. This has a small speed gain of about `1.07 ± 0.03` times faster in testing.