1{
2 system ? builtins.currentSystem,
3 config ? { },
4 pkgs ? import ../../.. { inherit system config; },
5 lib ? pkgs.lib,
6 kernelVersionsToTest ? [
7 "5.4"
8 "5.10"
9 "5.15"
10 "6.1"
11 "6.6"
12 "latest"
13 ],
14}:
15
16# For quickly running a test, the nixosTests.lvm2.lvm-thinpool-linux-latest attribute is recommended
17let
18 tests =
19 let
20 callTest = p: lib.flip (import p) { inherit system pkgs; };
21 in
22 {
23 thinpool = {
24 test = callTest ./thinpool.nix;
25 kernelFilter = lib.id;
26 };
27 # we would like to test all versions, but the kernel module currently does not compile against the other versions
28 vdo = {
29 test = callTest ./vdo.nix;
30 kernelFilter = lib.filter (v: v == "latest");
31 };
32
33 # systemd in stage 1
34 raid-sd-stage-1 = {
35 test = callTest ./systemd-stage-1.nix;
36 kernelFilter = lib.filter (v: v != "5.15");
37 flavour = "raid";
38 };
39 thinpool-sd-stage-1 = {
40 test = callTest ./systemd-stage-1.nix;
41 kernelFilter = lib.id;
42 flavour = "thinpool";
43 };
44 vdo-sd-stage-1 = {
45 test = callTest ./systemd-stage-1.nix;
46 kernelFilter = lib.filter (v: v == "latest");
47 flavour = "vdo";
48 };
49 };
50in
51lib.listToAttrs (
52 lib.filter (x: x.value != { }) (
53 lib.flip lib.concatMap kernelVersionsToTest (
54 version:
55 let
56 v' = lib.replaceStrings [ "." ] [ "_" ] version;
57 mkXfsFlags =
58 lib.optionalString (lib.versionOlder version "5.10") " -m bigtime=0 -m inobtcount=0 "
59 + lib.optionalString (lib.versionOlder version "5.19") " -i nrext64=0 ";
60 in
61 lib.flip lib.mapAttrsToList tests (
62 name: t:
63 lib.nameValuePair "lvm-${name}-linux-${v'}" (
64 lib.optionalAttrs (builtins.elem version (t.kernelFilter kernelVersionsToTest)) (
65 t.test (
66 {
67 kernelPackages = pkgs."linuxPackages_${v'}";
68 inherit mkXfsFlags;
69 }
70 // builtins.removeAttrs t [
71 "test"
72 "kernelFilter"
73 ]
74 )
75 )
76 )
77 )
78 )
79 )
80)