1# This jobset is used to generate a NixOS channel that contains a
2# small subset of Nixpkgs, mostly useful for servers that need fast
3# security updates.
4#
5# Individual jobs can be tested by running:
6#
7# nix-build nixos/release-small.nix -A <jobname>
8#
9{
10 nixpkgs ? {
11 outPath = (import ../lib).cleanSource ./..;
12 revCount = 56789;
13 shortRev = "gfedcba";
14 },
15 stableBranch ? false,
16 supportedSystems ? [
17 "aarch64-linux"
18 "x86_64-linux"
19 ], # no i686-linux
20}:
21
22let
23
24 nixpkgsSrc = nixpkgs; # urgh
25
26 pkgs = import ./.. { system = "x86_64-linux"; };
27
28 lib = pkgs.lib;
29
30 nixos' = import ./release.nix {
31 inherit stableBranch supportedSystems;
32 nixpkgs = nixpkgsSrc;
33 };
34
35 nixpkgs' = builtins.removeAttrs (import ../pkgs/top-level/release.nix {
36 inherit supportedSystems;
37 nixpkgs = nixpkgsSrc;
38 }) [ "unstable" ];
39
40in
41rec {
42
43 nixos = {
44 inherit (nixos')
45 channel
46 manual
47 options
48 dummy
49 ;
50 tests = {
51 acme = {
52 inherit (nixos'.tests.acme)
53 http01-builtin
54 dns01
55 ;
56 };
57 inherit (nixos'.tests)
58 containers-imperative
59 containers-ip
60 firewall
61 ipv6
62 login
63 misc
64 nat
65 nfs4
66 openssh
67 php
68 predictable-interface-names
69 proxy
70 simple
71 ;
72 latestKernel = {
73 inherit (nixos'.tests.latestKernel)
74 login
75 ;
76 };
77 installer = {
78 inherit (nixos'.tests.installer)
79 lvm
80 separateBoot
81 simple
82 simpleUefiSystemdBoot
83 ;
84 };
85 };
86 };
87
88 nixpkgs = {
89 inherit (nixpkgs')
90 apacheHttpd
91 cmake
92 cryptsetup
93 emacs
94 gettext
95 git
96 imagemagick
97 jdk
98 linux
99 mariadb
100 nginx
101 nodejs
102 openssh
103 opensshTest
104 php
105 postgresql
106 python3
107 release-checks
108 rsyslog
109 stdenv
110 subversion
111 tarball
112 vim
113 tests-stdenv-gcc-stageCompare
114 ;
115 };
116
117 tested =
118 let
119 onSupported = x: map (system: "${x}.${system}") supportedSystems;
120 onSystems =
121 systems: x: map (system: "${x}.${system}") (pkgs.lib.intersectLists systems supportedSystems);
122 in
123 pkgs.releaseTools.aggregate {
124 name = "nixos-${nixos.channel.version}";
125 meta = {
126 description = "Release-critical builds for the NixOS channel";
127 maintainers = [ ];
128 };
129 constituents = lib.flatten [
130 [
131 "nixos.channel"
132 "nixpkgs.tarball"
133 "nixpkgs.release-checks"
134 ]
135 (map (onSystems [ "x86_64-linux" ]) [
136 "nixos.tests.installer.lvm"
137 "nixos.tests.installer.separateBoot"
138 "nixos.tests.installer.simple"
139 ])
140 (map onSupported [
141 "nixos.dummy"
142 "nixos.manual"
143 "nixos.tests.acme.http01-builtin"
144 "nixos.tests.acme.dns01"
145 "nixos.tests.containers-imperative"
146 "nixos.tests.containers-ip"
147 "nixos.tests.firewall"
148 "nixos.tests.ipv6"
149 "nixos.tests.installer.simpleUefiSystemdBoot"
150 "nixos.tests.login"
151 "nixos.tests.latestKernel.login"
152 "nixos.tests.misc"
153 "nixos.tests.nat.firewall"
154 "nixos.tests.nat.standalone"
155 "nixos.tests.nfs4.simple"
156 "nixos.tests.openssh"
157 "nixos.tests.php.fpm"
158 "nixos.tests.php.pcre"
159 "nixos.tests.predictable-interface-names.predictable"
160 "nixos.tests.predictable-interface-names.predictableNetworkd"
161 "nixos.tests.predictable-interface-names.unpredictable"
162 "nixos.tests.predictable-interface-names.unpredictableNetworkd"
163 "nixos.tests.proxy"
164 "nixos.tests.simple"
165 "nixpkgs.jdk"
166 "nixpkgs.tests-stdenv-gcc-stageCompare"
167 "nixpkgs.opensshTest"
168 ])
169 ];
170 };
171
172}