Next: Network Access, Previous: Setting Up a Head Node, Up: Installing Guix on a Cluster [Contents][Index]
First of all, we need compute nodes to mount those NFS directories that the head node exports. This can be done by adding the following lines to /etc/fstab:
head-node:/gnu/store /gnu/store nfs defaults,_netdev,vers=3 0 0 head-node:/var/guix /var/guix nfs defaults,_netdev,vers=3 0 0 head-node:/var/log/guix /var/log/guix nfs defaults,_netdev,vers=3 0 0
... where head-node is the name or IP address of your head node. From there on, assuming the mount points exist, you should be able to mount each of these on the compute nodes.
Next, we need to provide a default guix
command that users can
run when they first connect to the cluster (eventually they will invoke
guix pull
, which will provide them with their “own”
guix
command). Similar to what the binary installation script
did on the head node, we’ll store that in /usr/local/bin:
mkdir -p /usr/local/bin ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix \ /usr/local/bin/guix
We then need to tell guix
to talk to the daemon running on our
master node, by adding these lines to /etc/profile
:
GUIX_DAEMON_SOCKET="guix://head-node" export GUIX_DAEMON_SOCKET
To avoid warnings and make sure guix
uses the right locale, we
need to tell it to use locale data provided by Guix (see Application
Setup in GNU Guix Reference Manual):
GUIX_LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale export GUIX_LOCPATH # Here we must use a valid locale name. Try "ls $GUIX_LOCPATH/*" # to see what names can be used. LC_ALL=fr_FR.utf8 export LC_ALL
For convenience, guix package
automatically generates
~/.guix-profile/etc/profile, which defines all the environment
variables necessary to use the packages—PATH
,
C_INCLUDE_PATH
, PYTHONPATH
, etc. Likewise, guix
pull
does that under ~/.config/guix/current. Thus it’s a good
idea to source both from /etc/profile
:
for GUIX_PROFILE in "$HOME/.config/guix/current" "$HOME/.guix-profile" do if [ -f "$GUIX_PROFILE/etc/profile" ]; then . "$GUIX_PROFILE/etc/profile" fi done
Last but not least, Guix provides command-line completion notably for
Bash and zsh. In /etc/bashrc
, consider adding this line:
. /var/guix/profiles/per-user/root/current-guix/etc/bash_completion.d/guix
Voilà!
You can check that everything’s in place by logging in on a compute node and running:
guix install hello
The daemon on the head node should download pre-built binaries on your
behalf and unpack them in /gnu/store, and guix install
should create ~/.guix-profile containing the
~/.guix-profile/bin/hello command.
Next: Network Access, Previous: Setting Up a Head Node, Up: Installing Guix on a Cluster [Contents][Index]