Closed jtojnar closed 8 months ago
I managed to shrink the reproducer to:
echo "let packageSet = /home/jtojnar/Projects/nixpkgs; pkgs = import packageSet {overlays = [(import /nix/store/22l6rrv003f9v05ciaaj95fq848sahbi-nixpkgs-hammering/overlays/no-flags-array.nix) ]; }; in pkgs.hello" | nix-instantiate --strict --json --eval -
Then I bisected it against Nix to https://github.com/NixOS/nix/commit/94812cca98fbb157e5f64a15a85a2b852d289feb
Turns out it was because of imports across symlinks:
https://github.com/jtojnar/nixpkgs-hammering/blob/6141217e55cafe05603495065fefd9d4ab59e706/flake.nix#L59-L60 https://github.com/jtojnar/nixpkgs-hammering/blob/6141217e55cafe05603495065fefd9d4ab59e706/overlays/no-flags-array.nix#L4
That allowed me to further simplify the reproducer to:
mkdir -p repro-144/over
echo 'import ../bar.nix' > repro-144/over/foo.nix
storePath=$(nix-build -I "nixpkgs=$HOME/Projects/nixpkgs" -E 'let pkgs = import <nixpkgs> {}; in pkgs.runCommand "nixpkgs-hammering" {} "mkdir -p $out; echo \"\\\"test\\\"\" > $out/bar.nix; ln -s ${./repro-144/over} $out/over"')
echo "import $storePath/over/foo.nix" | nix-instantiate --strict --json --eval -
Even simple reproduction:
rm -r 144-store
mkdir -p 144-store/overlays
echo 'import ../lib' > 144-store/overlays/overlay.nix
mkdir -p 144-store/foo/lib
echo '"test"' > 144-store/foo/lib/default.nix
ln -s $PWD/144-store/overlays 144-store/foo/overlays
nix-instantiate --eval --strict "144-store/foo/overlays/overlay.nix"
When I try to bump Nixpkgs revision, hammering will fail with evaluation error:
Bisecting against Nixpkgs points to https://github.com/NixOS/nixpkgs/commit/3132d2406edadbc1a3f0f5dc13aaf7c285fe4263