Subject: bug#64196: Can't boot due to discrepancy between reconfigure and init

From: Csepp <[email-masked]>
Date: Tue, 20 Jun 2023 20:38:58 +0200

I'm trying to move my installation from /dev/sda to /dev/sdb, I created
the file system and changed the bootloader config in my operating-system
definition to point to /dev/sdb and the file-system to use the correct
UUID (previously it was using a label).
First I tried to simply reconfigure my running system and then taking a
BTRFS snapshot and copying that over the /dev/sdb1, but that failed.
The exact error was GRUB not being able to find a file system with a
given UUID, which matched the UUID of /dev/sda1.  This error happened
before GRUB loaded any of its modules, so I was dropped into a rescue
shell.
I thought this might be related to subvolumes, maybe I originally used
the wrong config and the updated config was written to a different
subvolume and GRUB doesn't recognize the default subvolume ID option on
the BTRFS partition.
I think this is a fairly critical error.

The error doesn't manifest when I run guix system init with the same
config, so there is some (possibly un(der)documented) difference between
guix system reconfigure and guix system init that makes the former rely
on the state of the running system in a way that doesn't take into
account the new configuration.

Is this intended behaviour for some reason?