This is probably the main reason for it. The more frequently you update the shorter the time span a disclosed vulnerability can be abused for. That’s the primary reason to update software if you’re not waiting for new features in the first place.
With the number of packages on your average desktop system, and the frequency of important security fixes in each of them, long update cadences are almost certain to leave you vulnerable well beyond the window just after disclosure in which attackers need time to start wide attacks.
If nothing else, your browser is updated with the rest of the distro, and browsers see important security fixes almost every day (at least, if you include all their dependencies). Given how much of an attack surface browsers are, it’s prudent to keep your system as up-to-date as feasible.
This anecdotally a nice side benefit. Keep in mind though, if you use NixOS-stable there will be no breaking changes (though if one does somehow slip through and you want to report it, I guess bisecting is a little easier if the diff is smaller).
You also get more incremental disk space changes with smaller diffs - if you wait a long time for an update you’ll have a much larger set of packages that have seen updates and must therefore be on your system simultaneously, making each individual generation larger, overall exacerbating nix’ disk space use.
Finally, it just doesn’t really make that much sense to update less than weekly on NixOS. NixOS updates are atomic (assuming you don’t do silly things with activationScript
), so you can just set the auto update service (if you boot your system daily, I’d suggest setting system.autoUpgrade.operation = "boot"
so you get to boot to a clean, updated system every time this happens) and mostly forget about it. If something does go wrong, you just need to select a different boot entry to go back to the state before the update next time you reboot.
Breaking changes to nix code will fail at compile time, and the reproducibility guarantees mean that the NixOS test suite will reliably catch most boot-relevant runtime issues, so you will almost certainly still get to boot your system at least up to grub - and in the unlikely case that an update does result in a broken system beyond that, you can easily just boot the previous generation from grub.
It simply doesn’t make sense to fear updates on NixOS. Distros where downgrading is all but impossible so you hold on to specific functioning software versions for dear life? Sure. NixOS? It takes 3 key presses to get back to the exact system you had yesterday, why would you worry about this.
You should just then occasionally take a look at your update service logs to check if it failed recently, so that you can step in and fix the update whenever there is a breaking change to nix code (and you can avoid this step entirely if you just stop using NixOS unstable, because NixOS stable doesn’t allow breaking changes).