GNU Guix

From LinuxReviews
Jump to navigationJump to search

GNU GuixSD is an operating system from the GNU project with a "libre" Linux kernel and the GNU toolchain. It differs from other Linux-distributions in several key ways including it's unique package management system and it's service-manager. It's default desktop environment is Xfce.

Version 1.0 was released May 2019 after seven years of development.

The GuixSD distro uses the guix package manager (it is like APT in Debian) which is the best package manager ever, dealing with gazillions of file versions without squinting.

Is it for you?


One key difference between GNU Guix which you will immediately notice as a desktop user is that it is entirely free software. It has a "libre" kernel. What this means is that all binary firmware blobs are removed from it's kernel. These blobs are in fact evil and do pose a security risk on the distributions shipping them. The result in pure practical terms is that things like GPU accelerated graphics and video playback does not work. Most WIFI cards and adapters will not work.

Freedom is a value worth fighting for. That does not mean I would install Guix for someone with little computer-knowledge asking me to install an operating system on their laptop; they would be upset to find that they could not connect to the Internet and couldn't watch videos on YouTube even if they did connect with a wired "wifi"-cable[1]

Package manager and file system layout

GNU Guix uses a package-manager which is fittingly called guix. The way this software package manager works when you interface with it is rather normal. To install Icecat (their re-branded Firefox with extensions) you would type:

guix install icecat

And by would type we mean have to type because there is no graphical package management interface like dnfdragora or porthole on Guix.

You can install packages as a regular user, installing packages is not restricted to root or anyone else with "special" rights.

Things do differ wildly on the back-end side of Guix's package management. Most importantly: installed software is placed in it's own folder in /gnu/store. For example, guix install pidgin places a copy for the user running that command in /gnu/store/[hash]-pidgin-2.12.0 and that folder gets the sub-folders bin/ etc/ include/ lib/ share/. There is no system-side /lib/ or /usr/lib/ and while there is a /bin/ root folder it's only item is a sh symlink to a package in /store/gnu/.

Available per-user binaries exist as symbolic links in $HOME/.guix-profile which itself is a symbolic link to something like /var/guix/profiles/per-user/$USERNAME/guix-profile.

Some packages appear to be pre-compiled, others are not

Sometimes running guix install [something] will download some packages and write to disk and it's done. Sometimes, when installing some packages such as with ungoogled-chromium, it decides to start compiling ("building") the program.


Gentoo users will be familiar with this process. One key difference is that on Gentoo you expect that a package install involves your CPU being busy for hours while you wait for the package to compile. It appears to be somewhat random if guix install will download a binary package or spend ages compiling. This is somewhat problematic with ungoogled-chromium in particular because that piece of software needs more than 8 GB of RAM for a successful compile and the compilation as well as your machine will just stalls at 87% if you have 8 GB or less.

Init system and service management

Guix has it's own service manager called Shepherd which is more similar to systemd than it is to older traditional init-systems like sysvinit and OpenRC (there is no /etc/init.d/. This means you will have to read the fine manual[2] to use it because it is unlike everything you may be used to from other distributions.

Services are managed with the herd command> which must be ran in a terminal as code>root. There is no graphical interface. If you're not root then don't worry, you can just type sudo bash or sudo sh (both shells are available, one is not an alias for the other) and become root.

You can list all available services and their status with the command

herd status

Managing these services is not mysterious, you'd use commands like

herd start xorg-server
herd stop xorg-server
herd restart xorg-server

Configuration of the available services does not appear to follow any known standard. There is, for example, no /etc/X11 where you'd expect X's configuration file(s) to be. Exactly where and how you would configure and setup X or e-mail services like postfix and things like that remains a mystery. The answer could be in the GNU Guix Reference Manual.[3]

Other small differences you may notice

If you install Icecat - their Firefox version - you will find that many websites don't work. And you can't install Firefox themes on it. But you can install themes. The default extensions Icecat ships with include GNU LibreJS and a bunch of extensions for making specific sites work with LibreJS. You can disable LibreJS and all the related and use Ublock Origin (and possibly NoScript) instead; it is just an example of problems less computer-skilled people will have with Guix.

Guix does have ungoogled-chromium available (guix install ungoogled-chromium) and that one seems to work more like you'd expect.

Conclusion and verdict

If you are a die-hard free software enthusiast and you are willing to learn an entirely new operating system then Guix is for you. If you just want to browse Facebook and look at cat videos and/or play games then it's definitively not for you.

We personally find Guix approach to package-management fresh, interesting, innovative and exciting. The GNU gang are trying new things and that's cool. It does mean that much of the experience you may have from managing distributions like Ubuntu and Fedora is void; learning how Guix does things is somewhat like learning to use an entirely new operating system. A few things will be the same or similar, many things won't.

Where to acquire the technology


  1. Many people actually refer to Ethernet cables as Wifi-cables. No-no asking me why, I do not know.
  2. Guix manual on Services
  3. GNU Guix Reference Manual


Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.