We’re pleased to announce the availability of Nix 2.8.0. It will be available from NixOS - Getting Nix / NixOS.
Here are the release notes:
-
New experimental command:
nix fmt
, which applies a formatter defined by theformatter.<system>
flake output to the Nix expressions in a flake. -
Various Nix commands can now read expressions from standard input using
--file -
. -
New experimental builtin function
builtins.fetchClosure
that copies a closure from a binary cache at evaluation time and rewrites it to content-addressed form (if it isn’t already). Likebuiltins.storePath
, this allows importing pre-built store paths; the difference is that it doesn’t require the user to configure binary caches and trusted public keys.This function is only available if you enable the experimental feature
fetch-closure
. -
New experimental feature: impure derivations. These are derivations that can produce a different result every time they’re built. Here is an example:
stdenv.mkDerivation { name = “impure”; __impure = true; # marks this derivation as impure buildCommand = “date > $out”; }
Running nix build twice on this expression will build the derivation twice, producing two different content-addressed store paths. Like fixed-output derivations, impure derivations have access to the network. Only fixed-output derivations and impure derivations can depend on an impure derivation.
-
nix store make-content-addressable
has been renamed to nix storemake-content-addressed
. -
The
nixosModule
flake output attribute has been renamed consistent with the.default
renames in Nix 2.7.nixosModule
→nixosModules.default
As before, the old output will continue to work, but
nix flake check
will issue a warning about it. -
nix run
is now stricter in what it accepts: members of theapps
flake output are now required to be apps (as defined in the manual), and members ofpackages
orlegacyPackages
must be derivations (not apps).
The next release is scheduled for 2022-05-30.
Thank you to all the contributors!