GNU Guix Package Manager

GNU Guix is a functional package management tool written for the GNU system. Differing from traditional package managers, Guix (like Nix, which Guix is based on) utilizes a purely functional deployment model where software is installed into unique directories generated through cryptographic hashes, which include all dependencies for it. It uses low-level mechanisms from the Nix package manager, but configuration and package recipes are written in Guile Scheme. GNU Guix provides 27,030 packages transparently available as pre-built binaries. These packages are defined as native Guile modules, which makes it a hackable system.

Main Features of Guix

  • Transactional Upgrading
  • Roll-Backs
  • Reproducible Build Environments
  • Unprivileged Package Management
  • Per-User Profiles
  • 27,030 Packages available

Installing Guix, Updating and Configuring

To install the Guix package management tool, open a Terminal and run:

 sudo apt install guix
To upgrade the build daemon, run
 sudo -i guix pull
This will take some time. Then, run
 systemctl restart guix-daemon.service
Now, all operations are run without sudo, each user has her own version of Guix and her own installed packages, which are different from other users.

To update the Guix tools along with the distribution of the packages that are installed, run

 guix pull
This will take some time.

To integrate Guix into the system run these few commands:

 guix install glibc-locales
 export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
 guix install fontconfig font-dejavu font-gnu-freefont gs-fonts
 fc-cache -rv
Run the following to avoid issues when opening a graphical session:
 cat >> ~/.profile << EOF
 export XDG_DATA_DIRS="/usr/local/share:/usr/share/\${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS"
 EOF

Example of How to Install a Package with Guix

As shown above, run 'guix install [package]' to install a package. To install the GNU IceCat Web Browser for example, run:

 guix install icecat
Don't forget to set the environment variables, like shown on your terminal output, before starting IceCat!

Upgrading installed packages

To upgrade Guix, run

 guix pull
To upgrade installed packages, run
 guix package --upgrade
or
 guix package -u

Space on the root partition

Guix may take a lot of space on the root partition. You may check how much is used on your root partition by running

 df -h /
 Filesystem                   Size  Used Avail Use% Mounted on
 /dev/mapper/vgtrisquel-root  883G  174G  665G  21% /
In this example the available space is 665G, which is very large. If the available size is less than 10G, consider making space.

To make space, run the Guix garbage collector

 gc
Each time "guix upgrade" is run, a new "generation" is created, and previous generations, with older versions of installed packages are kept.

If you need to save space and don't need to use previous versions of installed packages, run

 guix package --delete-generations
And then
 gc

Further Reading and Videos

https://guix.gnu.org/en/help/

Sources

Revisions

10/15/2023 - 16:04
knife
09/04/2024 - 10:18
Avron