I have working nix installations on MacOS, Arch Linux, and NixOS on a Raspberry Pi 3.
Today I wanted to install the package manager on a Raspberry Pi running Raspbian and thought it would be no sweat.
Following the instructions at https://nixos.org/download.html#download-nix for a multi-user install:
sh <(curl -L https://nixos.org/nix/install) --daemon
I allowed it to use sudo when requested.
It looks like the installation worked, so I reboot, but I’m getting -bash: nix: command not found.
Digging around, I find that nix is installed for root and works fine:
$ sudo -i nix-shell -p nix-info --run "nix-info -m"
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
/nix/store/addlxsbl7ycab3zbkb0wq6a74487pncm-bash-5.1-p16/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
- system: `"aarch64-linux"`
- host os: `Linux 5.10.103-v8+, Debian GNU/Linux, 11 (bullseye), nobuild`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.11.1`
- channels(root): `"nixpkgs"`
- nixpkgs: `/root/.nix-defexpr/channels/nixpkgs`
but not installed under my user:
$ sudo ls -l /root/.nix-profile
lrwxrwxrwx 1 root root 29 Oct 7 13:46 /root/.nix-profile -> /nix/var/nix/profiles/default
$ ~/.nix-profile
-bash: /home/n8henrie/.nix-profile: No such file or directory
Did I do something wrong? If memory serves, on Arch it went ahead and installed to my regular user.
2 Likes
I’m not super familiar with the OOB experience on the various linuxes, but this sounds like your user’s shell init files might be either terminating early (before Nix’s shell hook can run) or may be hard-setting the PATH, overwriting the PATH-prefix it tries to add.
If looking over the init files doesn’t turn up anything obvious, I think you can run bash -x to make print the statements as it runs–it should be easy enough to tell from this if it’s terminating early or hard setting the PATH.
You’re right, once again it’s something in my bashrc overriding things:
$ bash --norc --noprofile -c 'source /etc/bashrc; which nix'
/nix/var/nix/profiles/default/bin/nix
Funny thing is I’m finally trying to figure out home-manager with this (attempted) installation.
After a bit of investigation, it looks like the issue is:
# Load profiles from /etc/profile, which will load those found in /etc/profile.d
if is_interactive_shell; then
[[ -r /etc/profile ]] && source /etc/profile
fi
where on Raspbian, /etc/profile leads with:
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
fi
export PATH
This is in my ~/.bashrc after putting nix on PATH, which is erasing it. Changing the order of things seems resolve the problem. Thank you!
2 Likes
Hello @n8henrie, could you specify exactly what you changed where? I’ve always found bash config files quite perplexing…
It’s been a few years, but based on this thread, I found a place late in my bash config file that was overwriting PATH and moved this earlier in the config (so that adding nix to PATH happened afterwards and was therefore preserved).
1 Like