Nix has poor support for having a store path other than /nix/store
.
Your best bet is probably a helper like nix-portable, which uses Flatpack-like containers to emulate access to /nix
nixos
All about NixOS - https://nixos.org/
Thanks, this explains it. I'm trying to set up nix-portable now, but it's quite confusing. I downloaded nix-portable
binary which is a self-extracting archive that silently unpacked a bunch of files to ~/.nix-portable
:
$ ls ~/.nix-portable/bin/
bwrap proot zstd
It seems I was meant to run it like so ./nix-portable nix-shell
but this does nothing. On my local machine running OpenSUSE Tumbleweed it exists immediately, whereas on my work HPC server it gets stuck.
Sorry, I don't have any practical advice on the topic, I only know the tool exists.
That's all right, thanks! It seems that it does do something indeed, I had to run with debug information and it was simply taking a long time to configure itself
NP_DEBUG=2 ./nix-portable nix-shell -p hello
The only issue is I downloaded a binary package which is dated early 2022 and it uses nix 2.5.1. I need to figure out how to force it to use the latest version of nix.
You may wanna have a look at nix-portable if you don't have root access.
Above command will perform a single-user installation of Nix, meaning that
/nix
is owned by the invoking user. You should run this under your usual user account, not asroot
. The script will invokesudo
to create/nix
if it doesn’t already exist.
Thanks! I do run it indeed as a user. I don't have a sudo access on this server so I would like to do a completely portable installation. I downloaded a portable binary for nix https://releases.nixos.org/?prefix=nix/nix-2.16.1/ and unpacked it on a file system, however when running nix it thinks that nix store is at /nix/store
:
$ /work/apps/nix/store/jdijjdjl6gjh07s4mwgb6bvm501hmjvh-nix-2.16.1/bin/nix
-bash: /work/apps/nix/store/jdijjdjl6gjh07s4mwgb6bvm501hmjvh-nix-2.16.1/bin/nix: /nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163/lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
So far I wasn't able to configure a different location for nix store: I created ~/.config/nix/nix.conf
and put this line inside nix.storeDir = /work/apps/nix/store
but it couldn't pick up the custom store location.