NixOS boot loops when selecting recent generations

For context, below is the output of nixos-rebuild list-generations:

Generation  Build-date           NixOS version           Kernel  Configuration Revision  Specialisation  Current
222         2026-08-16 10:59:59  26.11.20260813.0e251e2  7.1.8   Unknown                 []              True
221         2026-08-15 19:57:12  26.11.20260813.0e251e2  7.1.8   Unknown                 []              False
220         2026-08-15 19:55:20  26.11.20260813.0e251e2  7.1.8   Unknown                 []              False
219         2026-08-12 09:25:58  26.11.20260810.2fcb964  7.1.8   Unknown                 []              False
218         2026-08-11 21:31:45  26.11.20260809.279b4a8  7.1.7   Unknown                 []              False
217         2026-08-10 19:45:25  26.11.20260807.f13ff45  7.1.7   Unknown                 []              False
216         2026-08-09 14:17:29  26.11.20260807.f13ff45  7.1.7   Unknown                 []              False
215         2026-08-07 17:06:20  26.11.20260805.b7c2ada  7.1.6   Unknown                 []              False
214         2026-08-07 12:48:41  26.11.20260805.b7c2ada  7.1.6   Unknown                 []              False

On all of my generations built on the 16th or 15th of August (220-222), I am not able to boot into them. Selecting their entries in the systemd-boot menu causes a black screen for several moments before restarting the boot process (showing the manufacturer logo and going back to systemd-boot).

Confusingly, selecting any other generation (219 and earlier) allows me to boot into my installation as intended. However, when I check the generations, it says I am on the most recent generation instead of the one I booted into.

My gut instinct was that there was something wrong with the hard links created by nix.settings.auto-optimise-store. Upon setting it to false and making a new generation (222), there was no change in the behavior and the earlier generations mentioned above booted into generation 222 as well.

I am not sure if it is an issue with the new kernel, since I am indeed able to boot into 219 (though it jumps to the latest entry). Any pointers or resources would be really appreciated…

Edit 1: Below is the output of nvd diff /nix/var/nix/profiles/system-{219,221}-link. I compared 219 to 221 because on 220, I tried to move the package pcsx2 to stable which generated a ton of extra libraries before deciding to remove it outright in 221.

