Search code examples
nix

How can I fix the nix-shell error "error: creating directory '/nix/var': Permission denied"?


I'm getting strang errors while trying to run nix-shell suddenly. It used to work fine, but then through no fault of my own I started getting these errors:

jon@jon-laptop ~/D/C/D/0/color-word-analyzer (master)> nix-shell
building '/nix/store/02szzrd1w7wqmnkh9is5qlx64m7r6f1z-cabal2nix-color-word-analyzer.drv'...
installing
error: creating directory '/nix/var': Permission denied
error: creating directory '/nix/var': Permission denied
** need a revision for VCS when the hash is given. skipping.
** need a revision for VCS when the hash is given. skipping.
** need a revision for VCS when the hash is given. skipping.
** need a revision for VCS when the hash is given. skipping.
cabal2nix: user error (Failed to fetch source. Does this source exist? Source {sourceUrl = "/nix/store/fvka3nd7slnqgjvfkjg649v77y10lc89-color-word-analyzer", sourceRevision = "", sourceHash = Guess "", sourceCabalDir = ""})
builder for '/nix/store/02szzrd1w7wqmnkh9is5qlx64m7r6f1z-cabal2nix-color-word-analyzer.drv' failed with exit code 1
error: build of '/nix/store/02szzrd1w7wqmnkh9is5qlx64m7r6f1z-cabal2nix-color-word-analyzer.drv' failed

Color-word analyzer is the name of the Haskell project I'm developing. The default.nix for it is here and is pretty simple, so I don't get why this would be causing these errors.


Solution

  • It looks like cabal2nix is invoking a Nix command inside the sandbox. This is not permitted and probably happened by mistake in the version of Nixpkgs in your NIX_PATH. I was able to build the project with

    nix-build -I nixpkgs=channel:nixos-unstable
    

    Off-topic: recursive nix invocation will be supported with some restrictions for purity and hermeticity of results.