A pragmatist wanting to try out Guix

I’m absolutely sold on the concept of functional package management.

The process of “installing and configuring stuff” neatly fits the definition of a function, and I can’t think of any reason why such a critical function should NOT be pure, i.e. why it’s output (the state of the OS), should not be determined only by it’s inputs (set of dependencies and config).

I’m also a pragmatist, I sometimes chose a technology that I consider inferior, because it has more short or medium term benefits, lower investment, risk, cost of adoption, etc.

My “inner pragmatist” had me wait almost a decade from my discovery of NixOS, to trying it out, and I recently just did that: I setup a NixOS raspberry-pi with half a dozen of services, and it went well enough that I consider NixOS meets my “pragmatist” expectations.

One aspect of Nix makes me pessimistic: the Nix language. I think inventing a custom language for a package manager is a liability. Package management absolutely deserves a DSL (domain specific language), but any dialect of the List family is a superior choice.

The advantage of having Guile based DSL is a huge one IMO.

However I expect Guix to have a higher cost, at least in the short term, now I’m trying to get a feeling of “how much”, so I set out searching for how I could replicate my NixOS experiment, to see how much harder it is with Guix.

For context, my NixOS raspberry-pi config has the following services: librespot, zigbee2mqtt, home-assistant, mpd, it uses ALSA for mpd and librespot.

I’d appreciate any pointers on how I can configure this with Guix.

Already making the leap to Guix :grimacing:

It can be finicky sometimes!

I think your biggest issue will be minimal substitutes (pre-built downloadable packages) available for the Pi.
I think we have a few community members using Guix on a Pi, but it might require building everything yourself. Not sure if NixOS has the same problem.

Start by reading the installation manual or finding someone else’s config who uses Guix on Pi.
Get a base install that you can work with, and then start reading the info manuals for all the services you need.

Then you may need to port services (I didn’t find zigbee2mqtt in Guix) that don’t exist. You can check here too to see if any users have packaged things you need in their personal channels