Skip to content

lixPackageSets.lix_2_9{0,1}: drop #426260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

RaitoBezarius
Copy link
Member

@RaitoBezarius RaitoBezarius commented Jul 18, 2025

Lix 2.90 series

Lix 2.90 is vulnerable to critical CVEs, known vulnerabilities warnings
were emitted. Users should have migrated by then.

There's no reason to keep it in-tree anymore.

Lix 2.91 series

Lix 2.91 has been one of our historical LTS releases given that the Lix
2.92 series suffered from an unfortunate curl upstream bug and it took a
lot of time to fix it, in addition of other papercuts with SSH
connections.

Lix 2.91 is the last release not containing the asyncification work we
started.

Lix 2.92 latest minors sorted out these issues and possess bits of
asyncification, it's a much easier target for HEAD cherry-picks because
it also renamed the directory src/nix to lix/.

Plans are the following:

  • Lix 2.92 is skipped.
  • Lix 2.93 is the new stable.
  • Lix 2.94 is the next stable.

Once NixOS 25.11 releases, Lix 2.92 will be dropped.

Lix 2.92 suffers from slight performance issues that are made up in Lix
2.93, your mileage may vary.

Things done

  • Add aliases for dropped packages
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Nixpkgs 25.11 Release Notes (or backporting 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 25.05 NixOS Release notes)
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other contributing documentation in corresponding paths.

Add a 👍 reaction to pull requests you find important.

@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 11.by: package-maintainer This PR was created by a maintainer of all the package it changes. labels Jul 18, 2025
# Note: This is not yet 2.92 because of a non-deterministic `curl` error.
# See: https://git.lix.systems/lix-project/lix/issues/662
stable = self.lix_2_91;
stable = self.lix_2_92;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is a good idea. 2.92 contains a known deadlock during substitution and I don't think there is any reason at all to use it over 2.93.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine by me, in that case, we should probably consider pruning 2.92 as well.

@alois31
Copy link
Contributor

alois31 commented Jul 18, 2025

There are quite a few conditionals for older versions in common-lix.nix which could be removed along with the old versions. Similar for the nix-eval-jobs source which can always be assumed to be the same as lix if you end up dropping everything below 2.93.

@RaitoBezarius
Copy link
Member Author

RaitoBezarius commented Jul 18, 2025 via email

@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Jul 28, 2025
@RaitoBezarius RaitoBezarius force-pushed the phase-out-early-lix_2025 branch from 859614d to 045b6e3 Compare August 9, 2025 15:09
Lix 2.90 is vulnerable to critical CVEs, known vulnerabilities warnings
were emitted. Users should have migrated by then.

There's no reason to keep it in-tree anymore.

Change-Id: I631b234346a2c687e23b5f5de97674ec2214111d
Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
@RaitoBezarius RaitoBezarius force-pushed the phase-out-early-lix_2025 branch from 045b6e3 to f2a15a7 Compare August 9, 2025 15:44
@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. and removed 2.status: merge conflict This PR has merge conflicts with the target branch labels Aug 9, 2025
@RaitoBezarius RaitoBezarius marked this pull request as ready for review August 9, 2025 16:24
Lix 2.91 has been one of our historical LTS releases given that the Lix
2.92 series suffered from an unfortunate curl upstream bug and it took a
lot of time to fix it, in addition of other papercuts with SSH
connections.

Lix 2.91 is the last release not containing the asyncification work we
started.

Lix 2.92 latest minors sorted out these issues and possess bits of
asyncification, it's a much easier target for HEAD cherry-picks because
it also renamed the directory `src/nix` to `lix/`.

Plans are the following:

* Lix 2.92 is skipped.
* Lix 2.93 is the new stable.
* Lix 2.94 is the next stable.

Once NixOS 25.11 releases, Lix 2.92 will be dropped.

Lix 2.92 suffers from slight performance issues that are made up in Lix
2.93, your mileage may vary.

Change-Id: I83d0d1764edfc4009e4373f6b22d728390419e30
Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
@nix-owners nix-owners bot requested a review from Qyriad August 9, 2025 16:25
@RaitoBezarius RaitoBezarius force-pushed the phase-out-early-lix_2025 branch from f2a15a7 to 61de286 Compare August 9, 2025 16:25
@wolfgangwalther
Copy link
Contributor

wolfgangwalther commented Aug 12, 2025

After the discussion in #433057, I believe we should not drop Lix 2.91, yet, at least from a Nixpkgs perspective. Imho, this should only happen in 26.05, not in 25.11. We don't have a formal policy for this, yet, but I think it's reasonable to expect to be able to update from NixOS 24.11 to NixOS 25.11, because they overlap: There is a period where NixOS 24.11 is still supported and NixOS 25.11 is already being developed.

To be able to verify that NixOS 25.11 evaluates with a NixOS 24.11 running Lix, we need to have Lix 2.91 still available in NixOS 25.11 - that's the reasonable amount of effort we can take to run it in CI etc.

Since 24.11 was on 2.91 by default, and also doesn't have any newer Lix version, it would help to keep 2.91 until 26.05 branch-off. Of course, this only makes sense if it's also still supported upstream and doesn't become insecure.

I think the fact that 2.91 is still the default in NixOS 25.05 is another argument for it.

cc @emilazy

(Edit: Note, this is intended to start the discussion about such a policy - how long should we expect Lix versions from one release to be in following releases? I said two cycles, the general answer could also be one cycle only, ofc)

