Boot fails on ustable channel

I have an old Dell XPS 13 laptop with NixOS as its only OS. I haven’t used it in a while, and after that latest update it fails to boot. After selecting the latest generation in systemd-boot it shows the message EFI sub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path, and nothing happens after that. What is more bizarre is that the previous generations also have stopped booting.

I’ve tried the following:

  • Setting most of the kernel cmd arguments from this page (without any effect)
  • Booting from an installation media, mounting system disks to /mnt/ and running NIXOS_INSTALL_BOOTLOADER=1 /nix/var/nix/profiles/system/bin/switch-to-configuration boot command (no help)
  • Running nixos-install worked! It created a new generation which has booted successfully

However, running nixos-rebuild switch --upgrade from the running system resulted in the same broken boot state. Afrer pocking around, I’ve found that if I run nixos-install right after nixos-rebuild switch, everything works fine.

I spotted a difference between generation labels created by nixos-install and nixos-rebuild switch:
The former says it’s NixOS 22.11.22…, while the latter creates NixOS 23.05pre…. After that, I switched from the unstable channel to the stable one, and now it all works fine.

The last generation that worked was created on 2022-12-02 with the label NixOS 23.05pre430779.e76c78d2068, and the broken one was on 2023-02-02 NixOS 450086.e1e1b192c1a, if that’s any help.

1 Like