Loading nixos/tests/all-tests.nix +1 −1 Original line number Diff line number Diff line Loading @@ -777,7 +777,7 @@ in keepalived = runTest ./keepalived.nix; keepassxc = runTest ./keepassxc.nix; kerberos = handleTest ./kerberos/default.nix { }; kernel-generic = handleTest ./kernel-generic.nix { }; kernel-generic = handleTest ./kernel-generic { }; kernel-latest-ath-user-regd = runTest ./kernel-latest-ath-user-regd.nix; kernel-rust = handleTest ./kernel-rust.nix { }; keter = runTest ./keter.nix; Loading nixos/tests/kernel-generic.nix→nixos/tests/kernel-generic/default.nix +98 −0 Original line number Diff line number Diff line Loading @@ -7,9 +7,40 @@ with pkgs.lib; let patchedPkgs = pkgs.extend ( final: prev: { kernelPackagesExtensions = prev.kernelPackagesExtensions ++ [ ( finalKernelPackages: _: let finalKernel = finalKernelPackages.kernel; in { hello-world = final.stdenv.mkDerivation { name = "hello-module"; nativeBuildInputs = finalKernel.moduleBuildDependencies; makeFlags = finalKernel.commonMakeFlags ++ [ # Variable refers to the local Makefile. "KDIR=${finalKernel.dev}/lib/modules/${finalKernel.modDirVersion}/build" # Variable of the Linux src tree's main Makefile. "INSTALL_MOD_PATH=$(out)" ]; buildFlags = [ "modules" ]; installTargets = [ "modules_install" ]; src = ./hello-world-src; }; } ) ]; } ); testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ( (import ../make-test-python.nix ( { pkgs, ... }: { name = "kernel-${linuxPackages.kernel.version}"; Loading @@ -22,19 +53,25 @@ let }; nodes.machine = { ... }: { config, ... }: { boot.kernelPackages = linuxPackages; boot.extraModulePackages = [ config.boot.kernelPackages.hello-world ]; boot.kernelModules = [ "hello" ]; }; testScript = '' assert "Linux" in machine.succeed("uname -s") assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a") assert "Hello world!" in machine.succeed("dmesg") ''; } ) args); kernels = pkgs.linuxKernel.vanillaPackages // { inherit (pkgs.linuxKernel.packages) kernels = patchedPkgs.linuxKernel.vanillaPackages // { inherit (patchedPkgs.linuxKernel.packages) linux_6_12_hardened linux_rt_5_4 linux_rt_5_10 Loading nixos/tests/kernel-generic/hello-world-src/Makefile 0 → 100644 +15 −0 Original line number Diff line number Diff line ifneq ($(KERNELRELEASE),) # kbuild part of makefile obj-m := hello.o else # normal makefile KDIR ?= /lib/modules/`uname -r`/build .PHONY: modules modules: $(MAKE) -C $(KDIR) M=$$PWD modules .PHONY: modules_install modules_install: $(MAKE) -C $(KDIR) M=$$PWD modules_install endif nixos/tests/kernel-generic/hello-world-src/hello.c 0 → 100644 +18 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: MIT #include <linux/module.h> #include <linux/printk.h> static int hello(void) { pr_info("Hello world!"); return 0; } module_init(hello); static void goodbye(void) { pr_info("Goodbye"); } module_exit(goodbye); MODULE_LICENSE("MIT"); Loading
nixos/tests/all-tests.nix +1 −1 Original line number Diff line number Diff line Loading @@ -777,7 +777,7 @@ in keepalived = runTest ./keepalived.nix; keepassxc = runTest ./keepassxc.nix; kerberos = handleTest ./kerberos/default.nix { }; kernel-generic = handleTest ./kernel-generic.nix { }; kernel-generic = handleTest ./kernel-generic { }; kernel-latest-ath-user-regd = runTest ./kernel-latest-ath-user-regd.nix; kernel-rust = handleTest ./kernel-rust.nix { }; keter = runTest ./keter.nix; Loading
nixos/tests/kernel-generic.nix→nixos/tests/kernel-generic/default.nix +98 −0 Original line number Diff line number Diff line Loading @@ -7,9 +7,40 @@ with pkgs.lib; let patchedPkgs = pkgs.extend ( final: prev: { kernelPackagesExtensions = prev.kernelPackagesExtensions ++ [ ( finalKernelPackages: _: let finalKernel = finalKernelPackages.kernel; in { hello-world = final.stdenv.mkDerivation { name = "hello-module"; nativeBuildInputs = finalKernel.moduleBuildDependencies; makeFlags = finalKernel.commonMakeFlags ++ [ # Variable refers to the local Makefile. "KDIR=${finalKernel.dev}/lib/modules/${finalKernel.modDirVersion}/build" # Variable of the Linux src tree's main Makefile. "INSTALL_MOD_PATH=$(out)" ]; buildFlags = [ "modules" ]; installTargets = [ "modules_install" ]; src = ./hello-world-src; }; } ) ]; } ); testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ( (import ../make-test-python.nix ( { pkgs, ... }: { name = "kernel-${linuxPackages.kernel.version}"; Loading @@ -22,19 +53,25 @@ let }; nodes.machine = { ... }: { config, ... }: { boot.kernelPackages = linuxPackages; boot.extraModulePackages = [ config.boot.kernelPackages.hello-world ]; boot.kernelModules = [ "hello" ]; }; testScript = '' assert "Linux" in machine.succeed("uname -s") assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a") assert "Hello world!" in machine.succeed("dmesg") ''; } ) args); kernels = pkgs.linuxKernel.vanillaPackages // { inherit (pkgs.linuxKernel.packages) kernels = patchedPkgs.linuxKernel.vanillaPackages // { inherit (patchedPkgs.linuxKernel.packages) linux_6_12_hardened linux_rt_5_4 linux_rt_5_10 Loading
nixos/tests/kernel-generic/hello-world-src/Makefile 0 → 100644 +15 −0 Original line number Diff line number Diff line ifneq ($(KERNELRELEASE),) # kbuild part of makefile obj-m := hello.o else # normal makefile KDIR ?= /lib/modules/`uname -r`/build .PHONY: modules modules: $(MAKE) -C $(KDIR) M=$$PWD modules .PHONY: modules_install modules_install: $(MAKE) -C $(KDIR) M=$$PWD modules_install endif
nixos/tests/kernel-generic/hello-world-src/hello.c 0 → 100644 +18 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: MIT #include <linux/module.h> #include <linux/printk.h> static int hello(void) { pr_info("Hello world!"); return 0; } module_init(hello); static void goodbye(void) { pr_info("Goodbye"); } module_exit(goodbye); MODULE_LICENSE("MIT");