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.fetchClosurethat 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-addressablehas been renamed to nix storemake-content-addressed. -
The
nixosModuleflake output attribute has been renamed consistent with the.defaultrenames in Nix 2.7.nixosModule→nixosModules.default
As before, the old output will continue to work, but
nix flake checkwill issue a warning about it. -
nix runis now stricter in what it accepts: members of theappsflake output are now required to be apps (as defined in the manual), and members ofpackagesorlegacyPackagesmust be derivations (not apps).
The next release is scheduled for 2022-05-30.
Thank you to all the contributors!