<<< /nix/var/nix/profiles/system-219-link
>>> /nix/var/nix/profiles/system-221-link
Version changes:
[C.]  #001  abseil-cpp               20240722.2, 20260107.1 x2, 20260107.1-dev -> 20240722.2, 20260107.1 x3, 20260107.1-dev
[U.]  #002  at-spi2-core             2.60.4 x2, 2.60.4-dev -> 2.60.6 x2
[U.]  #003  audit                    4.2-lib x2 -> 4.2.1-lib x2
[U.]  #004  bcachefs-tools           1.38.8 -> 1.39.1
[U*]  #005  bluez                    5.86 x2 -> 5.87 x2
[C*]  #006  cups                     2.4.19, 2.4.19-dev, 2.4.19-lib x2, 2.4.19-man -> 2.4.19, 2.4.19-lib x2, 2.4.19-man
[C.]  #007  double-conversion        3.4.0, 3.4.0-dev -> 3.4.0
[C.]  #008  electron                 41.10.3, 43.2.0 -> 42.7.1, 43.2.0
[C.]  #009  electron-unwrapped       41.10.3, 43.2.0 -> 42.7.1, 43.2.0
[U*]  #010  fastfetch                2.66.0, 2.66.0-man -> 2.67.0, 2.67.0-man
[U.]  #011  fastfetch-unwrapped      2.66.0, 2.66.0-man -> 2.67.0, 2.67.0-man
[C.]  #012  ffmpeg                   4.4.8-data, 4.4.8-lib, 7.1.5-data, 7.1.5-lib, 8.1.2-data, 8.1.2-lib -> 4.4.8-data, 4.4.8-lib, 7.1.5-data, 7.1.5-lib, 9.0-data, 9.0-lib
[C.]  #013  ffmpeg-headless          8.1.2-bin, 8.1.2-data x2, 8.1.2-lib x2 -> 8.1.2-data x2, 8.1.2-lib x2, 9.0-bin, 9.0-data x2, 9.0-lib x2
[U.]  #014  fmt                      12.1.0 -> 12.2.0
[U*]  #015  freetube                 0.25.1 -> 0.25.2
[C.]  #016  fribidi                  1.0.16 x2, 1.0.16-dev -> 1.0.16 x2
[U.]  #017  gdk-pixbuf               2.44.6 x2, 2.44.6-dev, 2.44.6-man -> 2.44.7 x2, 2.44.7-man
[U.]  #018  gjs                      1.88.0 -> 1.88.1
[U*]  #019  glib                     2.88.1 x2, 2.88.1-bin, 2.88.1-dev -> 2.88.3 x2, 2.88.3-bin, 2.88.3-dev
[U.]  #020  glslang                  16.3.0 -> 16.4.0
[C.]  #021  gmp-with-cxx             6.3.0 x4, 6.3.0-dev -> 6.3.0 x4
[C.]  #022  graphite2                1.3.15 x2, 1.3.15-dev -> 1.3.15 x2
[C.]  #023  gtk+3                    3.24.52 x2, 3.24.52-dev -> 3.24.52 x2
[C.]  #024  harfbuzz                 13.2.1 x2, 13.2.1-dev -> 13.2.1 x2
[U.]  #025  hwdata                   0.409 x2 -> 0.410 x2
[C.]  #026  icu4c                    77.1, 78.3 x2, 78.3-dev -> 77.1, 78.3 x2
[U.]  #027  intel-gmmlib             22.10.0 -> 22.10.1
[U.]  #028  lerc                     4.1.1 x2, 4.1.1-dev -> 4.2.0 x2
[U.]  #029  libadwaita               1.9.2 x2 -> 1.9.3 x2
[C.]  #030  libdatrie                2019-12-20, 2019-12-20-bin, 2019-12-20-dev, 2019-12-20-lib x2 -> 2019-12-20-lib x2
[C.]  #031  libepoxy                 1.5.10 x2, 1.5.10-dev -> 1.5.10 x2
[C.]  #032  libglvnd                 1.7.0 x2, 1.7.0-dev -> 1.7.0 x2
[C.]  #033  libice                   1.1.2, 1.1.2-dev -> 1.1.2
[C.]  #034  libjpeg-turbo            3.1.4.1 x2, 3.1.4.1-bin, 3.1.4.1-dev, 3.1.4.1-man -> 3.1.4.1 x2, 3.1.4.1-bin, 3.1.4.1-man
[U.]  #035  libmpg123                1.33.6 x2, 1.33.6-man -> 1.33.7 x2, 1.33.7-man
[C.]  #036  libproxy                 0.5.12, 0.5.12-dev -> 0.5.12
[U.]  #037  libqtpas                 4.4-0 -> 4.8-0
[U.]  #038  libraqm                  0.10.5 -> 0.11.0
[C.]  #039  libselinux               3.10 x2, 3.10-bin, 3.10-dev -> 3.10 x2
[C.]  #040  libsm                    1.2.6, 1.2.6-dev -> 1.2.6
[U.]  #041  libssh                   0.12.1 x2 -> 0.12.2 x2
[C.]  #042  libthai                  0.1.30 x2, 0.1.30-dev -> 0.1.30 x2
[C.]  #043  libtiff                  4.7.2 x2, 4.7.2-bin, 4.7.2-dev, 4.7.2-man -> 4.7.2 x2, 4.7.2-bin, 4.7.2-man
[C.]  #044  liburcu                  0.15.6, 0.15.6-dev -> 0.15.6
[U.]  #045  libva                    2.24.0 x2 -> 2.24.1 x2
[U.]  #046  libva-minimal            2.24.0 x2 -> 2.24.1 x2
[C.]  #047  libxcb-cursor            0.1.6, 0.1.6-dev -> 0.1.6
[C.]  #048  libxcb-image             0.4.1, 0.4.1-dev -> 0.4.1
[C.]  #049  libxcb-keysyms           0.4.1 x2, 0.4.1-dev -> 0.4.1 x2
[C.]  #050  libxcb-render-util       0.3.10, 0.3.10-dev -> 0.3.10
[C.]  #051  libxcb-util              0.4.1, 0.4.1-dev -> 0.4.1
[C.]  #052  libxcb-wm                0.4.2, 0.4.2-dev -> 0.4.2
[C.]  #053  libxcomposite            0.4.7 x2, 0.4.7-dev -> 0.4.7 x2
[C.]  #054  libxcursor               1.2.3 x2, 1.2.3-dev -> 1.2.3 x2
[C.]  #055  libxdamage               1.1.7 x2, 1.1.7-dev -> 1.1.7 x2
[C.]  #056  libxdmcp                 1.1.5 x2, 1.1.5-dev -> 1.1.5 x2
[U.]  #057  libxfce4windowing        4.20.6 -> 4.20.7
[C.]  #058  libxfixes                6.0.2 x2, 6.0.2-dev -> 6.0.2 x2
[U.]  #059  libxfont_2               2.0.8 -> 2.0.9
[C.]  #060  libxft                   2.3.9 x2, 2.3.9-dev -> 2.3.9 x2
[C.]  #061  libxi                    1.8.3 x2, 1.8.3-dev, 1.8.3-man -> 1.8.3 x2, 1.8.3-man
[C.]  #062  libxinerama              1.1.6 x2, 1.1.6-dev -> 1.1.6 x2
[C.]  #063  libxkbcommon             1.13.2 x2, 1.13.2-dev x2 -> 1.13.2 x2, 1.13.2-dev
[C.]  #064  libxml2                  2.15.3 x3, 2.15.3-bin, 2.15.3-dev -> 2.15.3 x3
[C.]  #065  libxrandr                1.5.5 x2, 1.5.5-dev -> 1.5.5 x2
[C.]  #066  libxslt                  1.1.45 x2, 1.1.45-bin, 1.1.45-dev -> 1.1.45 x2
[U.]  #067  linux-firmware           20260622-zstd -> 20260810-zstd
[U.]  #068  llhttp                   9.4.2 -> 9.4.3
[C.]  #069  lttng-ust                2.15.1 x2, 2.15.1-bin, 2.15.1-dev -> 2.15.1 x2
[C.]  #070  md4c                     0.5.3, 0.5.3-dev, 0.5.3-lib -> 0.5.3-lib
[U.]  #071  mpg123                   1.33.6 x2 -> 1.33.7 x2
[U.]  #072  nixos-system-tpt14g5     26.11.20260810.2fcb964 -> 26.11.20260813.0e251e2
[C.]  #073  openssl                  3.6.3 x2, 3.6.3-bin, 3.6.3-dev, 3.6.3-man -> 3.6.3 x2, 3.6.3-bin, 3.6.3-man
[C.]  #074  pango                    1.57.1 x2, 1.57.1-bin, 1.57.1-dev -> 1.57.1 x2, 1.57.1-bin
[C.]  #075  pcre2                    10.47 x2, 10.47-bin, 10.47-dev -> 10.47 x2
[U.]  #076  publicsuffix-list        0-unstable-2026-06-24 x2 -> 0-unstable-2026-07-25 x2
[U*]  #077  python3                  3.14.6 x2, 3.14.6-env x5 -> 3.14.7 x2, 3.14.7-env x5
[U*]  #078  python3.14               3.14.6-doc -> 3.14.7-doc
[U.]  #079  python3.14-cryptography  49.0.0 -> 50.0.0
[U.]  #080  python3.14-mutagen       1.47.0 -> 1.48.1
[C.]  #081  qtbase                   5.15.19, 5.15.19-bin, 6.11.1, 6.11.1-dev, 6.11.1-only-plugins-qml -> 5.15.19, 5.15.19-bin, 6.11.1, 6.11.1-only-plugins-qml
[C.]  #082  qtdeclarative            5.15.19, 5.15.19-bin, 6.11.1, 6.11.1-dev -> 5.15.19, 5.15.19-bin, 6.11.1
[C.]  #083  qtshadertools            6.11.1, 6.11.1-dev -> 6.11.1
[C.]  #084  qtsvg                    5.15.19, 5.15.19-bin, 6.11.1, 6.11.1-dev -> 5.15.19, 5.15.19-bin, 6.11.1
[U.]  #085  resvg                    0.48.0 -> 0.48.1
[C.]  #086  sdl3                     3.4.12-lib x3 -> 3.4.12-lib x2
[U*]  #087  shadow                   4.19.4, 4.19.4-man, 4.19.4-su -> 4.20.0, 4.20.0-man, 4.20.0-su
[C.]  #088  sqlite                   3.53.3 x2, 3.53.3-bin, 3.53.3-dev -> 3.53.3 x2
[C*]  #089  systemd                  <none>, 261.1 x3, 261.1-dev, 261.1-man -> <none>, 261.1 x2, 261.1-man
[U.]  #090  tpm2-tss                 4.1.3 x2 -> 4.2.0 x2
[U.]  #091  tuigreet                 0.9.1 -> 0.11.0
[C*]  #092  util-linux               2.42.2, 2.42.2-bin, 2.42.2-dev, 2.42.2-lastlog, 2.42.2-lib, 2.42.2-login, 2.42.2-man, 2.42.2-mount, 2.42.2-swap -> 2.42.2-bin, 2.42.2-lastlog, 2.42.2-lib, 2.42.2-login, 2.42.2-man, 2.42.2-mount, 2.42.2-swap
[U.]  #093  vulkan-loader            1.4.350.0 x2, 1.4.350.0-dev -> 1.4.357.0 x2
[C.]  #094  wayland                  1.26.0 x2, 1.26.0-dev x2, 1.26.0-man -> 1.26.0 x2, 1.26.0-dev, 1.26.0-man
[C.]  #095  wayland-protocols        1.49 x2 -> 1.49
[C.]  #096  wayland-scanner          1.26.0 x2, 1.26.0-bin, 1.26.0-dev -> 1.26.0
[U.]  #097  wildmidi                 0.4.6 x2 -> 0.5.0 x2
[C*]  #098  xz                       5.8.3 x2, 5.8.3-bin, 5.8.3-dev, 5.8.3-doc, 5.8.3-man -> 5.8.3 x2, 5.8.3-bin, 5.8.3-doc, 5.8.3-man
[C*]  #099  zstd                     1.5.7 x2, 1.5.7-bin, 1.5.7-dev, 1.5.7-man -> 1.5.7 x2, 1.5.7-bin, 1.5.7-man
[U.]  #100  zxing-cpp                3.0.2 x2 -> 3.1.1 x2
Removed packages:
[R.]  #01  KDDockWidgets            2.4.1
[R.]  #02  cubeb                    0-unstable-2026-07-25-lib
[R.]  #03  fix-qt-builtin-paths.sh  <none>
[R.]  #04  fix-qt-module-paths.sh   <none>
[R.]  #05  jack2                    1.9.22
[R.]  #06  libsepol                 3.11, 3.11-bin, 3.11-dev
[R.]  #07  lksctp-tools             1.0.21
[R.]  #08  lndir                    1.0.5
[R.]  #09  mariadb-connector-odbc   3.2.6
[R-]  #10  pcsx2                    2.6.3
[R.]  #11  plutosvg                 0.0.8
[R.]  #12  plutovg                  1.3.3
[R.]  #13  psqlodbc                 18.00.0002
[R.]  #14  qtlanguageserver         6.11.1, 6.11.1-dev
[R.]  #15  sqlite-connector-odbc    0.99991
[R.]  #16  tremor-unstable          2018-03-16 x2
[R.]  #17  vulkan-headers           1.4.350.0

