- cross-posted to:
- linux@programming.dev
- programming@programming.dev
- cross-posted to:
- linux@programming.dev
- programming@programming.dev
Arch Linux was my distribution of choice for more than a decade. With its rolling-release model, minimal base, and the invaluable ArchWiki, it felt like the final distribution I would ever need.
My primary Linux machine is a dedicated home server, handling services like Home Assistant, local DNS, background jobs, and developer sandboxes. For a server running 24/7, long-term stability and maintainability are critical. Over years of incremental tweaks, configuration entropy inevitably crept in. System state became scattered across /etc, /usr, systemd service units, and package manager transactions. Whenever I made changes, I had to keep diligent notes about which files were edited, when, and why.
Recent events, such as the Arch Linux AUR security incidents (which I touched upon in my previous post on Caddy) and developments around Omarchy, prompted me to re-evaluate my setup. I wanted an operating system that was declarative, reproducible, and manageable entirely in code.
GNU Guix shares the same core architectural foundation as NixOS (functional package management, declarative configuration, and atomic rollbacks), but its design choices felt much more cohesive:
- Language (GNU Guile Scheme vs Nix DSL): Nix uses its own bespoke domain-specific language. Guix configurations are written entirely in GNU Guile, a general-purpose Scheme (Lisp). As an Emacs user accustomed to Emacs Lisp, Scheme felt familiar and expressive. Rather than learning a specialized configuration syntax, I could leverage a real programming language with first-class functions, macros, and modules.
- Init System (GNU Shepherd vs systemd): NixOS builds on systemd, while Guix System uses GNU Shepherd as its service manager. In Guix, Shepherd services are also defined in Guile Scheme. Everything from package recipes to system daemons to PID 1 shares a unified language and data model.
- Documentation: Guix’s documentation is remarkably cohesive. Even though some community tutorials can be dated, the official GNU Guix reference manual is consistent, comprehensive, and avoids the fragmented wiki landscape of Nix.
- Philosophy (GNU Libre Standards vs Pragmatism): NixOS takes a pragmatic stance, offering toggles for proprietary software and unfree drivers. GNU Guix strictly adheres to the GNU Free System Distribution Guidelines, shipping the Linux-libre kernel and free software exclusively by default.


I want to try out Guix in a way that’s easy. I have very little time, but when I have time that I am mentally well enough to do something technical , but not confident enough to do something important, I fuck around with different OSes in VMs.
Guix has been a bastard to play with. I can get an XFCE/Ratpoison env set up. Rebuilding Guix over wifi is such a fucking massive pain that my only sense of balance is that I keep hammering their services for gigabytes , so they’re suffering as much as me.
So, if I want to try using LXQT, the entire fucking thing doesn’t compile, and what’s worse, it downloads fucking EVERYTHING before trying to build properly, then crashing out, or , finishing building everything again and then having LXQT not launch on login. I just get a black screen.
I get that I should learn how to setup x whatever to make it run properly and understand what it is I’m doing. But like, I can learn a few things at a time, and I learn by doing and iterating. My feelings on the documentation is that GNUdocs are written by people who make a fuckload of assumptions on existing user knowledge, and even their ability to understand paradigms with no indicators. What I mean by this, is that it is akin to a map with no key or legend. There are different sections highlighted in different colours , but not explanation to what those colours are. And there is text that says “avoid the hinterlands, as they have hostile bandits. go for the blinterlands, they have fine ales and buxom wenches” BUT NOTHING TELLS ME WHICH COLOUR REFERS TO EITHER PLACE.
Compare and contrast the Mozilla documentation on web standards :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html
The Mozilla docs show examples of the things in action, the GNU ones (the bad ones, anyway) don’t have concrete examples or things to avoid. Just abstractions only.
Changing or installing different DEs was really easy on Fedora;
https://docs.fedoraproject.org/en-US/quick-docs/switching-desktop-environments/
sudo dnf install @kde-desktop-environmentTrying to do the same for a repeatable config.scm , WHICH IS THE ENTIRE FUCKING POINT OF GUIX, is a nightmare.
Here’s the focused in part of the info :
https://guix.gnu.org/manual/1.5.0/en/html_node/Desktop-Services.html
I remove xfce-desktop-service-type and add in lxqt-desktop-service-type , then run
sudo guix system reconfigure /etc/config.scm, after waiting for somewhere between 45 mins to an hour, the rebuild ends and I get a non-working option to select LXQT in login and have no fucking idea wtf to do. Fucking great.Or, it makes me wait 45mins before saying the SCM needed --allow-downgrades, or for me to waste gigabytes of space downloading the entire earth using guix pull.
I really want to go for GUIX for a few reasons : sensible, systemd free reproducible builds, a repo that seems an appropriate size with appropriate support, and not going for right wing software.
I can’t fucking do that if there is no looseness and “playability” factor to learn by doing. I don’t want to, and shouldn’t fucking read a book length manual to learn everything before I can do a few things that are very basic tasks or doing the central point of your software.
It’s like 1 hour before I go to bed when I’m fucking about with it. I don’t have the brainpower to bother doing that shit, and if I did, I wouldn’t be wasting it investigating alternate operating systems.
EDIT : If anyone knows of a good source of .scm configs I can fuck about with and tips on making use of cached stuff , I would really appreciate it.
EDIT2 : BTW, I am not the biggest fan of fedora for a few reasons, but I have to give it its due props. That functionality alongside archinstall’s easy setup let me try basically every fucking UI under the sun quite easily.
Here you go
https://paste.debian.net/hidden/665ab578
thanks? I haven’t read it all, but just to note, I’m looking for LXQT and not LXDE, but maybe I just need to replace the one line that says LXDE with LXQT then I can try something that whittles away everything else you have there.
You can install lxqt as a user; it does not need to be part of your system configuration
But I WANT it to be part of the system config. There is no point to what I want to maybe use this for if I have to do it per user.
Then just add it to the package list (along with the login manager of your choice) then add your login manager to the services.