guix is a really interesting linux distribution, which sets itself
apart from other operating systems with it's package manager by the same
name.

tl;dr 8/10 great distro

Good about guix:

  1. Channels
  2. Declarative system/home management

Hard about guix:

  1. Lisp
  2. Guix

Really it has three different levels to it's system management

  1. System
  2. Home
  3. Ad-hoc shell and package installs

Guix can manage the whole system, from /etc to ~/.config. And not just
"manage" by putting some files there, but my keeping track of them in a
config file managed by the user. To keep the system and the config in
sync just apply the config again.

If used on a foreign distro guix home and guix install can manage
packages without conflicting with the main distro's files. It keeps
everything to the home folder.

This makes the "declarative" aspect of it really good. It makes your
system into "code", which can be debugged and shared and saved. I'd
compare it to docker/k8s/helm/GitOps in a way, where we've moved on from
installing files and into doing containers to be able to reproduce the
environment more easily.

For better or worse though, it is a whole different way to think about
the system. This new thinking model coupled with an unusual language for
me (lisp) meant that using guix was like learning linux again for the
first time. Not a lot of knowledge transferred over, and guix does a lot
of stuff differently. In addition, it's a very nieche operating system
meaning that search engines could not be as helpful as they'd be on
other distros. And while the community really is great and helpful, it's
limited in how much time and knowledge they have to help with every
obscure issue you'd have.

Guix channels are just plain great. It is ridiculously easy to set up
your own repository with custom packages which are kind of half-assed
and probably shouldn't be up streamed, or custom services, or just
utility functions.

In addition, guix makes it really easy to make custom packages, with a
lot of build styles and a lot of packages packaged to copy from.

One last mention to shepherd, guix's service manager and init system.
Once you get over it's lisp-ness it's pretty good. It supports
dependency management, generating graphs, user services, one shot, and
cron services. It's really feature full compared to runit which I have
used before. The downside is that services take a lot more lines of code
to configure, but as long as it's kept simple it's manageable, and a lot
is built into shepherd.