diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 76755208e6a..0d6109cfea2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -194,6 +194,7 @@ in keepalived = handleTest ./keepalived.nix {}; keepassxc = handleTest ./keepassxc.nix {}; kerberos = handleTest ./kerberos/default.nix {}; + kernel-generic = handleTest ./kernel-generic.nix {}; kernel-latest = handleTest ./kernel-latest.nix {}; kernel-lts = handleTest ./kernel-lts.nix {}; kernel-testing = handleTest ./kernel-testing.nix {}; diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix new file mode 100644 index 00000000000..1c848ee769a --- /dev/null +++ b/nixos/tests/kernel-generic.nix @@ -0,0 +1,29 @@ +{ system ? builtins.currentSystem +, config ? { } +, pkgs ? import ../.. { inherit system config; } +}: + +with pkgs.lib; + +let + makeKernelTest = version: linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { + name = "kernel-${version}"; + meta = with pkgs.lib.maintainers; { + maintainers = [ nequissimus ]; + }; + + machine = { ... }: + { + boot.kernelPackages = linuxPackages; + }; + + testScript = + '' + assert "Linux" in machine.succeed("uname -s") + assert "${linuxPackages.kernel.version}" in machine.succeed("uname -a") + ''; + })); +in +with pkgs; { + linux_5_11 = makeKernelTest "5.11" linuxPackages_5_11; +} diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index ac9d6fbb2b5..ffef30ec919 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -55,7 +55,7 @@ , autoModules ? stdenv.hostPlatform.linux-kernel.autoModules , preferBuiltin ? stdenv.hostPlatform.linux-kernel.preferBuiltin or false , kernelArch ? stdenv.hostPlatform.linuxArch - +, kernelTests ? [] , ... }: @@ -182,6 +182,7 @@ let kernelOlder = lib.versionOlder version; kernelAtLeast = lib.versionAtLeast version; passthru = kernel.passthru // (removeAttrs passthru [ "passthru" ]); + tests = kernelTests; }; in lib.extendDerivation true passthru kernel diff --git a/pkgs/os-specific/linux/kernel/linux-5.11.nix b/pkgs/os-specific/linux/kernel/linux-5.11.nix index 16d0e5c1d4c..1c8540d8934 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.11.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.11.nix @@ -1,4 +1,4 @@ -{ lib, buildPackages, fetchurl, perl, buildLinux, modDirVersionArg ? null, ... } @ args: +{ lib, buildPackages, fetchurl, perl, buildLinux, nixosTests, modDirVersionArg ? null, ... } @ args: with lib; @@ -15,4 +15,6 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; sha256 = "1fc3yl4srzla3cbihgnry0pqmgcc17zv0zlkk9zpx99371hpay0a"; }; + + kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_5_11 ]; } // (args.argsOverride or {}))