Merge pull request #308829 from r-ryantm/auto-update/qlog
[NixPkgs.git] / nixos / tests / all-tests.nix
blobf9e81f2bbd8d6e8fc216ccb45404c07b54916480
1 { system,
2   pkgs,
4   # Projects the test configuration into a the desired value; usually
5   # the test runner: `config: config.test`.
6   callTest,
8 }:
9 # The return value of this function will be an attrset with arbitrary depth and
10 # the `anything` returned by callTest at its test leafs.
11 # The tests not supported by `system` will be replaced with `{}`, so that
12 # `passthru.tests` can contain links to those without breaking on architectures
13 # where said tests are unsupported.
14 # Example callTest that just extracts the derivation from the test:
15 #   callTest = t: t.test;
17 with pkgs.lib;
19 let
20   discoverTests = val:
21     if isAttrs val
22     then
23       if hasAttr "test" val then callTest val
24       else mapAttrs (n: s: if n == "passthru" then s else discoverTests s) val
25     else if isFunction val
26       then
27         # Tests based on make-test-python.nix will return the second lambda
28         # in that file, which are then forwarded to the test definition
29         # following the `import make-test-python.nix` expression
30         # (if it is a function).
31         discoverTests (val { inherit system pkgs; })
32       else val;
33   handleTest = path: args:
34     discoverTests (import path ({ inherit system pkgs; } // args));
35   handleTestOn = systems: path: args:
36     if elem system systems then handleTest path args
37     else {};
39   nixosLib = import ../lib {
40     # Experimental features need testing too, but there's no point in warning
41     # about it, so we enable the feature flag.
42     featureFlags.minimalModules = {};
43   };
44   evalMinimalConfig = module: nixosLib.evalModules { modules = [ module ]; };
46   inherit
47     (rec {
48       doRunTest = arg: ((import ../lib/testing-python.nix { inherit system pkgs; }).evalTest {
49         imports = [ arg readOnlyPkgs ];
50       }).config.result;
51       findTests = tree:
52         if tree?recurseForDerivations && tree.recurseForDerivations
53         then
54           mapAttrs
55             (k: findTests)
56             (builtins.removeAttrs tree ["recurseForDerivations"])
57         else callTest tree;
59       runTest = arg: let r = doRunTest arg; in findTests r;
60       runTestOn = systems: arg:
61         if elem system systems then runTest arg
62         else {};
63     })
64     runTest
65     runTestOn
66     ;
68   # Using a single instance of nixpkgs makes test evaluation faster.
69   # To make sure we don't accidentally depend on a modified pkgs, we make the
70   # related options read-only. We need to test the right configuration.
71   #
72   # If your service depends on a nixpkgs setting, first try to avoid that, but
73   # otherwise, you can remove the readOnlyPkgs import and test your service as
74   # usual.
75   readOnlyPkgs =
76     # TODO: We currently accept this for nixosTests, so that the `pkgs` argument
77     #       is consistent with `pkgs` in `pkgs.nixosTests`. Can we reinitialize
78     #       it with `allowAliases = false`?
79     # warnIf pkgs.config.allowAliases "nixosTests: pkgs includes aliases."
80     {
81       _file = "${__curPos.file} readOnlyPkgs";
82       _class = "nixosTest";
83       node.pkgs = pkgs.pkgsLinux;
84     };
86 in {
88   # Testing the test driver
89   nixos-test-driver = {
90     extra-python-packages = handleTest ./nixos-test-driver/extra-python-packages.nix {};
91     lib-extend = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./nixos-test-driver/lib-extend.nix {};
92     node-name = runTest ./nixos-test-driver/node-name.nix;
93     busybox = runTest ./nixos-test-driver/busybox.nix;
94     driver-timeout = pkgs.runCommand "ensure-timeout-induced-failure" {
95       failed = pkgs.testers.testBuildFailure ((runTest ./nixos-test-driver/timeout.nix).config.rawTestDerivation);
96     } ''
97       grep -F "timeout reached; test terminating" $failed/testBuildFailure.log
98       # The program will always be terminated by SIGTERM (143) if it waits for the deadline thread.
99       [[ 143 = $(cat $failed/testBuildFailure.exit) ]]
100       touch $out
101     '';
102   };
104   # NixOS vm tests and non-vm unit tests
106   _3proxy = runTest ./3proxy.nix;
107   aaaaxy = runTest ./aaaaxy.nix;
108   acme = runTest ./acme.nix;
109   acme-dns = handleTest ./acme-dns.nix {};
110   adguardhome = runTest ./adguardhome.nix;
111   aesmd = runTestOn ["x86_64-linux"] ./aesmd.nix;
112   agate = runTest ./web-servers/agate.nix;
113   agda = handleTest ./agda.nix {};
114   airsonic = handleTest ./airsonic.nix {};
115   akkoma = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./akkoma.nix {};
116   akkoma-confined = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./akkoma.nix { confined = true; };
117   alice-lg = handleTest ./alice-lg.nix {};
118   allTerminfo = handleTest ./all-terminfo.nix {};
119   alps = handleTest ./alps.nix {};
120   amazon-init-shell = handleTest ./amazon-init-shell.nix {};
121   amazon-ssm-agent = handleTest ./amazon-ssm-agent.nix {};
122   amd-sev = runTest ./amd-sev.nix;
123   anbox = runTest ./anbox.nix;
124   angie-api = handleTest ./angie-api.nix {};
125   anki-sync-server = handleTest ./anki-sync-server.nix {};
126   anuko-time-tracker = handleTest ./anuko-time-tracker.nix {};
127   apcupsd = handleTest ./apcupsd.nix {};
128   apfs = runTest ./apfs.nix;
129   appliance-repart-image = runTest ./appliance-repart-image.nix;
130   apparmor = handleTest ./apparmor.nix {};
131   archi = handleTest ./archi.nix {};
132   armagetronad = handleTest ./armagetronad.nix {};
133   atd = handleTest ./atd.nix {};
134   atop = handleTest ./atop.nix {};
135   atuin = handleTest ./atuin.nix {};
136   audiobookshelf = handleTest ./audiobookshelf.nix {};
137   auth-mysql = handleTest ./auth-mysql.nix {};
138   authelia = handleTest ./authelia.nix {};
139   avahi = handleTest ./avahi.nix {};
140   avahi-with-resolved = handleTest ./avahi.nix { networkd = true; };
141   ayatana-indicators = handleTest ./ayatana-indicators.nix {};
142   babeld = handleTest ./babeld.nix {};
143   bazarr = handleTest ./bazarr.nix {};
144   bcachefs = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bcachefs.nix {};
145   beanstalkd = handleTest ./beanstalkd.nix {};
146   bees = handleTest ./bees.nix {};
147   binary-cache = handleTest ./binary-cache.nix {};
148   bind = handleTest ./bind.nix {};
149   bird = handleTest ./bird.nix {};
150   birdwatcher = handleTest ./birdwatcher.nix {};
151   bitcoind = handleTest ./bitcoind.nix {};
152   bittorrent = handleTest ./bittorrent.nix {};
153   blockbook-frontend = handleTest ./blockbook-frontend.nix {};
154   blocky = handleTest ./blocky.nix {};
155   boot = handleTestOn ["x86_64-linux" "aarch64-linux"] ./boot.nix {};
156   bootspec = handleTestOn ["x86_64-linux"] ./bootspec.nix {};
157   boot-stage1 = handleTest ./boot-stage1.nix {};
158   borgbackup = handleTest ./borgbackup.nix {};
159   botamusique = handleTest ./botamusique.nix {};
160   bpf = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bpf.nix {};
161   bpftune = handleTest ./bpftune.nix {};
162   breitbandmessung = handleTest ./breitbandmessung.nix {};
163   brscan5 = handleTest ./brscan5.nix {};
164   btrbk = handleTest ./btrbk.nix {};
165   btrbk-doas = handleTest ./btrbk-doas.nix {};
166   btrbk-no-timer = handleTest ./btrbk-no-timer.nix {};
167   btrbk-section-order = handleTest ./btrbk-section-order.nix {};
168   budgie = handleTest ./budgie.nix {};
169   buildbot = handleTest ./buildbot.nix {};
170   buildkite-agents = handleTest ./buildkite-agents.nix {};
171   c2fmzq = handleTest ./c2fmzq.nix {};
172   caddy = handleTest ./caddy.nix {};
173   cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {};
174   cage = handleTest ./cage.nix {};
175   cagebreak = handleTest ./cagebreak.nix {};
176   calibre-web = handleTest ./calibre-web.nix {};
177   calibre-server = handleTest ./calibre-server.nix {};
178   castopod = handleTest ./castopod.nix {};
179   cassandra_3_0 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_3_0; };
180   cassandra_3_11 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_3_11; };
181   cassandra_4 = handleTest ./cassandra.nix { testPackage = pkgs.cassandra_4; };
182   centrifugo = runTest ./centrifugo.nix;
183   ceph-multi-node = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./ceph-multi-node.nix {};
184   ceph-single-node = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./ceph-single-node.nix {};
185   ceph-single-node-bluestore = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./ceph-single-node-bluestore.nix {};
186   certmgr = handleTest ./certmgr.nix {};
187   cfssl = handleTestOn ["aarch64-linux" "x86_64-linux"] ./cfssl.nix {};
188   cgit = handleTest ./cgit.nix {};
189   charliecloud = handleTest ./charliecloud.nix {};
190   chromium = (handleTestOn ["aarch64-linux" "x86_64-linux"] ./chromium.nix {}).stable or {};
191   chrony = handleTestOn ["aarch64-linux" "x86_64-linux"] ./chrony.nix {};
192   chrony-ptp = handleTestOn ["aarch64-linux" "x86_64-linux"] ./chrony-ptp.nix {};
193   cinnamon = handleTest ./cinnamon.nix {};
194   cinnamon-wayland = handleTest ./cinnamon-wayland.nix {};
195   cjdns = handleTest ./cjdns.nix {};
196   clatd = handleTest ./clatd.nix {};
197   clickhouse = handleTest ./clickhouse.nix {};
198   cloud-init = handleTest ./cloud-init.nix {};
199   cloud-init-hostname = handleTest ./cloud-init-hostname.nix {};
200   cloudlog = handleTest ./cloudlog.nix {};
201   cntr = handleTestOn ["aarch64-linux" "x86_64-linux"] ./cntr.nix {};
202   cockpit = handleTest ./cockpit.nix {};
203   cockroachdb = handleTestOn ["x86_64-linux"] ./cockroachdb.nix {};
204   code-server = handleTest ./code-server.nix {};
205   coder = handleTest ./coder.nix {};
206   collectd = handleTest ./collectd.nix {};
207   connman = handleTest ./connman.nix {};
208   consul = handleTest ./consul.nix {};
209   consul-template = handleTest ./consul-template.nix {};
210   containers-bridge = handleTest ./containers-bridge.nix {};
211   containers-custom-pkgs.nix = handleTest ./containers-custom-pkgs.nix {};
212   containers-ephemeral = handleTest ./containers-ephemeral.nix {};
213   containers-extra_veth = handleTest ./containers-extra_veth.nix {};
214   containers-hosts = handleTest ./containers-hosts.nix {};
215   containers-imperative = handleTest ./containers-imperative.nix {};
216   containers-ip = handleTest ./containers-ip.nix {};
217   containers-macvlans = handleTest ./containers-macvlans.nix {};
218   containers-names = handleTest ./containers-names.nix {};
219   containers-nested = handleTest ./containers-nested.nix {};
220   containers-physical_interfaces = handleTest ./containers-physical_interfaces.nix {};
221   containers-portforward = handleTest ./containers-portforward.nix {};
222   containers-reloadable = handleTest ./containers-reloadable.nix {};
223   containers-require-bind-mounts = handleTest ./containers-require-bind-mounts.nix {};
224   containers-restart_networking = handleTest ./containers-restart_networking.nix {};
225   containers-tmpfs = handleTest ./containers-tmpfs.nix {};
226   containers-unified-hierarchy = handleTest ./containers-unified-hierarchy.nix {};
227   convos = handleTest ./convos.nix {};
228   corerad = handleTest ./corerad.nix {};
229   coturn = handleTest ./coturn.nix {};
230   couchdb = handleTest ./couchdb.nix {};
231   crabfit = handleTest ./crabfit.nix {};
232   cri-o = handleTestOn ["aarch64-linux" "x86_64-linux"] ./cri-o.nix {};
233   cups-pdf = handleTest ./cups-pdf.nix {};
234   curl-impersonate = handleTest ./curl-impersonate.nix {};
235   custom-ca = handleTest ./custom-ca.nix {};
236   croc = handleTest ./croc.nix {};
237   darling = handleTest ./darling.nix {};
238   dae = handleTest ./dae.nix {};
239   davis = handleTest ./davis.nix {};
240   db-rest = handleTest ./db-rest.nix {};
241   dconf = handleTest ./dconf.nix {};
242   deconz = handleTest ./deconz.nix {};
243   deepin = handleTest ./deepin.nix {};
244   deluge = handleTest ./deluge.nix {};
245   dendrite = handleTest ./matrix/dendrite.nix {};
246   dex-oidc = handleTest ./dex-oidc.nix {};
247   dhparams = handleTest ./dhparams.nix {};
248   disable-installer-tools = handleTest ./disable-installer-tools.nix {};
249   discourse = handleTest ./discourse.nix {};
250   dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
251   dnscrypt-wrapper = runTestOn ["x86_64-linux"] ./dnscrypt-wrapper;
252   dnsdist = import ./dnsdist.nix { inherit pkgs runTest; };
253   doas = handleTest ./doas.nix {};
254   docker = handleTestOn ["aarch64-linux" "x86_64-linux"] ./docker.nix {};
255   docker-rootless = handleTestOn ["aarch64-linux" "x86_64-linux"] ./docker-rootless.nix {};
256   docker-registry = handleTest ./docker-registry.nix {};
257   docker-tools = handleTestOn ["x86_64-linux"] ./docker-tools.nix {};
258   docker-tools-cross = handleTestOn ["x86_64-linux" "aarch64-linux"] ./docker-tools-cross.nix {};
259   docker-tools-overlay = handleTestOn ["x86_64-linux"] ./docker-tools-overlay.nix {};
260   documize = handleTest ./documize.nix {};
261   documentation = pkgs.callPackage ../modules/misc/documentation/test.nix { inherit nixosLib; };
262   doh-proxy-rust = handleTest ./doh-proxy-rust.nix {};
263   dokuwiki = handleTest ./dokuwiki.nix {};
264   dolibarr = handleTest ./dolibarr.nix {};
265   domination = handleTest ./domination.nix {};
266   dovecot = handleTest ./dovecot.nix {};
267   drawterm = discoverTests (import ./drawterm.nix);
268   drbd = handleTest ./drbd.nix {};
269   dublin-traceroute = handleTest ./dublin-traceroute.nix {};
270   earlyoom = handleTestOn ["x86_64-linux"] ./earlyoom.nix {};
271   early-mount-options = handleTest ./early-mount-options.nix {};
272   ec2-config = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-config or {};
273   ec2-nixops = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-nixops or {};
274   ecryptfs = handleTest ./ecryptfs.nix {};
275   fscrypt = handleTest ./fscrypt.nix {};
276   fastnetmon-advanced = runTest ./fastnetmon-advanced.nix;
277   ejabberd = handleTest ./xmpp/ejabberd.nix {};
278   elk = handleTestOn ["x86_64-linux"] ./elk.nix {};
279   emacs-daemon = handleTest ./emacs-daemon.nix {};
280   endlessh = handleTest ./endlessh.nix {};
281   endlessh-go = handleTest ./endlessh-go.nix {};
282   engelsystem = handleTest ./engelsystem.nix {};
283   enlightenment = handleTest ./enlightenment.nix {};
284   env = handleTest ./env.nix {};
285   envfs = handleTest ./envfs.nix {};
286   envoy = handleTest ./envoy.nix {};
287   ergo = handleTest ./ergo.nix {};
288   ergochat = handleTest ./ergochat.nix {};
289   eris-server = handleTest ./eris-server.nix {};
290   esphome = handleTest ./esphome.nix {};
291   etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
292   activation = pkgs.callPackage ../modules/system/activation/test.nix { };
293   activation-var = runTest ./activation/var.nix;
294   activation-nix-channel = runTest ./activation/nix-channel.nix;
295   activation-etc-overlay-mutable = runTest ./activation/etc-overlay-mutable.nix;
296   activation-etc-overlay-immutable = runTest ./activation/etc-overlay-immutable.nix;
297   activation-perlless = runTest ./activation/perlless.nix;
298   etcd = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./etcd/etcd.nix {};
299   etcd-cluster = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./etcd/etcd-cluster.nix {};
300   etebase-server = handleTest ./etebase-server.nix {};
301   etesync-dav = handleTest ./etesync-dav.nix {};
302   evcc = handleTest ./evcc.nix {};
303   fail2ban = handleTest ./fail2ban.nix { };
304   fakeroute = handleTest ./fakeroute.nix {};
305   fancontrol = handleTest ./fancontrol.nix {};
306   fanout = handleTest ./fanout.nix {};
307   fcitx5 = handleTest ./fcitx5 {};
308   fenics = handleTest ./fenics.nix {};
309   ferm = handleTest ./ferm.nix {};
310   ferretdb = handleTest ./ferretdb.nix {};
311   filesystems-overlayfs = runTest ./filesystems-overlayfs.nix;
312   firefly-iii = handleTest ./firefly-iii.nix {};
313   firefox = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox; };
314   firefox-beta = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-beta; };
315   firefox-devedition = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-devedition; };
316   firefox-esr    = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr; }; # used in `tested` job
317   firefox-esr-115 = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr-115; };
318   firefoxpwa = handleTest ./firefoxpwa.nix {};
319   firejail = handleTest ./firejail.nix {};
320   firewall = handleTest ./firewall.nix { nftables = false; };
321   firewall-nftables = handleTest ./firewall.nix { nftables = true; };
322   fish = handleTest ./fish.nix {};
323   flannel = handleTestOn ["x86_64-linux"] ./flannel.nix {};
324   floorp = handleTest ./firefox.nix { firefoxPackage = pkgs.floorp; };
325   fluentd = handleTest ./fluentd.nix {};
326   fluidd = handleTest ./fluidd.nix {};
327   fontconfig-default-fonts = handleTest ./fontconfig-default-fonts.nix {};
328   forgejo = handleTest ./forgejo.nix { };
329   freenet = handleTest ./freenet.nix {};
330   freeswitch = handleTest ./freeswitch.nix {};
331   freetube = discoverTests (import ./freetube.nix);
332   freshrss-sqlite = handleTest ./freshrss-sqlite.nix {};
333   freshrss-pgsql = handleTest ./freshrss-pgsql.nix {};
334   freshrss-http-auth = handleTest ./freshrss-http-auth.nix {};
335   freshrss-none-auth = handleTest ./freshrss-none-auth.nix {};
336   frigate = handleTest ./frigate.nix {};
337   frp = handleTest ./frp.nix {};
338   frr = handleTest ./frr.nix {};
339   fsck = handleTest ./fsck.nix {};
340   fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
341   ft2-clone = handleTest ./ft2-clone.nix {};
342   legit = handleTest ./legit.nix {};
343   mimir = handleTest ./mimir.nix {};
344   garage = handleTest ./garage {};
345   gemstash = handleTest ./gemstash.nix {};
346   geoserver = runTest ./geoserver.nix;
347   gerrit = handleTest ./gerrit.nix {};
348   geth = handleTest ./geth.nix {};
349   ghostunnel = handleTest ./ghostunnel.nix {};
350   gitdaemon = handleTest ./gitdaemon.nix {};
351   gitea = handleTest ./gitea.nix { giteaPackage = pkgs.gitea; };
352   github-runner = handleTest ./github-runner.nix {};
353   gitlab = runTest ./gitlab.nix;
354   gitolite = handleTest ./gitolite.nix {};
355   gitolite-fcgiwrap = handleTest ./gitolite-fcgiwrap.nix {};
356   glusterfs = handleTest ./glusterfs.nix {};
357   gnome = handleTest ./gnome.nix {};
358   gnome-extensions = handleTest ./gnome-extensions.nix {};
359   gnome-flashback = handleTest ./gnome-flashback.nix {};
360   gnome-xorg = handleTest ./gnome-xorg.nix {};
361   gns3-server = handleTest ./gns3-server.nix {};
362   gnupg = handleTest ./gnupg.nix {};
363   go-neb = handleTest ./go-neb.nix {};
364   gobgpd = handleTest ./gobgpd.nix {};
365   gocd-agent = handleTest ./gocd-agent.nix {};
366   gocd-server = handleTest ./gocd-server.nix {};
367   gollum = handleTest ./gollum.nix {};
368   gonic = handleTest ./gonic.nix {};
369   google-oslogin = handleTest ./google-oslogin {};
370   goss = handleTest ./goss.nix {};
371   gotify-server = handleTest ./gotify-server.nix {};
372   gotosocial = runTest ./web-apps/gotosocial.nix;
373   grafana = handleTest ./grafana {};
374   grafana-agent = handleTest ./grafana-agent.nix {};
375   graphite = handleTest ./graphite.nix {};
376   graylog = handleTest ./graylog.nix {};
377   grocy = handleTest ./grocy.nix {};
378   grow-partition = runTest ./grow-partition.nix;
379   grub = handleTest ./grub.nix {};
380   guacamole-server = handleTest ./guacamole-server.nix {};
381   guix = handleTest ./guix {};
382   gvisor = handleTest ./gvisor.nix {};
383   hadoop = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop; };
384   hadoop_3_2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop_3_2; };
385   hadoop2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop2; };
386   haka = handleTest ./haka.nix {};
387   haste-server = handleTest ./haste-server.nix {};
388   haproxy = handleTest ./haproxy.nix {};
389   hardened = handleTest ./hardened.nix {};
390   harmonia = runTest ./harmonia.nix;
391   headscale = handleTest ./headscale.nix {};
392   healthchecks = handleTest ./web-apps/healthchecks.nix {};
393   hbase2 = handleTest ./hbase.nix { package=pkgs.hbase2; };
394   hbase_2_4 = handleTest ./hbase.nix { package=pkgs.hbase_2_4; };
395   hbase3 = handleTest ./hbase.nix { package=pkgs.hbase3; };
396   hddfancontrol = handleTest ./hddfancontrol.nix {};
397   hedgedoc = handleTest ./hedgedoc.nix {};
398   herbstluftwm = handleTest ./herbstluftwm.nix {};
399   homepage-dashboard = handleTest ./homepage-dashboard.nix {};
400   honk = runTest ./honk.nix;
401   installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
402   invidious = handleTest ./invidious.nix {};
403   isolate = handleTest ./isolate.nix {};
404   livebook-service = handleTest ./livebook-service.nix {};
405   pyload = handleTest ./pyload.nix {};
406   oci-containers = handleTestOn ["aarch64-linux" "x86_64-linux"] ./oci-containers.nix {};
407   odoo = handleTest ./odoo.nix {};
408   odoo15 = handleTest ./odoo.nix { package = pkgs.odoo15; };
409   # 9pnet_virtio used to mount /nix partition doesn't support
410   # hibernation. This test happens to work on x86_64-linux but
411   # not on other platforms.
412   hibernate = handleTestOn ["x86_64-linux"] ./hibernate.nix {};
413   hibernate-systemd-stage-1 = handleTestOn ["x86_64-linux"] ./hibernate.nix { systemdStage1 = true; };
414   hitch = handleTest ./hitch {};
415   hledger-web = handleTest ./hledger-web.nix {};
416   hocker-fetchdocker = handleTest ./hocker-fetchdocker {};
417   hockeypuck = handleTest ./hockeypuck.nix { };
418   home-assistant = handleTest ./home-assistant.nix {};
419   hostname = handleTest ./hostname.nix {};
420   hound = handleTest ./hound.nix {};
421   hub = handleTest ./git/hub.nix {};
422   hydra = handleTest ./hydra {};
423   i3wm = handleTest ./i3wm.nix {};
424   icingaweb2 = handleTest ./icingaweb2.nix {};
425   iftop = handleTest ./iftop.nix {};
426   incron = handleTest ./incron.nix {};
427   incus = pkgs.recurseIntoAttrs (handleTest ./incus { inherit handleTestOn; inherit (pkgs) incus; });
428   incus-lts = pkgs.recurseIntoAttrs (handleTest ./incus { inherit handleTestOn; });
429   influxdb = handleTest ./influxdb.nix {};
430   influxdb2 = handleTest ./influxdb2.nix {};
431   initrd-network-openvpn = handleTestOn [ "x86_64-linux" "i686-linux" ] ./initrd-network-openvpn {};
432   initrd-network-ssh = handleTest ./initrd-network-ssh {};
433   initrd-luks-empty-passphrase = handleTest ./initrd-luks-empty-passphrase.nix {};
434   initrdNetwork = handleTest ./initrd-network.nix {};
435   initrd-secrets = handleTest ./initrd-secrets.nix {};
436   initrd-secrets-changing = handleTest ./initrd-secrets-changing.nix {};
437   input-remapper = handleTest ./input-remapper.nix {};
438   inspircd = handleTest ./inspircd.nix {};
439   installer = handleTest ./installer.nix {};
440   installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
441   intune = handleTest ./intune.nix {};
442   invoiceplane = handleTest ./invoiceplane.nix {};
443   iodine = handleTest ./iodine.nix {};
444   ipv6 = handleTest ./ipv6.nix {};
445   iscsi-multipath-root = handleTest ./iscsi-multipath-root.nix {};
446   iscsi-root = handleTest ./iscsi-root.nix {};
447   isso = handleTest ./isso.nix {};
448   jackett = handleTest ./jackett.nix {};
449   jellyfin = handleTest ./jellyfin.nix {};
450   jenkins = handleTest ./jenkins.nix {};
451   jenkins-cli = handleTest ./jenkins-cli.nix {};
452   jibri = handleTest ./jibri.nix {};
453   jirafeau = handleTest ./jirafeau.nix {};
454   jitsi-meet = handleTest ./jitsi-meet.nix {};
455   jool = import ./jool.nix { inherit pkgs runTest; };
456   jotta-cli = handleTest ./jotta-cli.nix {};
457   k3s = handleTest ./k3s {};
458   kafka = handleTest ./kafka.nix {};
459   kanidm = handleTest ./kanidm.nix {};
460   karma = handleTest ./karma.nix {};
461   kavita = handleTest ./kavita.nix {};
462   kbd-setfont-decompress = handleTest ./kbd-setfont-decompress.nix {};
463   kbd-update-search-paths-patch = handleTest ./kbd-update-search-paths-patch.nix {};
464   kea = handleTest ./kea.nix {};
465   keepalived = handleTest ./keepalived.nix {};
466   keepassxc = handleTest ./keepassxc.nix {};
467   kerberos = handleTest ./kerberos/default.nix {};
468   kernel-generic = handleTest ./kernel-generic.nix {};
469   kernel-latest-ath-user-regd = handleTest ./kernel-latest-ath-user-regd.nix {};
470   kernel-rust = handleTest ./kernel-rust.nix {};
471   keter = handleTest ./keter.nix {};
472   kexec = handleTest ./kexec.nix {};
473   keycloak = discoverTests (import ./keycloak.nix);
474   keyd = handleTest ./keyd.nix {};
475   keymap = handleTest ./keymap.nix {};
476   knot = handleTest ./knot.nix {};
477   komga = handleTest ./komga.nix {};
478   krb5 = discoverTests (import ./krb5);
479   ksm = handleTest ./ksm.nix {};
480   kthxbye = handleTest ./kthxbye.nix {};
481   kubernetes = handleTestOn ["x86_64-linux"] ./kubernetes {};
482   kubo = import ./kubo { inherit recurseIntoAttrs runTest; };
483   ladybird = handleTest ./ladybird.nix {};
484   languagetool = handleTest ./languagetool.nix {};
485   lanraragi = handleTest ./lanraragi.nix {};
486   latestKernel.login = handleTest ./login.nix { latestKernel = true; };
487   leaps = handleTest ./leaps.nix {};
488   lemmy = handleTest ./lemmy.nix {};
489   libinput = handleTest ./libinput.nix {};
490   libreddit = handleTest ./libreddit.nix {};
491   librenms = handleTest ./librenms.nix {};
492   libresprite = handleTest ./libresprite.nix {};
493   libreswan = handleTest ./libreswan.nix {};
494   librewolf = handleTest ./firefox.nix { firefoxPackage = pkgs.librewolf; };
495   libuiohook = handleTest ./libuiohook.nix {};
496   libvirtd = handleTest ./libvirtd.nix {};
497   lidarr = handleTest ./lidarr.nix {};
498   lightdm = handleTest ./lightdm.nix {};
499   lighttpd = handleTest ./lighttpd.nix {};
500   limesurvey = handleTest ./limesurvey.nix {};
501   listmonk = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./listmonk.nix {};
502   litestream = handleTest ./litestream.nix {};
503   lldap = handleTest ./lldap.nix {};
504   locate = handleTest ./locate.nix {};
505   login = handleTest ./login.nix {};
506   logrotate = handleTest ./logrotate.nix {};
507   loki = handleTest ./loki.nix {};
508   luks = handleTest ./luks.nix {};
509   lvm2 = handleTest ./lvm2 {};
510   lxd = pkgs.recurseIntoAttrs (handleTest ./lxd { inherit handleTestOn; });
511   lxd-image-server = handleTest ./lxd-image-server.nix {};
512   #logstash = handleTest ./logstash.nix {};
513   lomiri = handleTest ./lomiri.nix {};
514   lomiri-system-settings = handleTest ./lomiri-system-settings.nix {};
515   lorri = handleTest ./lorri/default.nix {};
516   maddy = discoverTests (import ./maddy { inherit handleTest; });
517   maestral = handleTest ./maestral.nix {};
518   magic-wormhole-mailbox-server = handleTest ./magic-wormhole-mailbox-server.nix {};
519   magnetico = handleTest ./magnetico.nix {};
520   mailcatcher = handleTest ./mailcatcher.nix {};
521   mailhog = handleTest ./mailhog.nix {};
522   mailman = handleTest ./mailman.nix {};
523   man = handleTest ./man.nix {};
524   mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
525   mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; });
526   pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; });
527   mate = handleTest ./mate.nix {};
528   mate-wayland = handleTest ./mate-wayland.nix {};
529   matter-server = handleTest ./matter-server.nix {};
530   matomo = handleTest ./matomo.nix {};
531   matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {};
532   matrix-conduit = handleTest ./matrix/conduit.nix {};
533   matrix-synapse = handleTest ./matrix/synapse.nix {};
534   matrix-synapse-workers = handleTest ./matrix/synapse-workers.nix {};
535   mautrix-meta-postgres = handleTest ./matrix/mautrix-meta-postgres.nix {};
536   mautrix-meta-sqlite = handleTest ./matrix/mautrix-meta-sqlite.nix {};
537   mattermost = handleTest ./mattermost.nix {};
538   mealie = handleTest ./mealie.nix {};
539   mediamtx = handleTest ./mediamtx.nix {};
540   mediatomb = handleTest ./mediatomb.nix {};
541   mediawiki = handleTest ./mediawiki.nix {};
542   meilisearch = handleTest ./meilisearch.nix {};
543   memcached = handleTest ./memcached.nix {};
544   merecat = handleTest ./merecat.nix {};
545   metabase = handleTest ./metabase.nix {};
546   mihomo = handleTest ./mihomo.nix {};
547   mindustry = handleTest ./mindustry.nix {};
548   minecraft = handleTest ./minecraft.nix {};
549   minecraft-server = handleTest ./minecraft-server.nix {};
550   minidlna = handleTest ./minidlna.nix {};
551   miniflux = handleTest ./miniflux.nix {};
552   minio = handleTest ./minio.nix {};
553   miriway = handleTest ./miriway.nix {};
554   misc = handleTest ./misc.nix {};
555   mjolnir = handleTest ./matrix/mjolnir.nix {};
556   mobilizon = handleTest ./mobilizon.nix {};
557   mod_perl = handleTest ./mod_perl.nix {};
558   molly-brown = handleTest ./molly-brown.nix {};
559   mollysocket = handleTest ./mollysocket.nix { };
560   monado = handleTest ./monado.nix {};
561   monetdb = handleTest ./monetdb.nix {};
562   monica = handleTest ./web-apps/monica.nix {};
563   mongodb = handleTest ./mongodb.nix {};
564   moodle = handleTest ./moodle.nix {};
565   moonraker = handleTest ./moonraker.nix {};
566   morph-browser = handleTest ./morph-browser.nix { };
567   morty = handleTest ./morty.nix {};
568   mosquitto = handleTest ./mosquitto.nix {};
569   moosefs = handleTest ./moosefs.nix {};
570   movim = discoverTests (import ./web-apps/movim { inherit handleTestOn; });
571   mpd = handleTest ./mpd.nix {};
572   mpv = handleTest ./mpv.nix {};
573   mtp = handleTest ./mtp.nix {};
574   multipass = handleTest ./multipass.nix {};
575   mumble = handleTest ./mumble.nix {};
576   # Fails on aarch64-linux at the PDF creation step - need to debug this on an
577   # aarch64 machine..
578   musescore = handleTestOn ["x86_64-linux"] ./musescore.nix {};
579   munin = handleTest ./munin.nix {};
580   mutableUsers = handleTest ./mutable-users.nix {};
581   mxisd = handleTest ./mxisd.nix {};
582   mycelium = handleTest ./mycelium {};
583   mympd = handleTest ./mympd.nix {};
584   mysql = handleTest ./mysql/mysql.nix {};
585   mysql-autobackup = handleTest ./mysql/mysql-autobackup.nix {};
586   mysql-backup = handleTest ./mysql/mysql-backup.nix {};
587   mysql-replication = handleTest ./mysql/mysql-replication.nix {};
588   n8n = handleTest ./n8n.nix {};
589   nagios = handleTest ./nagios.nix {};
590   nar-serve = handleTest ./nar-serve.nix {};
591   nat.firewall = handleTest ./nat.nix { withFirewall = true; };
592   nat.standalone = handleTest ./nat.nix { withFirewall = false; };
593   nat.nftables.firewall = handleTest ./nat.nix { withFirewall = true; nftables = true; };
594   nat.nftables.standalone = handleTest ./nat.nix { withFirewall = false; nftables = true; };
595   nats = handleTest ./nats.nix {};
596   navidrome = handleTest ./navidrome.nix {};
597   nbd = handleTest ./nbd.nix {};
598   ncdns = handleTest ./ncdns.nix {};
599   ndppd = handleTest ./ndppd.nix {};
600   nebula = handleTest ./nebula.nix {};
601   netbird = handleTest ./netbird.nix {};
602   nimdow = handleTest ./nimdow.nix {};
603   neo4j = handleTest ./neo4j.nix {};
604   netdata = handleTest ./netdata.nix {};
605   networking.scripted = handleTest ./networking/networkd-and-scripted.nix { networkd = false; };
606   networking.networkd = handleTest ./networking/networkd-and-scripted.nix { networkd = true; };
607   networking.networkmanager = handleTest ./networking/networkmanager.nix {};
608   netbox_3_6 = handleTest ./web-apps/netbox.nix { netbox = pkgs.netbox_3_6; };
609   netbox_3_7 = handleTest ./web-apps/netbox.nix { netbox = pkgs.netbox_3_7; };
610   netbox-upgrade = handleTest ./web-apps/netbox-upgrade.nix {};
611   # TODO: put in networking.nix after the test becomes more complete
612   networkingProxy = handleTest ./networking-proxy.nix {};
613   nextcloud = handleTest ./nextcloud {};
614   nexus = handleTest ./nexus.nix {};
615   # TODO: Test nfsv3 + Kerberos
616   nfs3 = handleTest ./nfs { version = 3; };
617   nfs4 = handleTest ./nfs { version = 4; };
618   nghttpx = handleTest ./nghttpx.nix {};
619   nginx = handleTest ./nginx.nix {};
620   nginx-auth = handleTest ./nginx-auth.nix {};
621   nginx-etag = handleTest ./nginx-etag.nix {};
622   nginx-etag-compression = handleTest ./nginx-etag-compression.nix {};
623   nginx-globalredirect = handleTest ./nginx-globalredirect.nix {};
624   nginx-http3 = handleTest ./nginx-http3.nix {};
625   nginx-modsecurity = handleTest ./nginx-modsecurity.nix {};
626   nginx-moreheaders = handleTest ./nginx-moreheaders.nix {};
627   nginx-njs = handleTest ./nginx-njs.nix {};
628   nginx-proxyprotocol = handleTest ./nginx-proxyprotocol {};
629   nginx-pubhtml = handleTest ./nginx-pubhtml.nix {};
630   nginx-redirectcode = handleTest ./nginx-redirectcode.nix {};
631   nginx-sso = handleTest ./nginx-sso.nix {};
632   nginx-status-page = handleTest ./nginx-status-page.nix {};
633   nginx-tmpdir = handleTest ./nginx-tmpdir.nix {};
634   nginx-unix-socket = handleTest ./nginx-unix-socket.nix {};
635   nginx-variants = handleTest ./nginx-variants.nix {};
636   nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {};
637   nitter = handleTest ./nitter.nix {};
638   nix-config = handleTest ./nix-config.nix {};
639   nix-ld = handleTest ./nix-ld.nix {};
640   nix-serve = handleTest ./nix-serve.nix {};
641   nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
642   nixops = handleTest ./nixops/default.nix {};
643   nixos-generate-config = handleTest ./nixos-generate-config.nix {};
644   nixos-rebuild-install-bootloader = handleTestOn ["x86_64-linux"] ./nixos-rebuild-install-bootloader.nix {};
645   nixos-rebuild-specialisations = handleTestOn ["x86_64-linux"] ./nixos-rebuild-specialisations.nix {};
646   nixos-rebuild-target-host = handleTest ./nixos-rebuild-target-host.nix {};
647   nixpkgs = pkgs.callPackage ../modules/misc/nixpkgs/test.nix { inherit evalMinimalConfig; };
648   nixseparatedebuginfod = handleTest ./nixseparatedebuginfod.nix {};
649   node-red = handleTest ./node-red.nix {};
650   nomad = handleTest ./nomad.nix {};
651   non-default-filesystems = handleTest ./non-default-filesystems.nix {};
652   non-switchable-system = runTest ./non-switchable-system.nix;
653   noto-fonts = handleTest ./noto-fonts.nix {};
654   noto-fonts-cjk-qt-default-weight = handleTest ./noto-fonts-cjk-qt-default-weight.nix {};
655   novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
656   npmrc = handleTest ./npmrc.nix {};
657   nscd = handleTest ./nscd.nix {};
658   nsd = handleTest ./nsd.nix {};
659   ntfy-sh = handleTest ./ntfy-sh.nix {};
660   ntfy-sh-migration = handleTest ./ntfy-sh-migration.nix {};
661   ntpd-rs = handleTest ./ntpd-rs.nix {};
662   nvmetcfg = handleTest ./nvmetcfg.nix {};
663   nzbget = handleTest ./nzbget.nix {};
664   nzbhydra2 = handleTest ./nzbhydra2.nix {};
665   ocis = handleTest ./ocis.nix {};
666   oddjobd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./oddjobd.nix {};
667   oh-my-zsh = handleTest ./oh-my-zsh.nix {};
668   ollama = handleTest ./ollama.nix {};
669   ombi = handleTest ./ombi.nix {};
670   openarena = handleTest ./openarena.nix {};
671   openldap = handleTest ./openldap.nix {};
672   opensearch = discoverTests (import ./opensearch.nix);
673   openresty-lua = handleTest ./openresty-lua.nix {};
674   opensmtpd = handleTest ./opensmtpd.nix {};
675   opensmtpd-rspamd = handleTest ./opensmtpd-rspamd.nix {};
676   opensnitch = handleTest ./opensnitch.nix {};
677   openssh = handleTest ./openssh.nix {};
678   octoprint = handleTest ./octoprint.nix {};
679   openstack-image-metadata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).metadata or {};
680   openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {};
681   opentabletdriver = handleTest ./opentabletdriver.nix {};
682   opentelemetry-collector = handleTest ./opentelemetry-collector.nix {};
683   ocsinventory-agent = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./ocsinventory-agent.nix {};
684   owncast = handleTest ./owncast.nix {};
685   outline = handleTest ./outline.nix {};
686   image-contents = handleTest ./image-contents.nix {};
687   openvscode-server = handleTest ./openvscode-server.nix {};
688   orangefs = handleTest ./orangefs.nix {};
689   os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {};
690   osquery = handleTestOn ["x86_64-linux"] ./osquery.nix {};
691   osrm-backend = handleTest ./osrm-backend.nix {};
692   overlayfs = handleTest ./overlayfs.nix {};
693   pacemaker = handleTest ./pacemaker.nix {};
694   packagekit = handleTest ./packagekit.nix {};
695   pam-file-contents = handleTest ./pam/pam-file-contents.nix {};
696   pam-oath-login = handleTest ./pam/pam-oath-login.nix {};
697   pam-u2f = handleTest ./pam/pam-u2f.nix {};
698   pam-ussh = handleTest ./pam/pam-ussh.nix {};
699   pam-zfs-key = handleTest ./pam/zfs-key.nix {};
700   pass-secret-service = handleTest ./pass-secret-service.nix {};
701   patroni = handleTestOn ["x86_64-linux"] ./patroni.nix {};
702   pantalaimon = handleTest ./matrix/pantalaimon.nix {};
703   pantheon = handleTest ./pantheon.nix {};
704   paperless = handleTest ./paperless.nix {};
705   parsedmarc = handleTest ./parsedmarc {};
706   pdns-recursor = handleTest ./pdns-recursor.nix {};
707   peerflix = handleTest ./peerflix.nix {};
708   peering-manager = handleTest ./web-apps/peering-manager.nix {};
709   peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {};
710   peroxide = handleTest ./peroxide.nix {};
711   pg_anonymizer = handleTest ./pg_anonymizer.nix {};
712   pgadmin4 = handleTest ./pgadmin4.nix {};
713   pgbouncer = handleTest ./pgbouncer.nix {};
714   pgjwt = handleTest ./pgjwt.nix {};
715   pgmanage = handleTest ./pgmanage.nix {};
716   pgvecto-rs = handleTest ./pgvecto-rs.nix {};
717   phosh = handleTest ./phosh.nix {};
718   photonvision = handleTest ./photonvision.nix {};
719   photoprism = handleTest ./photoprism.nix {};
720   php = handleTest ./php {};
721   php81 = handleTest ./php { php = pkgs.php81; };
722   php82 = handleTest ./php { php = pkgs.php82; };
723   php83 = handleTest ./php { php = pkgs.php83; };
724   phylactery = handleTest ./web-apps/phylactery.nix {};
725   pict-rs = handleTest ./pict-rs.nix {};
726   pinnwand = handleTest ./pinnwand.nix {};
727   plantuml-server = handleTest ./plantuml-server.nix {};
728   plasma-bigscreen = handleTest ./plasma-bigscreen.nix {};
729   plasma5 = handleTest ./plasma5.nix {};
730   plasma6 = handleTest ./plasma6.nix {};
731   plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {};
732   plausible = handleTest ./plausible.nix {};
733   please = handleTest ./please.nix {};
734   pleroma = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./pleroma.nix {};
735   plikd = handleTest ./plikd.nix {};
736   plotinus = handleTest ./plotinus.nix {};
737   podgrab = handleTest ./podgrab.nix {};
738   podman = handleTestOn ["aarch64-linux" "x86_64-linux"] ./podman/default.nix {};
739   podman-tls-ghostunnel = handleTestOn ["aarch64-linux" "x86_64-linux"] ./podman/tls-ghostunnel.nix {};
740   polaris = handleTest ./polaris.nix {};
741   pomerium = handleTestOn ["x86_64-linux"] ./pomerium.nix {};
742   portunus = handleTest ./portunus.nix { };
743   postfix = handleTest ./postfix.nix {};
744   postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {};
745   postfixadmin = handleTest ./postfixadmin.nix {};
746   postgis = handleTest ./postgis.nix {};
747   apache_datasketches = handleTest ./apache_datasketches.nix {};
748   postgresql = handleTest ./postgresql.nix {};
749   postgresql-jit = handleTest ./postgresql-jit.nix {};
750   postgresql-wal-receiver = handleTest ./postgresql-wal-receiver.nix {};
751   powerdns = handleTest ./powerdns.nix {};
752   powerdns-admin = handleTest ./powerdns-admin.nix {};
753   power-profiles-daemon = handleTest ./power-profiles-daemon.nix {};
754   pppd = handleTest ./pppd.nix {};
755   predictable-interface-names = handleTest ./predictable-interface-names.nix {};
756   pretalx = runTest ./web-apps/pretalx.nix;
757   pretix = runTest ./web-apps/pretix.nix;
758   printing-socket = handleTest ./printing.nix { socket = true; };
759   printing-service = handleTest ./printing.nix { socket = false; };
760   private-gpt = handleTest ./private-gpt.nix {};
761   privoxy = handleTest ./privoxy.nix {};
762   prometheus = handleTest ./prometheus.nix {};
763   prometheus-exporters = handleTest ./prometheus-exporters.nix {};
764   prosody = handleTest ./xmpp/prosody.nix {};
765   prosody-mysql = handleTest ./xmpp/prosody-mysql.nix {};
766   proxy = handleTest ./proxy.nix {};
767   prowlarr = handleTest ./prowlarr.nix {};
768   pt2-clone = handleTest ./pt2-clone.nix {};
769   pykms = handleTest ./pykms.nix {};
770   public-inbox = handleTest ./public-inbox.nix {};
771   pufferpanel = handleTest ./pufferpanel.nix {};
772   pulseaudio = discoverTests (import ./pulseaudio.nix);
773   qboot = handleTestOn ["x86_64-linux" "i686-linux"] ./qboot.nix {};
774   qemu-vm-restrictnetwork = handleTest ./qemu-vm-restrictnetwork.nix {};
775   qemu-vm-volatile-root = runTest ./qemu-vm-volatile-root.nix;
776   qemu-vm-external-disk-image = runTest ./qemu-vm-external-disk-image.nix;
777   qgis = handleTest ./qgis.nix { qgisPackage = pkgs.qgis; };
778   qgis-ltr = handleTest ./qgis.nix { qgisPackage = pkgs.qgis-ltr; };
779   qownnotes = handleTest ./qownnotes.nix {};
780   qtile = handleTest ./qtile.nix {};
781   quake3 = handleTest ./quake3.nix {};
782   quicktun = handleTest ./quicktun.nix {};
783   quorum = handleTest ./quorum.nix {};
784   rabbitmq = handleTest ./rabbitmq.nix {};
785   radarr = handleTest ./radarr.nix {};
786   radicale = handleTest ./radicale.nix {};
787   ragnarwm = handleTest ./ragnarwm.nix {};
788   rasdaemon = handleTest ./rasdaemon.nix {};
789   readarr = handleTest ./readarr.nix {};
790   redis = handleTest ./redis.nix {};
791   redlib = handleTest ./redlib.nix {};
792   redmine = handleTest ./redmine.nix {};
793   restartByActivationScript = handleTest ./restart-by-activation-script.nix {};
794   restic-rest-server = handleTest ./restic-rest-server.nix {};
795   restic = handleTest ./restic.nix {};
796   retroarch = handleTest ./retroarch.nix {};
797   rkvm = handleTest ./rkvm {};
798   robustirc-bridge = handleTest ./robustirc-bridge.nix {};
799   roundcube = handleTest ./roundcube.nix {};
800   rosenpass = handleTest ./rosenpass.nix {};
801   rshim = handleTest ./rshim.nix {};
802   rspamd = handleTest ./rspamd.nix {};
803   rspamd-trainer = handleTest ./rspamd-trainer.nix {};
804   rss2email = handleTest ./rss2email.nix {};
805   rstudio-server = handleTest ./rstudio-server.nix {};
806   rsyncd = handleTest ./rsyncd.nix {};
807   rsyslogd = handleTest ./rsyslogd.nix {};
808   rxe = handleTest ./rxe.nix {};
809   sabnzbd = handleTest ./sabnzbd.nix {};
810   samba = handleTest ./samba.nix {};
811   samba-wsdd = handleTest ./samba-wsdd.nix {};
812   sane = handleTest ./sane.nix {};
813   sanoid = handleTest ./sanoid.nix {};
814   scaphandre = handleTest ./scaphandre.nix {};
815   schleuder = handleTest ./schleuder.nix {};
816   scion-freestanding-deployment = handleTest ./scion/freestanding-deployment {};
817   scrutiny = handleTest ./scrutiny.nix {};
818   sddm = handleTest ./sddm.nix {};
819   seafile = handleTest ./seafile.nix {};
820   searx = handleTest ./searx.nix {};
821   seatd = handleTest ./seatd.nix {};
822   service-runner = handleTest ./service-runner.nix {};
823   sftpgo = runTest ./sftpgo.nix;
824   sfxr-qt = handleTest ./sfxr-qt.nix {};
825   sgt-puzzles = handleTest ./sgt-puzzles.nix {};
826   shadow = handleTest ./shadow.nix {};
827   shadowsocks = handleTest ./shadowsocks {};
828   shattered-pixel-dungeon = handleTest ./shattered-pixel-dungeon.nix {};
829   shiori = handleTest ./shiori.nix {};
830   signal-desktop = handleTest ./signal-desktop.nix {};
831   silverbullet = handleTest ./silverbullet.nix {};
832   simple = handleTest ./simple.nix {};
833   sing-box = handleTest ./sing-box.nix {};
834   slimserver = handleTest ./slimserver.nix {};
835   slurm = handleTest ./slurm.nix {};
836   snmpd = handleTest ./snmpd.nix {};
837   smokeping = handleTest ./smokeping.nix {};
838   snapcast = handleTest ./snapcast.nix {};
839   snapper = handleTest ./snapper.nix {};
840   snipe-it = runTest ./web-apps/snipe-it.nix;
841   soapui = handleTest ./soapui.nix {};
842   soft-serve = handleTest ./soft-serve.nix {};
843   sogo = handleTest ./sogo.nix {};
844   soju = handleTest ./soju.nix {};
845   solanum = handleTest ./solanum.nix {};
846   sonarr = handleTest ./sonarr.nix {};
847   sonic-server = handleTest ./sonic-server.nix {};
848   sourcehut = handleTest ./sourcehut {};
849   spacecookie = handleTest ./spacecookie.nix {};
850   spark = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./spark {};
851   sqlite3-to-mysql = handleTest ./sqlite3-to-mysql.nix {};
852   sslh = handleTest ./sslh.nix {};
853   ssh-agent-auth = handleTest ./ssh-agent-auth.nix {};
854   ssh-audit = handleTest ./ssh-audit.nix {};
855   sssd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./sssd.nix {};
856   sssd-ldap = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./sssd-ldap.nix {};
857   stalwart-mail = handleTest ./stalwart-mail.nix {};
858   stargazer = runTest ./web-servers/stargazer.nix;
859   starship = handleTest ./starship.nix {};
860   static-web-server = handleTest ./web-servers/static-web-server.nix {};
861   step-ca = handleTestOn ["x86_64-linux"] ./step-ca.nix {};
862   stratis = handleTest ./stratis {};
863   strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
864   stub-ld = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./stub-ld.nix {};
865   stunnel = handleTest ./stunnel.nix {};
866   sudo = handleTest ./sudo.nix {};
867   sudo-rs = handleTest ./sudo-rs.nix {};
868   sunshine = handleTest ./sunshine.nix {};
869   suwayomi-server = handleTest ./suwayomi-server.nix {};
870   swap-file-btrfs = handleTest ./swap-file-btrfs.nix {};
871   swap-partition = handleTest ./swap-partition.nix {};
872   swap-random-encryption = handleTest ./swap-random-encryption.nix {};
873   sway = handleTest ./sway.nix {};
874   swayfx = handleTest ./swayfx.nix {};
875   switchTest = handleTest ./switch-test.nix {};
876   sympa = handleTest ./sympa.nix {};
877   syncthing = handleTest ./syncthing.nix {};
878   syncthing-no-settings = handleTest ./syncthing-no-settings.nix {};
879   syncthing-init = handleTest ./syncthing-init.nix {};
880   syncthing-many-devices = handleTest ./syncthing-many-devices.nix {};
881   syncthing-relay = handleTest ./syncthing-relay.nix {};
882   sysinit-reactivation = runTest ./sysinit-reactivation.nix;
883   systemd = handleTest ./systemd.nix {};
884   systemd-analyze = handleTest ./systemd-analyze.nix {};
885   systemd-binfmt = handleTestOn ["x86_64-linux"] ./systemd-binfmt.nix {};
886   systemd-boot = handleTest ./systemd-boot.nix {};
887   systemd-bpf = handleTest ./systemd-bpf.nix {};
888   systemd-confinement = handleTest ./systemd-confinement.nix {};
889   systemd-coredump = handleTest ./systemd-coredump.nix {};
890   systemd-cryptenroll = handleTest ./systemd-cryptenroll.nix {};
891   systemd-credentials-tpm2 = handleTest ./systemd-credentials-tpm2.nix {};
892   systemd-escaping = handleTest ./systemd-escaping.nix {};
893   systemd-initrd-bridge = handleTest ./systemd-initrd-bridge.nix {};
894   systemd-initrd-btrfs-raid = handleTest ./systemd-initrd-btrfs-raid.nix {};
895   systemd-initrd-luks-fido2 = handleTest ./systemd-initrd-luks-fido2.nix {};
896   systemd-initrd-luks-keyfile = handleTest ./systemd-initrd-luks-keyfile.nix {};
897   systemd-initrd-luks-empty-passphrase = handleTest ./initrd-luks-empty-passphrase.nix { systemdStage1 = true; };
898   systemd-initrd-luks-password = handleTest ./systemd-initrd-luks-password.nix {};
899   systemd-initrd-luks-tpm2 = handleTest ./systemd-initrd-luks-tpm2.nix {};
900   systemd-initrd-luks-unl0kr = handleTest ./systemd-initrd-luks-unl0kr.nix {};
901   systemd-initrd-modprobe = handleTest ./systemd-initrd-modprobe.nix {};
902   systemd-initrd-shutdown = handleTest ./systemd-shutdown.nix { systemdStage1 = true; };
903   systemd-initrd-simple = handleTest ./systemd-initrd-simple.nix {};
904   systemd-initrd-swraid = handleTest ./systemd-initrd-swraid.nix {};
905   systemd-initrd-vconsole = handleTest ./systemd-initrd-vconsole.nix {};
906   systemd-initrd-networkd = handleTest ./systemd-initrd-networkd.nix {};
907   systemd-initrd-networkd-ssh = handleTest ./systemd-initrd-networkd-ssh.nix {};
908   systemd-initrd-networkd-openvpn = handleTestOn [ "x86_64-linux" "i686-linux" ] ./initrd-network-openvpn { systemdStage1 = true; };
909   systemd-initrd-vlan = handleTest ./systemd-initrd-vlan.nix {};
910   systemd-journal = handleTest ./systemd-journal.nix {};
911   systemd-journal-gateway = handleTest ./systemd-journal-gateway.nix {};
912   systemd-journal-upload = handleTest ./systemd-journal-upload.nix {};
913   systemd-lock-handler = runTestOn ["aarch64-linux" "x86_64-linux"] ./systemd-lock-handler.nix;
914   systemd-machinectl = handleTest ./systemd-machinectl.nix {};
915   systemd-networkd = handleTest ./systemd-networkd.nix {};
916   systemd-networkd-bridge = handleTest ./systemd-networkd-bridge.nix {};
917   systemd-networkd-dhcpserver = handleTest ./systemd-networkd-dhcpserver.nix {};
918   systemd-networkd-dhcpserver-static-leases = handleTest ./systemd-networkd-dhcpserver-static-leases.nix {};
919   systemd-networkd-ipv6-prefix-delegation = handleTest ./systemd-networkd-ipv6-prefix-delegation.nix {};
920   systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
921   systemd-no-tainted = handleTest ./systemd-no-tainted.nix {};
922   systemd-nspawn = handleTest ./systemd-nspawn.nix {};
923   systemd-nspawn-configfile = handleTest ./systemd-nspawn-configfile.nix {};
924   systemd-oomd = handleTest ./systemd-oomd.nix {};
925   systemd-portabled = handleTest ./systemd-portabled.nix {};
926   systemd-repart = handleTest ./systemd-repart.nix {};
927   systemd-shutdown = handleTest ./systemd-shutdown.nix {};
928   systemd-sysupdate = runTest ./systemd-sysupdate.nix;
929   systemd-sysusers-mutable = runTest ./systemd-sysusers-mutable.nix;
930   systemd-sysusers-immutable = runTest ./systemd-sysusers-immutable.nix;
931   systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
932   systemd-timesyncd-nscd-dnssec = handleTest ./systemd-timesyncd-nscd-dnssec.nix {};
933   systemd-user-linger = handleTest ./systemd-user-linger.nix {};
934   systemd-user-tmpfiles-rules = handleTest ./systemd-user-tmpfiles-rules.nix {};
935   systemd-misc = handleTest ./systemd-misc.nix {};
936   systemd-userdbd = handleTest ./systemd-userdbd.nix {};
937   systemd-homed = handleTest ./systemd-homed.nix {};
938   systemtap = handleTest ./systemtap.nix {};
939   tandoor-recipes = handleTest ./tandoor-recipes.nix {};
940   tang = handleTest ./tang.nix {};
941   taskserver = handleTest ./taskserver.nix {};
942   tayga = handleTest ./tayga.nix {};
943   technitium-dns-server = handleTest ./technitium-dns-server.nix {};
944   teeworlds = handleTest ./teeworlds.nix {};
945   telegraf = handleTest ./telegraf.nix {};
946   teleport = handleTest ./teleport.nix {};
947   thelounge = handleTest ./thelounge.nix {};
948   terminal-emulators = handleTest ./terminal-emulators.nix {};
949   tiddlywiki = handleTest ./tiddlywiki.nix {};
950   tigervnc = handleTest ./tigervnc.nix {};
951   timescaledb = handleTest ./timescaledb.nix {};
952   timezone = handleTest ./timezone.nix {};
953   tinc = handleTest ./tinc {};
954   tinydns = handleTest ./tinydns.nix {};
955   tinyproxy = handleTest ./tinyproxy.nix {};
956   tinywl = handleTest ./tinywl.nix {};
957   tmate-ssh-server = handleTest ./tmate-ssh-server.nix { };
958   tomcat = handleTest ./tomcat.nix {};
959   tor = handleTest ./tor.nix {};
960   traefik = handleTestOn ["aarch64-linux" "x86_64-linux"] ./traefik.nix {};
961   trafficserver = handleTest ./trafficserver.nix {};
962   transfer-sh = handleTest ./transfer-sh.nix {};
963   transmission = handleTest ./transmission.nix { transmission = pkgs.transmission; };
964   transmission_4 = handleTest ./transmission.nix { transmission = pkgs.transmission_4; };
965   # tracee requires bpf
966   tracee = handleTestOn ["x86_64-linux"] ./tracee.nix {};
967   trezord = handleTest ./trezord.nix {};
968   trickster = handleTest ./trickster.nix {};
969   trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
970   tsja = handleTest ./tsja.nix {};
971   tsm-client-gui = handleTest ./tsm-client-gui.nix {};
972   ttyd = handleTest ./web-servers/ttyd.nix {};
973   txredisapi = handleTest ./txredisapi.nix {};
974   tuptime = handleTest ./tuptime.nix {};
975   turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};
976   tuxguitar = handleTest ./tuxguitar.nix {};
977   twingate = runTest ./twingate.nix;
978   typesense = handleTest ./typesense.nix {};
979   ucarp = handleTest ./ucarp.nix {};
980   udisks2 = handleTest ./udisks2.nix {};
981   ulogd = handleTest ./ulogd/ulogd.nix {};
982   unbound = handleTest ./unbound.nix {};
983   unifi = handleTest ./unifi.nix {};
984   unit-php = handleTest ./web-servers/unit-php.nix {};
985   upnp.iptables = handleTest ./upnp.nix { useNftables = false; };
986   upnp.nftables = handleTest ./upnp.nix { useNftables = true; };
987   uptermd = handleTest ./uptermd.nix {};
988   uptime-kuma = handleTest ./uptime-kuma.nix {};
989   urn-timer = handleTest ./urn-timer.nix {};
990   usbguard = handleTest ./usbguard.nix {};
991   user-activation-scripts = handleTest ./user-activation-scripts.nix {};
992   user-expiry = runTest ./user-expiry.nix;
993   user-home-mode = handleTest ./user-home-mode.nix {};
994   ustreamer = handleTest ./ustreamer.nix {};
995   uwsgi = handleTest ./uwsgi.nix {};
996   v2ray = handleTest ./v2ray.nix {};
997   varnish60 = handleTest ./varnish.nix { package = pkgs.varnish60; };
998   varnish74 = handleTest ./varnish.nix { package = pkgs.varnish74; };
999   varnish75 = handleTest ./varnish.nix { package = pkgs.varnish75; };
1000   vault = handleTest ./vault.nix {};
1001   vault-agent = handleTest ./vault-agent.nix {};
1002   vault-dev = handleTest ./vault-dev.nix {};
1003   vault-postgresql = handleTest ./vault-postgresql.nix {};
1004   vaultwarden = handleTest ./vaultwarden.nix {};
1005   vector = handleTest ./vector.nix {};
1006   vengi-tools = handleTest ./vengi-tools.nix {};
1007   victoriametrics = handleTest ./victoriametrics.nix {};
1008   vikunja = handleTest ./vikunja.nix {};
1009   virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
1010   vscode-remote-ssh = handleTestOn ["x86_64-linux"] ./vscode-remote-ssh.nix {};
1011   vscodium = discoverTests (import ./vscodium.nix);
1012   vsftpd = handleTest ./vsftpd.nix {};
1013   warzone2100 = handleTest ./warzone2100.nix {};
1014   wasabibackend = handleTest ./wasabibackend.nix {};
1015   wastebin = handleTest ./wastebin.nix {};
1016   watchdogd = handleTest ./watchdogd.nix {};
1017   webhook = runTest ./webhook.nix;
1018   wiki-js = handleTest ./wiki-js.nix {};
1019   wine = handleTest ./wine.nix {};
1020   wireguard = handleTest ./wireguard {};
1021   without-nix = handleTest ./without-nix.nix {};
1022   wmderland = handleTest ./wmderland.nix {};
1023   workout-tracker = handleTest ./workout-tracker.nix {};
1024   wpa_supplicant = handleTest ./wpa_supplicant.nix {};
1025   wordpress = handleTest ./wordpress.nix {};
1026   wrappers = handleTest ./wrappers.nix {};
1027   writefreely = handleTest ./web-apps/writefreely.nix {};
1028   xandikos = handleTest ./xandikos.nix {};
1029   xautolock = handleTest ./xautolock.nix {};
1030   xfce = handleTest ./xfce.nix {};
1031   xmonad = handleTest ./xmonad.nix {};
1032   xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {};
1033   xpadneo = handleTest ./xpadneo.nix {};
1034   xrdp = handleTest ./xrdp.nix {};
1035   xrdp-with-audio-pulseaudio = handleTest ./xrdp-with-audio-pulseaudio.nix {};
1036   xscreensaver = handleTest ./xscreensaver.nix {};
1037   xss-lock = handleTest ./xss-lock.nix {};
1038   xterm = handleTest ./xterm.nix {};
1039   xxh = handleTest ./xxh.nix {};
1040   yabar = handleTest ./yabar.nix {};
1041   yggdrasil = handleTest ./yggdrasil.nix {};
1042   zammad = handleTest ./zammad.nix {};
1043   zeronet-conservancy = handleTest ./zeronet-conservancy.nix {};
1044   zfs = handleTest ./zfs.nix {};
1045   zigbee2mqtt = handleTest ./zigbee2mqtt.nix {};
1046   zoneminder = handleTest ./zoneminder.nix {};
1047   zookeeper = handleTest ./zookeeper.nix {};
1048   zram-generator = handleTest ./zram-generator.nix {};
1049   zrepl = handleTest ./zrepl.nix {};
1050   zsh-history = handleTest ./zsh-history.nix {};
1051   zwave-js = handleTest ./zwave-js.nix {};