Release 2.18 (2023-09-20)

  • Two new builtin functions, builtins.parseFlakeRef and builtins.flakeRefToString, have been added. These functions are useful for converting between flake references encoded as attribute sets and URLs.

  • builtins.toJSON now prints --show-trace items for the path in which it finds an evaluation error.

  • Error messages regarding malformed input to nix derivation add are now clearer and more detailed.

  • The discard-references feature has been stabilized. This means that the unsafeDiscardReferences attribute is no longer guarded by an experimental flag and can be used freely.

  • The JSON output for derived paths which are store paths is now a string, not an object with a single path field. This only affects nix-build --json when "building" non-derivation things like fetched sources, which is a no-op.

  • A new builtin outputOf has been added. It is part of the dynamic-derivations experimental feature.

  • Flake follow paths at depths greater than 2 are now handled correctly, preventing "follows a non-existent input" errors.

  • nix-store --query gained a new type of query: --valid-derivers. It returns all .drv files in the local store that can be used to build the output passed in argument. This is in contrast to --deriver, which returns the single .drv file that was actually used to build the output passed in argument. In case the output was substituted from a binary cache, this .drv file may only exist on said binary cache and not locally.