GNU Guix is a package manager that offers transactional, reproducible, per-user package management. While Guix can be used stand-alone and provide a full GNU distribution and a kernel by itself, you can install the Guix package manager on top of Arch to make Guix available to users while using a more traditional and mature Unix-like system as a base.
See the Guix manual for information on what per-user packaging commands Guix makes available to users.
GNU Guix is available in the AUR as
PKGBUILD, the PGP key by the Guix distributor will need to be added first.
Guix makes builds more reproducible by running the build process using an unprivileged build user account. Therefore if you want to be able to build
n packages simultaneously (e.g. for serving multiple users at the same time) you should create
n build user accounts. as Guix should be able to build simultaneously. The following command does this the way described in Guix manual:
# groupadd --system guixbuild # uncomment and type e.g. 10 for n below --> have ten users # for i in `seq -w 1 n`; do useradd -g guixbuild -G guixbuild \ -d /var/empty -s `which nologin` \ -c "Guix build user $i" --system \ guixbuilder$i; done
Start and enable
You may want to authorize Guix to download and use binary packages (‘substitutes’) from Hydra:
# guix archive --authorize < /usr/share/guix/hydra.gnu.org.pub
Building packages outside of /tmp
The unit file may need to be extended to use a different
TMPDIR for building if
/tmp does not provide enough space (see the Guix manual for details). To use
/tmpdir for building instead of
# systemctl edit guix-daemon.service
to add the following lines:
guix-daemon.service and then remove Guix using pacman. Now remove all the Guix build users and their group:
# for i in `seq -w 1 n`; do userdel guixbuilder$i; done # groupdel guixbuild
Then remove the Guix store
/gnu as well as
/var/log/guix. If you edited
guix-daemon.service, you may want to remove
/etc/systemd/system/guix-daemon.service.d as well.