nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ pkgs }:
2let
3 inherit (pkgs) callPackages callPackage stdenv;
4 inherit (pkgs.lib)
5 recurseIntoAttrs
6 attrNames
7 pipe
8 hasPrefix
9 hasSuffix
10 filter
11 genAttrs
12 optionals
13 filterAttrs
14 meta
15 concatMapAttrs
16 optionalAttrs
17 ;
18 inherit (pkgs.lib.strings) toJSON;
19in
20{
21 cc-wrapper =
22 let
23 pkgNames = (attrNames pkgs);
24 llvmTests =
25 let
26 pkgSets = pipe pkgNames [
27 (filter (hasPrefix "llvmPackages"))
28 # Are aliases.
29 (filter (n: n != "llvmPackages_latest"))
30 (filter (n: n != "llvmPackages_9"))
31 (filter (n: n != "llvmPackages_10"))
32 (filter (n: n != "llvmPackages_11"))
33 (filter (n: n != "llvmPackages_12"))
34 (filter (n: n != "llvmPackages_13"))
35 (filter (n: n != "llvmPackages_14"))
36 (filter (n: n != "llvmPackages_15"))
37 (filter (n: n != "llvmPackages_16"))
38 (filter (n: n != "llvmPackages_17"))
39 ];
40 tests = genAttrs pkgSets (
41 name:
42 recurseIntoAttrs {
43 clang = callPackage ./cc-wrapper { stdenv = pkgs.${name}.stdenv; };
44 libcxx = callPackage ./cc-wrapper { stdenv = pkgs.${name}.libcxxStdenv; };
45 }
46 );
47 in
48 tests;
49 gccTests =
50 let
51 pkgSets = pipe (attrNames pkgs) (
52 [
53 (filter (hasPrefix "gcc"))
54 (filter (hasSuffix "Stdenv"))
55 (filter (n: n != "gccCrossLibcStdenv"))
56 (filter (n: n != "gcc49Stdenv"))
57 (filter (n: n != "gcc6Stdenv"))
58 (filter (n: n != "gcc7Stdenv"))
59 (filter (n: n != "gcc8Stdenv"))
60 (filter (n: n != "gcc9Stdenv"))
61 (filter (n: n != "gcc10Stdenv"))
62 (filter (n: n != "gcc11Stdenv"))
63 (filter (n: n != "gcc12Stdenv"))
64 ]
65 ++
66 optionals
67 (
68 !(
69 (stdenv.buildPlatform.isLinux && stdenv.buildPlatform.isx86_64)
70 && (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64)
71 )
72 )
73 [
74 (filter (n: !hasSuffix "MultiStdenv" n))
75 ]
76 );
77 in
78 genAttrs pkgSets (name: callPackage ./cc-wrapper { stdenv = pkgs.${name}; });
79 in
80 recurseIntoAttrs {
81 default = callPackage ./cc-wrapper { };
82
83 supported = stdenv.mkDerivation {
84 name = "cc-wrapper-supported";
85 builtGCC =
86 let
87 sets = pipe gccTests [
88 (filterAttrs (_: v: meta.availableOn stdenv.hostPlatform v.stdenv.cc))
89 # Broken
90 (filterAttrs (n: _: n != "gccMultiStdenv"))
91 ];
92 in
93 toJSON sets;
94
95 builtLLVM =
96 let
97 sets = pipe llvmTests [
98 (filterAttrs (_: v: meta.availableOn stdenv.hostPlatform v.clang.stdenv.cc))
99 (filterAttrs (_: v: meta.availableOn stdenv.hostPlatform v.libcxx.stdenv.cc))
100 ];
101 in
102 toJSON sets;
103 buildCommand = ''
104 touch $out
105 '';
106 };
107
108 llvmTests = recurseIntoAttrs llvmTests;
109 gccTests = recurseIntoAttrs gccTests;
110 };
111
112 devShellTools = callPackage ../build-support/dev-shell-tools/tests { };
113
114 stdenv-inputs = callPackage ./stdenv-inputs { };
115 stdenv = recurseIntoAttrs (callPackage ./stdenv { });
116
117 hardeningFlags = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix { });
118 hardeningFlags-gcc = recurseIntoAttrs (
119 callPackage ./cc-wrapper/hardening.nix {
120 stdenv = pkgs.gccStdenv;
121 }
122 );
123 hardeningFlags-clang = recurseIntoAttrs (
124 callPackage ./cc-wrapper/hardening.nix {
125 stdenv = pkgs.llvmPackages.stdenv;
126 }
127 );
128
129 config = callPackage ./config.nix { };
130
131 top-level = callPackage ./top-level { };
132
133 haskell = callPackage ./haskell { };
134
135 hooks = recurseIntoAttrs (callPackage ./hooks { });
136
137 cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = pkgs.gccMultiStdenv; };
138 cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = pkgs.clangMultiStdenv; };
139
140 compress-drv = callPackage ../build-support/compress-drv/test.nix { };
141
142 fetchurl = recurseIntoAttrs (callPackages ../build-support/fetchurl/tests.nix { });
143 fetchtorrent = recurseIntoAttrs (callPackages ../build-support/fetchtorrent/tests.nix { });
144 fetchpatch = recurseIntoAttrs (callPackages ../build-support/fetchpatch/tests.nix { });
145 fetchpatch2 = recurseIntoAttrs (
146 callPackages ../build-support/fetchpatch/tests.nix { fetchpatch = pkgs.fetchpatch2; }
147 );
148 fetchDebianPatch = recurseIntoAttrs (callPackages ../build-support/fetchdebianpatch/tests.nix { });
149 fetchzip = recurseIntoAttrs (callPackages ../build-support/fetchzip/tests.nix { });
150 fetchgit = recurseIntoAttrs (callPackages ../build-support/fetchgit/tests.nix { });
151 fetchNextcloudApp = recurseIntoAttrs (
152 callPackages ../build-support/fetchnextcloudapp/tests.nix { }
153 );
154 fetchFromBitbucket = recurseIntoAttrs (callPackages ../build-support/fetchbitbucket/tests.nix { });
155 fetchFromGitHub = recurseIntoAttrs (callPackages ../build-support/fetchgithub/tests.nix { });
156 fetchFirefoxAddon = recurseIntoAttrs (
157 callPackages ../build-support/fetchfirefoxaddon/tests.nix { }
158 );
159 fetchPypiLegacy = recurseIntoAttrs (callPackages ../build-support/fetchpypilegacy/tests.nix { });
160
161 install-shell-files = recurseIntoAttrs (callPackage ./install-shell-files { });
162
163 checkpointBuildTools = callPackage ./checkpointBuild { };
164
165 kernel-config = callPackage ./kernel.nix { };
166
167 ld-library-path = callPackage ./ld-library-path { };
168
169 cross = recurseIntoAttrs (callPackage ./cross { });
170
171 php = recurseIntoAttrs (callPackages ./php { });
172
173 go = recurseIntoAttrs (callPackage ../build-support/go/tests.nix { });
174
175 pkg-config = recurseIntoAttrs (callPackage ../top-level/pkg-config/tests.nix { });
176
177 buildRustCrate = recurseIntoAttrs (callPackage ../build-support/rust/build-rust-crate/test { });
178 importCargoLock = recurseIntoAttrs (callPackage ../build-support/rust/test/import-cargo-lock { });
179
180 vim = callPackage ./vim { };
181
182 nixos-functions = callPackage ./nixos-functions { };
183
184 nixosOptionsDoc = recurseIntoAttrs (callPackage ../../nixos/lib/make-options-doc/tests.nix { });
185
186 overriding = callPackage ./overriding.nix { };
187
188 texlive = recurseIntoAttrs (callPackage ./texlive { });
189
190 cuda = callPackage ./cuda { };
191
192 trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix { };
193
194 vmTools = callPackage ../build-support/vm/test.nix { };
195
196 writers = callPackage ../build-support/writers/test.nix { };
197
198 testers = callPackage ../build-support/testers/test/default.nix { };
199
200 dhall = callPackage ./dhall { };
201
202 cue-validation = callPackage ./cue { };
203
204 coq = callPackage ./coq { };
205
206 dotnet = recurseIntoAttrs (callPackages ./dotnet { });
207
208 makeHardcodeGsettingsPatch = recurseIntoAttrs (callPackage ./make-hardcode-gsettings-patch { });
209
210 makeWrapper = callPackage ./make-wrapper { };
211 makeBinaryWrapper = callPackage ./make-binary-wrapper {
212 makeBinaryWrapper = pkgs.makeBinaryWrapper.override {
213 # Enable sanitizers in the tests only, to avoid the performance cost in regular usage.
214 # The sanitizers cause errors on aarch64-darwin, see https://github.com/NixOS/nixpkgs/pull/150079#issuecomment-994132734
215 sanitizers =
216 optionals (!(pkgs.stdenv.hostPlatform.isDarwin && pkgs.stdenv.hostPlatform.isAarch64))
217 [
218 "undefined"
219 "address"
220 ];
221 };
222 };
223
224 lib-tests = import ../../lib/tests/release.nix { inherit pkgs; };
225
226 pkgs-lib = recurseIntoAttrs (callPackage ../pkgs-lib/tests { });
227
228 buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { });
229
230 auto-patchelf-hook = callPackage ./auto-patchelf-hook { };
231
232 auto-patchelf-hook-preserve-origin = callPackage ./auto-patchelf-hook-preserve-origin { };
233
234 # Accumulate all passthru.tests from arrayUtilities into a single attribute set.
235 arrayUtilities = recurseIntoAttrs (
236 concatMapAttrs (
237 name: value:
238 optionalAttrs (value ? passthru.tests) {
239 ${name} = value.passthru.tests;
240 }
241 ) pkgs.arrayUtilities
242 );
243
244 srcOnly = callPackage ../build-support/src-only/tests.nix { };
245
246 systemd = callPackage ./systemd { };
247
248 replaceVars = recurseIntoAttrs (callPackage ./replace-vars { });
249
250 substitute = recurseIntoAttrs (callPackage ./substitute { });
251
252 build-environment-info = callPackage ./build-environment-info { };
253
254 rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { });
255
256 prefer-remote-fetch = recurseIntoAttrs (
257 callPackages ../build-support/prefer-remote-fetch/tests.nix { }
258 );
259
260 home-assistant-component-tests = recurseIntoAttrs pkgs.home-assistant.tests.components;
261}