@wolfgangwalther
Copy link
Contributor

(Edit: Note, this is intended to start the discussion about such a policy - how long should we expect Lix versions from one release to be in following releases? I said two cycles, the general answer could also be one cycle only, ofc)

To make some concrete proposals:

1. Default +2

Each NixOS release's default .stable Lix version should be kept for two more NixOS releases.

Consequences (assuming 2.93 becomes the default in 25.11):

  • Keep 2.91 for 25.05, 25.11 and 26.05, drop it in 26.11.
  • Keep 2.93 for 25.11, 26.05 and 26.11.

2. Latest +2

Each NixOS release's .latest Lix version should be kept for two more NixOS releases.

Consequences:

  • Keep 2.91 for 24.11, 25.05 and 25.11, drop it for 26.05.
  • Keep 2.93 for 25.05, 25.11 and 26.05.

3. Default +1

Each NixOS release's default .stable Lix version should be kept for one more NixOS release.

Consequences:

  • Keep 2.91 for 25.05, 25.11, drop it in 26.05.
  • Keep 2.93 for 25.11, 26.05.

4. Latest +1

Each NixOS release's .latest Lix version should be kept for one more NixOS release.

Consequences:

  • Keep 2.91 for 24.11, 25.05, drop it in 25.11.
  • Keep 2.93 for 25.05, 25.11.

This PR, dropping 2.91 right now, would be at the bottom of this list in "Latest +1". I think that might not be enough. My proposal above is "Latest +2", I think. Maybe both of "Latest +2" and "Default +1"?

@llakala
Copy link
Contributor

llakala commented Aug 12, 2025

I think it's more important to base our deprecations on what was stable. Doing a quick Github search, there are currently 476 uses of pkgs.lix and only 101 uses of lixPackageSets.latest. Anyone using latest is opting-in to a version that may not be stable yet.

I don't want to state specific support windows, because I think that's up to the Lix team. My core opinions are:

  • Versions that were previously stable should stick around longer. Before removing a version, there should first be a deprecation notice (exceptions can be made for CVEs).
  • A version remaining in nixpkgs implies that the Lix team is still providing security fixes for it. If they're not, it should be removed.
  • How long old versions persist should reflect how much work the Lix team feels it's able to put into maintaining old versions. If the team feels they can only support old stable versions for one release, then that should be the standard. We don't want bad versions persisting due to overly-optimistic support windows.

Personally, I don't think 2.91 should be removed entirely yet. I'd prefer a deprecation warning for a single release, which reflects that it's only receiving security patches.

@lf-
Copy link
Member

lf- commented Aug 14, 2025

Ideologically:

  • Lix does not maintain stable releases unless there is a good excuse to use one (e.g. known regressions, for which we have had a horrible few months, mostly due to a series of heisenbugs in external libs and a macOS kernel bug).
    • The code being unmaintained may be okay, but we do not intend to do major security fixes to releases we don't maintain because it is burnout fuel (i.e. the last CVE situation should not repeat)
  • That is to say, if we are not screwing up, it is always possible to upgrade lixPackageSets.stable during a nixpkgs stable release, because, to the extent that there are breaking changes, they are intended to always be visible at eval time and we do our absolute best to not change the semantics of anything used by automation.
  • The only reason lixPackageSets.latest is different than lixPackageSets.stable is because of known regressions in releases which forced us to maintain older versions. If there were no regressions, these would be the same thing.

So far in Lix development, we've not really had a release that had significant unknown defects in it upon release since we have pretty strong QA on the main branch. Maybe we can keep stable-1 around with minimal maintenance in case something gets really blown up, but backporting further than the current stable means any of those old stable releases do not receive any meaningful QA.

@emilazy
Copy link
Member

emilazy commented Aug 15, 2025

(What macOS kernel bug, btw?)

@wolfgangwalther
Copy link
Contributor

That is to say, if we are not screwing up, it is always possible to upgrade lixPackageSets.stable _during a nixpkgs stable release.
[...]
If there were no regressions, these would be the same thing.

OK, so let's assume that latest Lix is always backported and becomes the new stable on the release branch as well. Then the above mentioned strategies collapse into two strategies: +1 or +2.

So far in Lix development, we've not really had a release that had significant unknown defects in it upon release since we have pretty strong QA on the main branch. Maybe we can keep stable-1 around with minimal maintenance in case something gets really blown up,

Yeah, if that's only ever going to be an unintended thing, then +1 should be enough. Just to make sure we can verify Nixpkgs still evaluating properly for those who are not on the latest stable NixOS version, yet.

In practical consequences this means:

  • Make Lix 2.93 the new stable.
  • Backport this change to NixOS 25.05.
  • Then Lix 2.91 can be dropped immediately in unstable.
  • Lix 2.91 can not be dropped from NixOS 25.05, though, because it is still latest/stable in NixOS 24.11.

This means Lix 2.91 would still have to be supported until November. At least basic support as in: If there is anything security critical coming up, this would be fixed, so that the package doesn't need to be marked insecure.

Does that make sense?

@RaitoBezarius
Copy link
Member Author

Given that I have been in charge of the previous security issues, I think it's plausible we can do security until November but 2.91 is a highly expensive release, so November ought to be the utmost maximum support in nixpkgs IMHO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 11.by: package-maintainer This PR was created by a maintainer of all the package it changes.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants