The repeat and enforce-determinism options have been removed since they had been broken under many circumstances for a long time.
You can now use flake references in the old command line interface, e.g.
# nix-build flake:nixpkgs -A hello
# nix-build -I nixpkgs=flake:github:NixOS/nixpkgs/nixos-22.05 \
'<nixpkgs>' -A hello
# NIX_PATH=nixpkgs=flake:nixpkgs nix-build '<nixpkgs>' -A hello
Instead of “antiquotation”, the more common term string interpolation is now used consistently. Historical release notes were not changed.
Error traces have been reworked to provide detailed explanations and more accurate error locations. A short excerpt of the trace is now shown by default when an error occurs.
Allow explicitly selecting outputs in a store derivation installable, just like we can do with other sorts of installables. For example,
On Linux, nix develop now sets the personality for the development shell in the same way as the actual build of the derivation. This makes shells for i686-linux derivations work correctly on x86_64-linux.
With “flake capabilites” leaking into regular old-style expressions as well, can’t we make the experimental feature flakes available without also having to enable nix-command?
I do not really see a reason for nix-command being enabled for nix-build -I nixpkgs=github:nixos/nixpkgs/nixos-unstable '<nixpkgs>' -A hello or builtins.getFlake being used in a regular “old school” shell.nix.
This does not require the nix-command feature. For instance, nix-build --experimental-features 'flakes' -I nixpkgs=github:nixos/nixpkgs/nixos-unstable '<nixpkgs>' -A hello works.
❯ nix-build '/nix/store/xz5yya8qjcj0fv0nfcvxyj7hzcy54vfg-blockscout-0.0.0.drv'
/nix/store/97099b8shhy6vm31yc9184sr9q03496w-blockscout-0.0.0
❯ nix-build '/nix/store/xz5yya8qjcj0fv0nfcvxyj7hzcy54vfg-blockscout-0.0.0.drv^out'
error: getting status of '/nix/store/xz5yya8qjcj0fv0nfcvxyj7hzcy54vfg-blockscout-0.0.0.drv^out': No such file or directory
❯ nix --version
nix (Nix) 2.13.2