Good day Crafters,
As everyone knows, Guix is derived from NixOS, but what keeps people from jumping ship from Guix to NixOS? Lets go over the pros and cons of each!
Guix:
Pros
Libre software collection - can view and modify every program.
Emacs emphasis - Most of the Guix people I see use Emacs, so if you like Emacs, Guix is definitely for you
Guile - Guile is cool, but I don’t know much about it other than that’s what Guix is written in. But by that same token, Guix has a uniformity about it in regards to it’s Guile usage, so it is easy to write things for the system and to integrate other packages using Guile into it.
Shepherd - Also written in Guile, the service manager. If you are opposed to the total domination of systemd in Linux, Shephard is a good one to try out. Or even if you’re ambivalent regarding systemd, giving Shephard a try should on your list. If you’re positiviely into systemd, like say, for writing service scripts for NixOS or $Distro, I could see adjusting to Shepherd could be difficult at first. Furthermore, Shepherd hasn’t been ported to any other system, unlike say… OpenRC with Alpine and Gentoo and others, or runit with Void and whatnot.
Rolling system: With “guix pull” and “sudo guix system reconfigure $CONFIGFILE” it is easy to keep your system up to date. With NixOS flakes, there are myriads of ways to do so, but usually I do the following commands - “nix flake update” → “sudo su” → “nixos-rebuild boot --flake flake.nix”, then reboot into the new system with presumably a newer kernel and programs. I’ve tried other rolling systems as well, but forgot the commands to upgrade them, lol. In any case, what I am trying to say is that it is virtually effortless to keep Guix up to date!
System control: Both NixOS and Guix are for power users, but Guix goes one step further with the uniformity of Guile in the system as mentioned above.
In conclusion regarding the pros of Guix, I would like to state that they’re numerous and that Guix has a very slow evolutionary process compared to the likes of NixOS and other rolling systems. But this slow evolutionary process could be compared to the likes of FreeBSD or Debian, and I imagine that if you’re not looking for the latest and greatest all the time, it could work for you.
Now for the cons.
Cons:
Outdated packages - Yup, other than the kernel it seems, most of the packages found in the standard Guix repo are a bit behind compared to NixOS unstable/rolling or even regular stable. So if you need features of $PACKAGE(s) then you might be waiting a while in Guix.
Guix pull/reconfigure takes forever - Yeah, system upgrades can indeed take a while! Grab a cup of tea or coffee or something while you wait. Not always a bad thing, but a bit annoying for us who want a upgraded system here and now lol.
NonGuix and kernel compilation - Same as the above really, if you use NonGuix, be prepared for your system to compile the kernel on first pull/reconfigure. So… yeah.
Prevalence of all things GNOME/GTK - I don’t really care for GNOME myself, I would prefer to use Plasma or Cinnamon. MATE is fine for what it is but still feels “non-modern”. This is a very subjective thing so I won’t count it as a real con though.
Guix development on mailing lists and IRC - I don’t have a problem with either of these as development platforms, but I can see how it might turn off people. Still better than Discord at least, lol.
Bordeaux and CI Guix substitute servers are sometimes down/slow - Infrastructure problems, I totally get it. I hope they get a huge grant sometime to pay for like a thousand servers.
Guix as a server host OS option - Not really under their control, just wish Guix was available at lots of places for hosting! So not really a con either, just an observation. Not like NixOS has a lot of places either, though.
I’d say those are the cons of using Guix, but some of those can be easily remedied! With Guix, for newer packages, you can use Nix if you want or Flatpak. In regards to Window Managers, they have been integrating Plasma into base recently, so yeah.
Now for NixOS pros and cons.
Pros:
Updated packages - if you follow rolling on NixOS, you usually have the absolute newest packages easily.
ZFS/bcachefs support: Guix might actually have this, I don’t know…
No kernel compilation unless you want to: Self-explanatory, but really same for Guix unless you use NonGuix, unless there’s a way to get substitute non-libre kernels lol.
Bigger community: Pro and con really…I don’t think I would have to go much into this one, we have a nice big community here! Y’all are the best!
More available options for services: Kinda a big deal for me anyway… like I can get wordpress and an ircd very easily in NixOS. With Guix I’d have to go to Docker for all that…
Now for the cons:
Cons:
Bigger community - A bigger community can also lead to bigger disenfranchisement of certain community members sometimes, their voices might be heard. This isn’t a good thing.
Documentation is all the place: Yup. Finding good docs for NixOS involves lots of searching and trial and error…
Things break here and there: If you’re on a rolling flake like I am, some programs you need can break every now and again, not a good look. Whereas with Guix, since it evolves a lot slower, less chance of stuff breaking…
Everything is always up in the air: By that I mean that there’s a lot of feeling of “chaos” in NixOS, that things constantly change in regards how NixOS should be governed, how it should be used, who should use it etc. Guix has a more defined purpose.
So those are my thoughts on NixOS vs Guix. I believe Guix is the better choice overall despite using NixOS(Mostly for gaming). Take the pitchforks down, I’m only here for polite discussion! I think in the future I will probably switch all my machines to Guix, what are y’alls thoughts on all this?