I looked at your improvement suggestion. One issue I'm thinking about: How to handle the return codes, since the fsck.vfat returns slightly different error codes than fsck.ext. For example fsck.vfat error code 2 is a usage error, which would cause an infinite reboot cycle if the passed device is misspelled or something. The message corrected errors; rebooting could cause people quite some frustration I can imagine, when the problem is something that is likely a trivial typo or something.
Then there is the label and uuid detection logic for every file-system that needs to be implemented. I'm wondering if it can be refactored, a quick late night and untested implementation for btrfs suggests that there is a lot of code repetition involved, I guess the same will be true for vfat. I'll have to check if there are any tests for this anywhere or write some before I mess with this "core piece" of guix. Ludo: Is there any way we can speed up the installer system tests? :)