An Analysis on GNU Guix

A short description of the GNU Guix system distribution.

Guix is an advanced system distribution with easy rollbacks, reproducible configuration, isolated shell environments, and more. It is based on the NixOS system. I have been using it close to two years now, and even though it was a rough start at first, I’ve been running it on the same install since last winter.

Now, pardon my lack of knowledge, but I’m just a user, not a sysadmin or a developer or any of that. I like to tinker, but I don’t spend a whole lot of time figuring out the inner workings of things. So here are some features of the system:

Userland

  • Many options for desktops
    • Many desktop environments included, such as Gnome, Xfce, LXQt, MATE and Enlightenment.
    • Window managers include awesome, i3, cwm, dwm and EXWM.
  • Over 26,000 free software packages
    • Software resides in separate /gnu/store folder with unique hash strings.
    • This prevents clobbering of packages that would ordinary be “strewn about” over the system.
    • Ability to install Flatpak or Nix for even more packages.
  • Separate home environment for /home, which can be declared to install user-specific packages and manage dotfiles and other configuration files easily.
    • Keeps your home well organized and sane.
    • Prevents having to manually configure every file separately, instead you can declare this with one language (Guile Scheme) in the home environment’s configuration file.
    • Works both on the Guix system and on foreign distros by installing the guix package manager.
  • Ephemeral shells which are isolated instances with packages you can use to build and test software with. To quote the manual: “The purpose of ``guix shell’’ is to make it easy to create one-off software environments, without changing one’s profile. It is typically used to create development environments; it is also a convenient way to run applications without ‘polluting’ your profile.”

System Languages

  • Uses Guile Scheme for system configuration.
    • Guile Scheme is part of the Lisp family of programming languages.
    • Even the kernel is written in Guile (no systemd).
  • Comes with “batteries included” for package building and testing.
  • Supports a variety of other languages.

Package management

  • Easy to install and uninstall packages.
  • Can be chosen to be installed either per profile basis or via ``guix’’ which is a more “imperative” way.
  • Nix expands the potential catalogue up to 100,000 packages but might be tricky to get going first. Nothing too difficult though. Same principles still apply with unclobbering environment. Though it must be pointed out that it then “taints” the system with other licences that might not be GPL compatible.

Development

  • Supports Haskell, Python, Ruby, and various Lisp languages such as Common Lisp, variety of Schemes, Racket, and Clojure.
  • Packaging of software is fairly straightforward, though I have no personal experience other than glancing at the manual.
  • Emacs & Geiser = “The Perfect Setup” for Scheme hacking on Guix.

System

  • Can be declared entirely in a single configuration file, which is reproducible on other machines.
  • No systemd, supports variety of init systems.
  • Uses Libre-linux kernel.
    • Downside is that no proprietary hardware drivers are supported.
  • Additional “channels” can be added for more custom-built configurations.
  • Easy rollbacks to previous generations.
  • Garbage collection for removing redundant packages.

Overall

GNU Guix is a great operating system for systems tinkerers and crafters who want the freedom of a free operating system and flexibility to customize one’s own system, home, desktop and packages right down to their individual hairs.

It comes with a variety of technologies and environments to choose from, with the cost of unsupported proprietary hardware/software. The amount of packages might be smaller compared to many other mainstream Linux systems, but the appeal with Guix is not its aim at being the next Ubuntu, but to act as a “liberating” system from the commercial ones.

It also doesn’t aim to please the complete noob, though if you’re passionate enough and actually take the time to learn it, it shouldn’t be too difficult to get up and running. The difficulty comes perhaps more explicit when they are trying to do things the traditional Linux way.

People are always welcome to contribute to the system, by reporting bugs, packaging software, or writing extensions. As I have no toe dipped in any real-world development, I hope someone will do just that, because I have other interests that take the brunt of my time.

I have been using it for a year and a half now, and it has worked well for me, aside from few tricky problems I had not so much to do with the system itself, but apps. I haven’t had a single occasion where I had to rollback to a previous configuration.

When you combine all of the mentioned with the GNU Emacs, things get real interesting. Because then you can also get EXWM, the window manager. I would advise any, and all people reading this to check it out. It’s not just a text editor, it’s entire ecosystem of productivity, and more.

All in all, GNU Guix is one kickass libre-system!

L.