I have been setting up a guix system. I have been trying to upgrade the system with sudo -E guix system reconfigure /home/me/system.scm.
This seems to work fine. It reports
activating system...
making '/var/guix/profiles/system-30-link' the current system...
I run guix system describe and it shows that I’m on generation 30. I run ls -l /run/current-system and I see it points to /var/guix/profiles/system-30-link. I have new services running and I can see them in herd status.
However, if I reboot guix system describe shows Generation 30 but when I do ls -l /run/current-system it point to the same file that /var/guix/profiles/system-7-link does. The new services don’t show up in herd status.
The gnu.system in my main entry in /boot/grub/grub.cfg is the same file that my system-30-link points to.
I can’t figure out why my newest generation won’t boot.
At one point before all of this I did do system reconfigure as root. Would that have done it? How do you fix it?
Yeah guix system list-generations lists them as you say. I did the guix system switch-generation 30 command and can see:
building /gnu/store/w0qk3nl2ck5h67wxxds7cp94zzr6js3s-grub.cfg.drv…
building /gnu/store/vd6nappx6xh7mxacbh87jprapmr4z68h-install-bootloader.scm.drv…
switched from generation 42 to 30
I can confirm that the files seem to point to the correct places like before but when I reboot, the system describe shows 30 but the current system is pointing to 7:
jesse@homelab ~$ sudo guix system describe
Password:
Generation 30 Aug 12 2025 10:08:22 (current)
file name: /var/guix/profiles/system-30-link
canonical file name: /gnu/store/y5xbqa5dw7bikw848ghnc0bnp98z9adk-system
label: GNU with Linux 6.15.6
bootloader: grub-efi
root device: label: "system-root"
kernel: /gnu/store/fdmzii31wy5lxs80hyq9ji1pcyzc1k0h-linux-6.15.6/bzImage
channels:
guix:
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 784c15a35ecba44b51016df71156a3993de41500
nonguix:
repository URL: https://gitlab.com/nonguix/nonguix
branch: master
commit: aff3b005f46081cbd111da19e64f8ae07b5b464f
configuration file: /gnu/store/jibrf5d0z97x3hngl76f6bpsrhc6476a-configuration.scm
jesse@homelab ~$ ls -la /run/current-system
lrwxrwxrwx 1 root root 50 Aug 14 08:52 /run/current-system -> /gnu/store/hkshsqddjpkpg0dr19kw1qz535g7ya0w-system
jesse@homelab ~$ ls -la /var/guix/profiles/system-7-link
lrwxrwxrwx 1 root root 50 Aug 7 07:11 /var/guix/profiles/system-7-link -> /gnu/store/hkshsqddjpkpg0dr19kw1qz535g7ya0w-system
jesse@homelab ~$ ls -la /var/guix/profiles/system-30-link
lrwxrwxrwx 1 root root 50 Aug 12 10:08 /var/guix/profiles/system-30-link -> /gnu/store/y5xbqa5dw7bikw848ghnc0bnp98z9adk-system
Some additional context:
I’m trying to get rootless podman going so I need to set ranges in subuid and subgid.
I do see this when I do sudo guix system reconfigure system.scm:
The following derivation will be built:
/gnu/store/9pnd1m9k73ywkssk0yjcar7ndwqgy62q-grub.cfg.drv
building /gnu/store/9pnd1m9k73ywkssk0yjcar7ndwqgy62q-grub.cfg.drv...
#t/gnu/store/x10qlfwbi5wj22y4gbivcb9pqfhywr39-system
/gnu/store/84ppn40avs4b3xiwn4144mlm4v0z28hv-grub.cfg
activating system...
making '/var/guix/profiles/system-31-link' the current system...
populating /etc from /gnu/store/pfwv8lddz58xdncvq5b4xiqxiljai062-etc...
setting up privileged programs in '/run/privileged/bin'...
#<&subordinate-id-overflow-error range: #<<subid-range> name: "jesse" start: 100700 count: 65536>>
guix system: warning: failed to activate '/gnu/store/knnp8hms3pwakb00c2ql1dq4n39sjv67-activate-service.scm'
The following derivation will be built:
/gnu/store/h7vsiwpywq957zj6fwi9dcj4vwm5aywa-install-bootloader.scm.drv
building /gnu/store/h7vsiwpywq957zj6fwi9dcj4vwm5aywa-install-bootloader.scm.drv...
guix system: bootloader successfully installed on '(/boot/efi)'
The failed to activate part seems particularly problematic.
I do have this section for setting up the subuid and subgids:
I’ve tried a number of ways of setting this in the rootless-podman servce, in an extension of the etc-service, this, and even removing all subuid/subgid config all together. I still get this failed to activate message.
Thanks for the snippets, I didn’t look to see what was in the system-<gen>-link directory. That is really cool. The second one worked there for diffing. The first one complained that -f was unrecognized.
My diffs look to be most of what I changed for the podman stuff.
Should I go back to generation 7 and then add a little in at a time? Or could I change what I currently have to be commented out to be functionally the same as 7 and change things from there generation by generation?
Well I think I have it working. I’m not going to claim that I totally understand it.
So this is my first system install and I had a lot of trouble in the beginning because the HP Z440 does this really cool thing where it doesn’t persist efi entries. So I found that I had to have my boot partition laid out in the default place that the UEFI firmware looks. I have /dev/sda1 mounted to /boot and then I have /boot/EFI/BOOT/bootx64.efi.
I had a couple issues:
My bootloader field in my operation-system record was pointing to the wrong place.
you should not need to mark files in your /boot/EFI as an extra-special-file. it’s more likely that you’re getting your root profiles confused with your user’s profiles. your root user will have a separate set of system generation profiles. login via su - and see if it lists different generations for the system and /root profiles. occasionally, you’ll need to garbage collect these, as they share the same store, which will begin to inflate if the earlier profiles aren’t gc’d