What does it mean for an old NixOS release to be "deprecated"?

I’m wondering what it means in practice for an old NixOS release to be “deprecated” or “end of life”?

You can find references to old NixOS releases being deprecated or end-of-life a few different places. For example, from the nixos-23.05 release announcement, it appears that nixos-22.11 is now deprecated:

Also, from https://status.nixos.org/, you can see that nixos-22.11 is tagged as “Deprecated”, and nixos-22.05 is tagged as “End of life”:

However, I’m wondering if there is a canonical reference somewhere for what it technically means for a release to be “deprecated” or “end of life”?

For instance, from @RaitoBezarius’s comment above:

The 22.11 release is now officially deprecated and will cease to receive updates and security fixes after 2023-06-31

However, my understanding is that even after 2023-06-31, the following things will still be true:

  1. The release-22.11 GitHub branch will still exist. Interested users can still send PRs fixing things.
  2. The hydra job building the release-22.11 GitHub branch will still exist, and updates to that branch will still get built.
  3. The automatic process that updates the nixos-22.11 GitHub branch and corresponding NixOS channel from the results of Hydra will still run.
  4. End users can still use the nixos-22.11 branch/channel.

I imagine the NixOS security team will likely not prioritize fixing issues for nixos-22.11 after 2023-06-31. But any interested user/committer could still send PRs, and they would eventually make it to the nixos-22.11 channel, right?

At some point, the channel update process for old releases is turned off, so the nixos-XX.YY branch stops getting updated on GitHub. And then (possibly at the same time?) the Hydra job for release-XX.YY is disabled. But currently it looks like Hydra jobs still exist back to release-20.09:

So my question is, in practice, what is the significance of a NixOS release being considered “deprecated” or “end of life”?


Which will be closed as the release will be EOL.

“deprecated” is just for these few weeks when it’s still supported but a new stable one has been officially released. I suspect you found the only place where this term appears or makes a difference.

EOL is a bit fuzzy thing. If some “extremely important” security fix comes some time afterwards, “we” usually do backport it there if it’s easy, including channel updates and everything. But the main point is that after EOL there’s no kind of promise that such maintenance will happen, so everything might remain frozen instead.

1 Like

I’d say that around nixos.org there’s relatively little formalization of the processes, etc. As long as going by “intuition” of committer’s seems to work OK, at least.

1 Like

Thanks for your responses!

To sum up, it sounds like “deprecated” doesn’t really mean much, except that it is soon to be “end of life”.

For “end of life”, it sounds like there aren’t any technical/concrete measure in place preventing updates to the release-XX.YY branches. For instance, there is no GitHub action that automatically closes PRs to those branches, and there is no RFC that specifies rules/procedures around the end of life branches.

If you look back in the GitHub history it appears there are occasionally commits to the end-of-life branches from interested committers. Here’s an example. This is a very recent commit to 22.05, which has been end of life for a few months now. At least no one has seemed to object to this:

However, it does sound like there are some loose social policies around not committing to the end of life branches. Here’s an example of a PR that was closed right when the end-of-life period started:


Well, the «it’s acceptable to close just because of EOL» part is not so loose, given that closing PRs otherwise requires a pretty significant justification.


Yes, no technical measures or really hard rules.


Is there a way of estimating when a prior release gets removed from search.nixos.org, as a channel? I’m thinking about how long I should expect to keep a prev_stable in my flake, for edgecases.

They get removed as soon as they reach their end of life.

For NixOS 23.05 this would be after 2023-12-31.