Benoit J - My mostly tech blog

Progress on my Guix yearly migration

2023-11-01


This is my first post since I started my Nix -> Guix migration.

TLDR: I had a basic system and home setup in 3 hours using my older configuration, but due to a kernel or grub bug, I lost 3 days. I found a workaround and now have a working system and home configuration for most things.

Some Issues and discovery

The first issue I had was a confusing one. And made me lost 3 days. In version 5.6 of both libre Linux and the Linux kernel, during boot, grub overlay no longer shows the password prompt to unlock the /boot partition. This issue is not found when using both kernels at version 5.0.

It took me 3 days to realize it was waiting for my input, but not showing the prompt. I believe I was running 5.6 on nix with the same kind of setup without any issues. Looks like a Guix specific issue at this point, or a problem found in Guix’s version of some software (Grub?). Something to follow-up on later.

Another issue happened while restoring my restic backup, I found out Guix’s version was really behind and incompatible with the backup created on nix. I ended up enabling nix-service-type and get restic with nix-shell -p restic. Also something to follow-up on.

Couple of interesting findings:

My current state

I have a working system for many of the core things. I have a working desktop environment with slim, my custom dwm and related packages, and most of my core tools.

Hardware wise, I’ve got a “real” Linux kernel to get my WiFi working and recent ucode CPU patches. Also my bluetooth setup is functional, and the cups print server working.

My software safety net is setup with nix-service-type.

I have a flake like pinned channel setup pulled from RDE’s setup.

My system configuration and home configuration are setup right, and many software are configured by service types:

With nix’s restic, I was able to restore my home folder.

And finally, with nix again, I loaded Hugo and was able to write this post as Guix does not have Hugo.

You can look at my dotfiles and channel repos.

Next steps

My current main focus is to stabilize my system. I did a lot, but this left a big pile of messy code.

Couple of things to fix, cleanup and complete:

This should not take me more than 1 week. Need to time box this. I don’t need perfect, I need better.

Once I’m done with stabilization (and only then), I’ll improve my setup.

My first improvement will be related to my coding setup. Guile scheme, Clojure, Java, Node/JS, diagram tools.

Then a second improvement is to update my setup for contributing to Guix, especially test the email patch setup, a local clone of guix, the REPL.

Then it’ll be time to take another look at what 3rd party channel offers and improve my configuration.