From debb9e3a45c0d5dac25af8ae368333fa228b5184 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Fri, 18 Jul 2025 04:12:08 +0200 Subject: [PATCH 1/3] lixPackageSets.lix_2_91: drop 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, therefore: it's dropped from the HEAD as of now. 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 --- pkgs/tools/package-management/lix/default.nix | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 57d697f7ea565..22534b5336e90 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -131,47 +131,6 @@ in lib.makeExtensible (self: { inherit makeLixScope; - lix_2_91 = self.makeLixScope { - attrName = "lix_2_91"; - - lix-args = rec { - version = "2.91.3"; - - src = fetchFromGitHub { - owner = "lix-project"; - repo = "lix"; - rev = version; - hash = "sha256-b5d+HnPcyHz0ZJW1+LZl4qm4LGTB/TiaDFQVlVL2xpE="; - }; - - patches = [ - # Support for lowdown >= 1.4, https://gerrit.lix.systems/c/lix/+/3731 - (fetchpatch2 { - name = "lix-2.91-lowdown-1.4.0.patch"; - url = "https://git.lix.systems/lix-project/lix/commit/ecff59d77371b21fef229c33ebb629bc49a8fad5.patch"; - sha256 = "sha256-2M5oId5kObwzpw67rddAPI2RbWPEVlGBrMUXZWqqmEo="; - }) - ]; - - docCargoDeps = rustPlatform.fetchCargoVendor { - name = "lix-doc-${version}"; - inherit src; - sourceRoot = "${src.name or src}/lix-doc"; - hash = "sha256-U820gvcbQIBaFr2OWPidfFIDXycDFGgXX1NpWDDqENs="; - }; - }; - - nix-eval-jobs-args = { - version = "2.91.0"; - src = fetchgit { - url = "https://git.lix.systems/lix-project/nix-eval-jobs.git"; - # https://git.lix.systems/lix-project/nix-eval-jobs/commits/branch/release-2.91 - rev = "1f98b0c016a6285f29ad278fa5cd82b8f470d66a"; - hash = "sha256-ZJKOC/iLuO8qjPi9/ql69Vgh3NIu0tU6CSI0vbiCrKA="; - }; - }; - }; - lix_2_92 = self.makeLixScope { attrName = "lix_2_92"; @@ -279,7 +238,6 @@ lib.makeExtensible (self: { self.${version}.lix; in lib.dontRecurseIntoAttrs { - lix_2_91 = mkAlias "lix_2_91"; # NOTE: Do not add new versions of Lix here. stable = mkAlias "stable"; latest = mkAlias "latest"; From 5d4210ba4e9e0a5b100c3b84c7e5c8b6e17f5aa0 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Wed, 10 Sep 2025 20:53:41 +0200 Subject: [PATCH 2/3] lixPackageSets.lix_2_92: drop After discussing with the nixpkgs developers and Lix developers, we came to the conclusion that we could also drop directly 2.92 as this is not a much used version and 2.93 has no known regression over 2.92 (only advantages). To reduce the maintenance churn on the Lix team, we drop this version for 25.11 and will maintain only for the lifetime of 25.05. Change-Id: I4ee310df31d36b92e394ff2dfebd589d10b12228 Signed-off-by: Raito Bezarius --- pkgs/tools/package-management/lix/default.nix | 82 ++++--------------- 1 file changed, 18 insertions(+), 64 deletions(-) diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 22534b5336e90..2cfab091c3028 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -128,70 +128,24 @@ let }; }; in -lib.makeExtensible (self: { - inherit makeLixScope; - - lix_2_92 = self.makeLixScope { - attrName = "lix_2_92"; - - lix-args = rec { - version = "2.92.3"; - - src = fetchFromGitHub { - owner = "lix-project"; - repo = "lix"; - rev = version; - hash = "sha256-iP2iUDxA99RcgQyZROs7bQw8pqxa1vFudRqjAIHg9Iw="; - }; - - patches = [ - # Support for lowdown >= 1.4, https://gerrit.lix.systems/c/lix/+/3731 - (fetchpatch2 { - name = "lix-lowdown-1.4.0.patch"; - url = "https://git.lix.systems/lix-project/lix/commit/858de5f47a1bfd33835ec97794ece339a88490f1.patch"; - hash = "sha256-FfLO2dFSWV1qwcupIg8dYEhCHir2XX6/Hs89eLwd+SY="; - }) - ]; - - cargoDeps = rustPlatform.fetchCargoVendor { - name = "lix-${version}"; - inherit src; - hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8="; - }; - }; - - nix-eval-jobs-args = rec { - version = "2.92.0"; - src = fetchgit { - url = "https://git.lix.systems/lix-project/nix-eval-jobs.git"; - rev = version; - hash = "sha256-tPr61X9v/OMVt7VXOs1RRStciwN8gDGxEKx+h0/Fg48="; - }; - }; - }; - - lix_2_93 = self.makeLixScope { - attrName = "lix_2_93"; - - lix-args = rec { - version = "2.93.3"; - - src = fetchFromGitea { - domain = "git.lix.systems"; - owner = "lix-project"; - repo = "lix"; - rev = version; - hash = "sha256-Oqw04eboDM8rrUgAXiT7w5F2uGrQdt8sGX+Mk6mVXZQ="; - }; - - patches = [ - # Support for lowdown >= 1.4, https://gerrit.lix.systems/c/lix/+/3731 - (fetchpatch2 { - name = "lix-lowdown-1.4.0.patch"; - url = "https://git.lix.systems/lix-project/lix/commit/858de5f47a1bfd33835ec97794ece339a88490f1.patch"; - hash = "sha256-FfLO2dFSWV1qwcupIg8dYEhCHir2XX6/Hs89eLwd+SY="; - }) - ]; +lib.makeExtensible ( + self: + { + inherit makeLixScope; + + lix_2_93 = self.makeLixScope { + attrName = "lix_2_93"; + + lix-args = rec { + version = "2.93.3"; + + src = fetchFromGitea { + domain = "git.lix.systems"; + owner = "lix-project"; + repo = "lix"; + rev = version; + hash = "sha256-Oqw04eboDM8rrUgAXiT7w5F2uGrQdt8sGX+Mk6mVXZQ="; + }; cargoDeps = rustPlatform.fetchCargoVendor { name = "lix-${version}"; From db848140ebc769990ed8b86d610d511bc5c45b92 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Thu, 11 Sep 2025 13:06:56 +0200 Subject: [PATCH 3/3] lix: add "removal messages" and restore old aliases This ensures that evaluation doesn't suddenly break with cryptic messages and add a nice message for users. Change-Id: I1959ae7421c8a46ed93476bb014b84cfb26a4322 Signed-off-by: Raito Bezarius --- pkgs/tools/package-management/lix/default.nix | 102 +++++++++++------- 1 file changed, 61 insertions(+), 41 deletions(-) diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 2cfab091c3028..727ae28b0feb3 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -1,5 +1,6 @@ { lib, + config, stdenv, makeScopeWithSplicing', generateSplicesForMkScope, @@ -127,6 +128,12 @@ let }; }; }; + + removedMessage = version: '' + Lix ${version} is now removed from this revision of Nixpkgs. Consider upgrading to stable or the latest version. + + If you notice a problem while upgrading disrupting your workflows which did not occur in version ${version}, please reach out to the Lix team. + ''; in lib.makeExtensible ( self: @@ -147,53 +154,66 @@ lib.makeExtensible ( hash = "sha256-Oqw04eboDM8rrUgAXiT7w5F2uGrQdt8sGX+Mk6mVXZQ="; }; - cargoDeps = rustPlatform.fetchCargoVendor { - name = "lix-${version}"; - inherit src; - hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8="; + cargoDeps = rustPlatform.fetchCargoVendor { + name = "lix-${version}"; + inherit src; + hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8="; + }; }; }; - }; - git = self.makeLixScope { - attrName = "git"; + git = self.makeLixScope { + attrName = "git"; - lix-args = rec { - version = "2.94.0-pre-20250807_${builtins.substring 0 12 src.rev}"; + lix-args = rec { + version = "2.94.0-pre-20250807_${builtins.substring 0 12 src.rev}"; - src = fetchFromGitea { - domain = "git.lix.systems"; - owner = "lix-project"; - repo = "lix"; - rev = "8bbd5e1d0df9c31b4d86ba07bc85beb952e42ccb"; - hash = "sha256-P+WiN95OjCqHhfygglS/VOFTSj7qNdL5XQDo2wxhQqg="; - }; + src = fetchFromGitea { + domain = "git.lix.systems"; + owner = "lix-project"; + repo = "lix"; + rev = "8bbd5e1d0df9c31b4d86ba07bc85beb952e42ccb"; + hash = "sha256-P+WiN95OjCqHhfygglS/VOFTSj7qNdL5XQDo2wxhQqg="; + }; - cargoDeps = rustPlatform.fetchCargoVendor { - name = "lix-${version}"; - inherit src; - hash = "sha256-APm8m6SVEAO17BBCka13u85/87Bj+LePP7Y3zHA3Mpg="; + cargoDeps = rustPlatform.fetchCargoVendor { + name = "lix-${version}"; + inherit src; + hash = "sha256-APm8m6SVEAO17BBCka13u85/87Bj+LePP7Y3zHA3Mpg="; + }; }; }; - }; - - latest = self.lix_2_93; - - stable = self.lix_2_93; - # Previously, `nix-eval-jobs` was not packaged here, so we export an - # attribute with the previously-expected structure for compatibility. This - # is also available (for now) as `pkgs.lixVersions`. - renamedDeprecatedLixVersions = - let - mkAlias = - version: - lib.warnOnInstantiate "'lixVersions.${version}' has been renamed to 'lixPackageSets.${version}.lix'" - self.${version}.lix; - in - lib.dontRecurseIntoAttrs { - # NOTE: Do not add new versions of Lix here. - stable = mkAlias "stable"; - latest = mkAlias "latest"; - }; -}) + latest = self.lix_2_93; + + stable = self.lix_2_93; + + # Previously, `nix-eval-jobs` was not packaged here, so we export an + # attribute with the previously-expected structure for compatibility. This + # is also available (for now) as `pkgs.lixVersions`. + renamedDeprecatedLixVersions = + let + mkAlias = + version: + lib.warnOnInstantiate "'lixVersions.${version}' has been renamed to 'lixPackageSets.${version}.lix'" + self.${version}.lix; + in + lib.dontRecurseIntoAttrs { + # NOTE: Do not add new versions of Lix here. + stable = mkAlias "stable"; + latest = mkAlias "latest"; + } + // lib.optionalAttrs config.allowAliases { + # Legacy removed versions. We keep their aliases until the lixPackageSets one is dropped. + lix_2_90 = mkAlias "lix_2_90"; + lix_2_91 = mkAlias "lix_2_91"; + }; + } + // lib.optionalAttrs config.allowAliases { + # Removed versions. + # When removing a version, add an alias with a date attached to it so we can clean it up after a while. + lix_2_90 = throw (removedMessage "2.90"); # added in 2025-09-11 + lix_2_91 = throw (removedMessage "2.91"); # added in 2025-09-11 + lix_2_92 = throw (removedMessage "2.92"); # added in 2025-09-11 + } +)