GNU Guix provides state-of-the-art package management features such as transactional upgrades and roll-backs, reproducible build environments, unprivileged package management, and per-user profiles. It uses low-level mechanisms from the Nix package manager, but packages are defined as native Guile modules, using extensions to the Scheme language -- which makes it nicely hackable. Guix may be run in single or multi-user mode (which requires the guix-daemon). To have the guix daemon start and stop with your host, add to /etc/rc.d/rc.local: if [ -x /etc/rc.d/rc.guix ]; then /etc/rc.d/rc.guix start fi and to /etc/rc.d/rc.local_shutdown (creating it if needed): if [ -x /etc/rc.d/rc.guix ]; then /etc/rc.d/rc.guix stop fi The daemon requires users for building the guix packages, which should be added under the 'guixbuild' group. groupadd -g 316 guixbuild for i in `seq -w 1 10`; do useradd -G guixbuild \ -d /var/empty -s `which nologin` \ -c "Guix build user $i" -u 316 -g 316 \ guixbuilder$i; done Restricting access to the daemon to only users in the guixbuild group is acheived by setting file permissions for the daemon's socket's folder. chgrp guixbuild /var/guix/daemon-socket chmod ug=rwx,o= /var/guix/daemon-socket Correct permissions must also be set for /var/guix/profiles to give users access. By default guix will compile in /tmp, this can be changed by exporting $TMPDIR. Guix will also by default store its packages in /gnu/store, to save space in the root partition /gnu can be mounted on another partition. Guix can either be built with the nix-daemon instead of the default guix-daemon or along side nix sharing the same store, both require nix as an optional dependency. To build with the nix-daemon use NIX="yes" and to share the store with nix use SHARE="yes". guile-json is an optional dependency and will allow you to use the 'guix import pypi' command. It is of interest primarily for developers and not for casual users.