···638 clevisTest ? false,
639 clevisFallbackTest ? false,
640 disableFileSystems ? false,
0641 }:
642 let
643 isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
···701 virtualisation.rootDevice = "/dev/vdb";
702703 hardware.enableAllFirmware = mkForce false;
0704705 # The test cannot access the network, so any packages we
706 # need must be included in the VM.
···1101 # The (almost) simplest partitioning scheme: a swap partition and
1102 # one big filesystem partition.
1103 simple = makeInstallerTest "simple" simple-test-config;
00011041105 switchToFlake = makeInstallerTest "switch-to-flake" simple-test-config-flake;
1106
···638 clevisTest ? false,
639 clevisFallbackTest ? false,
640 disableFileSystems ? false,
641+ selectNixPackage ? pkgs: pkgs.nixStable,
642 }:
643 let
644 isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
···702 virtualisation.rootDevice = "/dev/vdb";
703704 hardware.enableAllFirmware = mkForce false;
705+ nix.package = selectNixPackage pkgs;
706707 # The test cannot access the network, so any packages we
708 # need must be included in the VM.
···1103 # The (almost) simplest partitioning scheme: a swap partition and
1104 # one big filesystem partition.
1105 simple = makeInstallerTest "simple" simple-test-config;
1106+ lix-simple = makeInstallerTest "simple" simple-test-config // {
1107+ selectNixPackage = pkgs: pkgs.lix;
1108+ };
11091110 switchToFlake = makeInstallerTest "switch-to-flake" simple-test-config-flake;
1111
···17 pkg-config,
18 ninja,
19 cmake,
20- clang-tools,
21}:
2223stdenv.mkDerivation {
···35 ninja
36 # nlohmann_json can be only discovered via cmake files
37 cmake
38- ] ++ (lib.optional stdenv.cc.isClang [ clang-tools ]);
3940 # point 'nix edit' and ofborg at the file that defines the attribute,
41 # not this common file.
···52 license = lib.licenses.gpl3;
53 inherit maintainers;
54 platforms = lib.platforms.unix;
055 };
56}
···17 pkg-config,
18 ninja,
19 cmake,
20+ buildPackages,
21}:
2223stdenv.mkDerivation {
···35 ninja
36 # nlohmann_json can be only discovered via cmake files
37 cmake
38+ ] ++ (lib.optional stdenv.cc.isClang [ buildPackages.clang-tools ]);
3940 # point 'nix edit' and ofborg at the file that defines the attribute,
41 # not this common file.
···52 license = lib.licenses.gpl3;
53 inherit maintainers;
54 platforms = lib.platforms.unix;
55+ broken = stdenv.hostPlatform.isStatic;
56 };
57}
+52-4
pkgs/tools/package-management/lix/default.nix
···8 rustPlatform,
9 Security,
10 newScope,
00001112 storeDir ? "/nix/store",
13 stateDir ? "/nix/var",
···19 lix-args,
20 nix-eval-jobs-args,
21 }:
000022 lib.makeScope newScope (
23 self:
24 lib.recurseIntoAttrs {
···58 requiredSystemFeatures = [ ];
59 };
600000061 # NOTE: The `common-*.nix` helpers contain a top-level function which
62 # takes the Lix source to build and version information. We use the
63 # outer `callPackage` for that.
···65 # That *returns* another function which takes the actual build
66 # dependencies, and that uses the new scope's `self.callPackage` so
67 # that `nix-eval-jobs` can be built against the correct `lix` version.
68- lix = self.callPackage (callPackage ./common-lix.nix lix-args) { };
006970- nix-eval-jobs = self.callPackage (callPackage ./common-nix-eval-jobs.nix nix-eval-jobs-args) { };
0071 }
72 );
73-74in
75lib.makeExtensible (self: {
76 inherit makeLixScope;
···135 };
136 };
137138- latest = self.lix_2_91;
00000000000000000000000000000000139 stable = self.lix_2_91;
140141 # Previously, `nix-eval-jobs` was not packaged here, so we export an
···8 rustPlatform,
9 Security,
10 newScope,
11+ editline,
12+ ncurses,
13+ stdenv,
14+ clangStdenv,
1516 storeDir ? "/nix/store",
17 stateDir ? "/nix/var",
···23 lix-args,
24 nix-eval-jobs-args,
25 }:
26+ let
27+ # GCC 13.2 is known to miscompile Lix coroutines (introduced in 2.92).
28+ lixStdenv = if lib.versionAtLeast lix-args.version "2.92" then clangStdenv else stdenv;
29+ in
30 lib.makeScope newScope (
31 self:
32 lib.recurseIntoAttrs {
···66 requiredSystemFeatures = [ ];
67 };
6869+ editline = editline.override {
70+ inherit ncurses;
71+ enableTermcap = true;
72+ };
73+74 # NOTE: The `common-*.nix` helpers contain a top-level function which
75 # takes the Lix source to build and version information. We use the
76 # outer `callPackage` for that.
···78 # That *returns* another function which takes the actual build
79 # dependencies, and that uses the new scope's `self.callPackage` so
80 # that `nix-eval-jobs` can be built against the correct `lix` version.
81+ lix = self.callPackage (callPackage ./common-lix.nix lix-args) {
82+ stdenv = lixStdenv;
83+ };
8485+ nix-eval-jobs = self.callPackage (callPackage ./common-nix-eval-jobs.nix nix-eval-jobs-args) {
86+ stdenv = lixStdenv;
87+ };
88 }
89 );
090in
91lib.makeExtensible (self: {
92 inherit makeLixScope;
···151 };
152 };
153154+ lix_2_92 = self.makeLixScope {
155+ lix-args = rec {
156+ version = "2.92.0";
157+158+ src = fetchFromGitHub {
159+ owner = "lix-project";
160+ repo = "lix";
161+ rev = version;
162+ hash = "sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g=";
163+ };
164+165+ cargoDeps = rustPlatform.fetchCargoVendor {
166+ name = "lix-${version}";
167+ inherit src;
168+ allowGitDependencies = false;
169+ hash = "sha256-YMyNOXdlx0I30SkcmdW/6DU0BYc3ZOa2FMJSKMkr7I8=";
170+ };
171+ };
172+173+ nix-eval-jobs-args = rec {
174+ version = "2.92.0";
175+ src = fetchgit {
176+ url = "https://git.lix.systems/lix-project/nix-eval-jobs.git";
177+ rev = version;
178+ hash = "sha256-tPr61X9v/OMVt7VXOs1RRStciwN8gDGxEKx+h0/Fg48=";
179+ };
180+ };
181+ };
182+183+ latest = self.lix_2_92;
184+185+ # Note: This is not yet 2.92 because of a non-deterministic `curl` error.
186+ # See: https://git.lix.systems/lix-project/lix/issues/662
187 stable = self.lix_2_91;
188189 # Previously, `nix-eval-jobs` was not packaged here, so we export an