From cad163aa3e7bfb9a94bdb680ac69b7bea6fe3cbb Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Wed, 5 Aug 2026 22:21:15 -0700 Subject: [PATCH] linux: add setup hook for kernel compression This setup hook ensures that kernel modules are compressed with parameters the kernel is capable of decompressing. This is currently only effective when xz is used as the kernel module compression algorithm. --- pkgs/os-specific/linux/kernel/build.nix | 7 +++++++ .../linux/kernel/setup-module-compression.sh | 11 +++++++++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/os-specific/linux/kernel/setup-module-compression.sh diff --git a/pkgs/os-specific/linux/kernel/build.nix b/pkgs/os-specific/linux/kernel/build.nix index 0e1b774515d7..390238c89ba0 100644 --- a/pkgs/os-specific/linux/kernel/build.nix +++ b/pkgs/os-specific/linux/kernel/build.nix @@ -23,6 +23,8 @@ rustc-unwrapped, rust-bindgen-unwrapped, rustPlatform, + makeSetupHook, + xz, }: let @@ -158,6 +160,11 @@ lib.makeOverridable ( elfutils # module makefiles often run uname commands to find out the kernel version (buildPackages.deterministic-uname.override { inherit modDirVersion; }) + (makeSetupHook { + name = "setup-module-compression"; + substitutions = { inherit configfile modDirVersion; }; + propagatedNativeBuildInputs = [ xz ]; + } ./setup-module-compression.sh) ] ++ optional (lib.versionAtLeast version "5.13") zstd ++ optionals withRust [ diff --git a/pkgs/os-specific/linux/kernel/setup-module-compression.sh b/pkgs/os-specific/linux/kernel/setup-module-compression.sh new file mode 100644 index 000000000000..dc357ad30943 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/setup-module-compression.sh @@ -0,0 +1,11 @@ +# shellcheck shell=bash + +setupModuleCompressionHook() { + # Ensure CRC32 is used, which the kernel is capable of decompressing natively (enabled by CONFIG_MODULE_DECOMPRESS=y). + export XZ_OPT="--check=crc32" +} + +if [[ -z "${dontSetupModuleCompression-}" ]]; then + nixInfoLog "Using setupModuleCompressionHook" + postConfigureHooks+=(setupModuleCompressionHook) +fi