On Your Laptop¶
The installation procedure can be found on Nix’s front page. In most scenarios, running this single command as normal user should install Nix.
curl https://nixos.org/releases/nix/nix-2.2.2/install | sh
If the installation fails with a
error: cloning builder process: Operation not permitted message, your kernel probably prevents the Nix installer to use Nix’s sandboxing facilities.
In short, by default, Nix isolate builds in chroot-like environments to make sure they cannot access undeclared (out-of-Nix) dependencies.
For example, a build script that links against
/usr/lib/libevent.so would fail.
A first workaround is to disable Nix’s sandboxing mechanism.
This is done by configuring
/etc/nix/nix.conf as follows (should be run as root).
mkdir -p /nix /etc/nix chmod a+rwx /nix echo 'sandbox = false' > /etc/nix/nix.conf
An alternative and better solution is to configure your kernel so that sandboxing can work. This is usually not required as Nix’s sandboxing should work with default kernel options, but some distributions disable certain features — e.g., Debian disables user namespaces. Here is a Debian-specific workaround to enable user namespaces (should be run as root).
echo 1 > /proc/sys/kernel/unprivileged_userns_clone
First, connect to a Grid‘5000 frontend (refer to Grid‘5000 Getting Started if needed).
Then, create a job thanks to
oarsub — here, a 3-hour length job to match the tutorial duration.
oarsub -I -l "walltime=3:00:00"
You should now be inside your job and able to install Nix as explained in On Your Laptop. The following script installs Nix by first enabling user namespaces.
sudo-g5k sudo su root --command "echo 1 > /proc/sys/kernel/unprivileged_userns_clone" curl https://nixos.org/releases/nix/nix-2.2.2/install | sh
One Final Step¶
The final step is to load the Nix environment variables, so that Nix binaries such as
nix-env can be accessed.
You can check your installation by calling one of the nix commands.
nix --version should for instance output
nix (Nix) 2.2.2.
Do not forget to reiterate the sourcing command each time you start a new shell.
It is also possible to automate this by editing your shell startup script. Here is an example for
echo "source /home/$(whoami)/.nix-profile/etc/profile.d/nix.sh" >> .bashrc
This is straightforward, as all Nix packages are in the Nix store.
- Delete the Nix store (and misc. Nix-related files) as root:
rm -rf /nix/
- (Delete the Nix configuration file as root:
rm -rf /etc/nix)
- Delete your user links as normal user:
rm -rf ~/.nix-channels ~/.nix-defexpr ~/.nix-profile