I have an ancient shell.nix
which provides the environment for some project, via direnv.
I haven’t modified the nix parts of this project for many months, but started fiddling with it today. Then I wanted to return to getting on with real work, so I checked out the old version, and it fails thus
> nix log /nix/store/s6lk5649k4k370v2x2y34rb65r77if2s-nvidia-530.41.03.drv
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
tail: error writing 'standard output': Broken pipe
Creating directory NVIDIA-Linux-x86_64-530.41.03
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 530.41.03/nix/store/di2va099dlad32771wznbk9pjl1b57pl-NVIDIA-Linux-x86_64-530.41.03.run: line 729: /build/makeself.2eUHVgve/zstd: No such file or directory
tail: error writing 'standard output': Broken pipe
/nix/store/di2va099dlad32771wznbk9pjl1b57pl-NVIDIA-Linux-x86_64-530.41.03.run: line 720: /dev/tty: No such device or address
Terminated
xz: (stdin): File format not recognized
tar: tail: This does not look like a tar archive
error writing 'standard output': Broken pipe
tar: Exiting with failure status due to previous errors
However, the failure only appears on my local development machine. Everything still works fine on compute servers where I deploy this code and, crucially, on a fresh CI run, where there is no danger of some old download being cached in the nix store.
The shell.nix
tries to pin down everything it uses with specific commit versions, and I haven’t run nix-collect-garbage
since this morning, when it worked absolutely fine, so I am surprised that it doesn’t get everything it needs from the nix store.
So I’m left staring at the ‘Broken pipe’ in the error message and am drawing a huge blank.
How can I get unstuck?