Subject: bug#66102: guix system delete-generations ignores grub-configuration terminal-ouputs field setting

From: Maze <[email-masked]>
Date: Tue, 19 Sep 2023 22:12:52 +0800

I deleted old generations of my system today and I think I noticed an
incorrect behavior. In most cases this would be just a minor temporary
badness, maybe (just maybe) in the case of some exotic or ancient
hardware, a variant of the same issue could results in an unbootable
system.

At the end of a 'guix system delete-generations' command, the bootloader
setup is updated for the current system. However, in my case, the
setting defined by the terminal-outputs field of the
bootloader-configuration record of my system configuration is not taken
into account by this step. I use the console output of GRUB.

In the event it matters, I should mention that I have the filesystem on
an encrypted partition: I input the passphrase once at GRUB rescue
before the GRUB menu, then a second time when I'm prompted by the initrd.

How to reproduce, then workaround:

1. Reconfigure an operating system with something like:
(bootloader-configuration ...
                          (terminal-outputs '(console))
                          ...)

2. Reboot, you should see a non-graphical GRUB menu with a blue
background.

3. Delete some generations, for example by running:
guix system delete-generations 1..N
(with N some integer)

4. Reboot immediately without reconfiguring your system. If you see a
guixified graphical background for the GRUB menu, then this is the bug,
since it's not what's configured for the current system. This ought to
be the gfxterm output of GRUB.

5. Reconfigure your system:
guix system reconfigure /path/to/system.scm

6. Reboot, and check that you see a non-graphical blue background GRUB
menu again. Issue is worked around, presumably until the next time
generations are deleted.