Ask questionsCan't find nix-shell after installationon mac OS X
On Mac OS X (10.11.6) I ran
curl https://nixos.org/nix/install | sh which downloaded
On completion this was printed:
Before Nix will work in your existing shells, you'll need to close them and open them again. Other than that, you should be ready to go. Try it! Open a new terminal, and type: $ nix-shell -p nix-info --run "nix-info -m"
I started a new shell but nix-shell is not on my PATH in fish nor in bash
$ nix-shell fish: Unknown command 'nix-shell' $ bash $ nix-shell bash: nix-shell: command not found
nix-shell in /nix but could not start it:
$ /nix/store/771l8i0mz4c8kry8cz3sz8rr3alalckg-nix-2.0.4/bin/nix-shell -p nix-info --run "nix-info -m" error: file 'nixpkgs' was not found in the Nix search path (add it using $NIX_PATH or -I), at (string):1:13
Should the post-install instructions be updated? Are there any additional steps needed to get nix-shell to run?
Answer questions ryanorendorff
There seems to be a case where the installer script modifies
.profile but that file is not sourced correctly. For my case, after installation I got this message (with
$HOME filled in).
Installation finished! To ensure that the necessary environment variables are set, either log in again, or type . $HOME/.nix-profile/etc/profile.d/nix.sh in your shell.
However I am using zsh, which does not load
.profile automatically. Hence I had to add the line
. $HOME/.nix-profile/etc/profile.d/nix.sh to something zsh executes (
The installer script seems to assume you are using bash. The culprit appears to be this line, which doesn't look for any other shells than bash (and only specific bash files that aren't guaranteed to be there) or shells that source
Below is the problem line in context for the macOS installer.
if [ -z "$NIX_INSTALLER_NO_MODIFY_PROFILE" ]; then # Make the shell source nix.sh during login. p=$HOME/.nix-profile/etc/profile.d/nix.sh for i in .bash_profile .bash_login .profile; do # <-- This is the problematic line fn="$HOME/$i" if [ -w "$fn" ]; then if ! grep -q "$p" "$fn"; then echo "modifying $fn..." >&2 echo "if [ -e $p ]; then . $p; fi # added by Nix installer" >> "$fn" fi added=1 break fi done fi
@zenspider Hopefully this helps.