Could you share your configuration and what hardware you’re using (e.g. x86 or arm and what make and model)?

1 Like

Sure thing! I am using a Thinkpad T14 Gen 5 laptop (x86 architecture). Dotfiles (including my NixOS configuration) are linked here.

Note that nixos-rebuild list-generations does not show what’s currently active, it shows you what the /nix/var/nix/profiles/system profile is currently set to, which is not related to which generation you’ve booted.

1 Like

Check which version of microcode-intel you have. There was some issue with it on Friday, with same symptoms. There is an update for that microcode-intel: 20260811 -> 20260812 by felixsinger · Pull Request #552229 · NixOS/nixpkgs · GitHub

EDIT: Looks like update broke more boots, so you may want to bind it to 20260811.

2 Likes

Hi, thank you so much for sharing these issues and PRs. I just ran another nixos-rebuild switch and this generation boots into my system properly, so it seems like the update was able to fix the issue!

Just so I can diagnose these issues myself going forward, how were you able to deduce what specifically broke and where to find information on what was happening on the maintainers’ end? I tried to look for other reports of this behavior on nixpkgs’ issues as well as here in the NixOS discourse, but to no avail.

(Edit: to answer the earlier question of which microcode version I am on, it was 0x00000028.)

I just used an AI. I described the boot loops and asked for the differences between a working generation and the new one. It found microcode-intel right away. It was tricky to spot because the package itself doesn’t show up; it’s part of the initrd. After I found the package name, I checked nixpkgs issues and PRs, and there was already a PR for it.

1 Like