I really want to like Guix; on the surface it seems very interesting. I’ve been messing around with an installation on my old ThinkPad, but trying to learn anything about it- even as a long time Linux user- is making my head spin. Are there any resources other than the dense manuals on the GNU web pages that aren’t from System Crafters? The biggest questions I have so far:
What happens when a package is not available in Guix? How can I install software from source files? If I wanted non-free software, like Steam, what is the best way to go about it?
Guix is a Domain-Specific Language based almost entirely on Guile Scheme, the official language for GNU extensions. The best way to learn Guix is to read and study the source code as well as understanding how Guile Scheme functions under the hood. I recommend learning the basics of Scheme first before tackling Guix as well as understanding the concept of Data as code. Just like with Nix, the Guix language is most likely going be the biggest hurdle, but it is infinitely rewarding once you start getting comfortable with it.
I recommend always keeping a git checkout of upstream Guix and take time to read the source code and try to understand how everything fits together. Mainly, you’re looking at two subdirectories:
guix/
andgnu/
.gnu/
defines all the package/services data as code. The best way to get comfortable with guix is to start at the top with the basic package definition and try to copy what you see. The “Contributing” section of the Guix manual can tell you how to get set up with hacking on Guix. In my experience, making a package in Guix was the easiest part since there’s so many other package definitions you could template from. From here you want to learn about G-expressions which is the way Guix is able to use build code efficiently.guix/
is the actual project’s code itself and virtually all top-level procedures are documented. This is vastly harder to study but bit by bit you’ll understand how the Guix language was designed.The Guix manual is very helpful but if you need clarification you should visit the Guix IRC channel on the Libera network. There’s almost always a maintainer or helpful community members to answer your questions. But my main advice is to Read the source code and experiment with guix. Unlike Nix, everything in Guix is plainly readable and tied all together.
You have to package it yourself, you can do this easily with Guix channels (what essentially is a more sophisticated package repository) that you can host yourself. You can also send patches upstream (via git send-email) to include your package in Guix proper. The power of Guix is in the freedom it provides you, but you have to harness it first.
Not use Guix. Use nonguix which has the full linux kernel, proprietary drivers and Steam.Wow, thank you for the detailed response. I’m looking into nonguix as well now; this thing’s wifi card is predictably uncooperative, but as a pleasant surprise the rest of the system is libre-compatible. Old TPs stay winning. I was hoping there was something closer to…I guess a crash course on what this system is and how to use it day-to-day, but it looks like I’m going to have to get over it and dive in myself. I’m no stranger to hacking around, I’m just impatient, lol.
day-to-day management would involve also learning about
guix home
which is analogous to Nix’s home manager. Don’t be too afraid of the Guix manual and always make sure you’re using the latest one.If you seriously want to use Guix you basically have to become a contributor since the project is still in its infancy (Nix is over 20 years old by comparison and only recently got popular). I recommend subscribing to the Guix-devel and Guix-help mailing lists as well. Guix is highly rewarding since it’s a vision into a reproducible, libre future that has never been tried before in human history but if you want to use an immutable system on a production machine I’d recommend Nix.
Agreed! This is the appealing part. I see the concept; I just need to get familiar. This is also why I am tinkering on a laptop and not my workstation (yet). It will also give me an excuse to learn more Lisp which I have been meaning to do for years.