linux: expose make flags for modules in linuxKernel.packages.linux_X_Y

Closes #376820

The issue with providing `moduleMakeFlags` via `passthru` of the kernel
package is that when this package gets overriden[1], the `moduleMakeFlags`
list still references the kernel without the overrides.

This broke e.g. kernel modules of linux-rpi4 which can be reproduced
with

    nix-build --argstr system aarch64-linux -A linuxKernel.packages.linux_rpi4.zfs_2_3

This used to break with

    Error: modDirVersion 6.6.51 specified in the Nix expression is wrong, it should be: 6.6.51-v8

since KBUILD_OUTPUT referenced the kernel without the changes from
`overrideDerivation` that also changes the `modDirVersion`.

The new approach is to add the build flags right into
`linuxKernel.packages.linux_X_Y`: that way we don't need any hacks to
update `moduleMakeFlags` when the derivation with the passthru gets
overridden.

By using the fixpoint of the package-set, the `kernelModuleMakeFlags`
list is correctly updated. E.g. given

    with import ./. {};

    linuxKernel.packages.linux_6_6.extend (self: super: {
      kernel = super.kernel.overrideAttrs (_: {
        name = "linux-snens";
      });
    })

the `makeFlags` is correctly updated:

    $ nix-instantiate snenskek.nix -A zfs_2_3.makeFlags --eval --strict
    [ "ARCH=x86_64" "CROSS_COMPILE=" "KBUILD_OUTPUT=/nix/store/gsp68549k1aqbwxwczpgw67w5jjn4shw-linux-snens-dev/lib/modules/6.6.74/build" ]

[1] E.g. `linux-rpi4`.
This commit is contained in:
Maximilian Bosch 2025-01-27 15:43:23 +01:00
parent 16b818f774
commit 5645cd22d4
No known key found for this signature in database
66 changed files with 150 additions and 89 deletions

View File

@ -3,6 +3,7 @@
stdenv,
fetchurl,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -14,7 +15,7 @@ stdenv.mkDerivation rec {
hash = "sha256-zjTLriw2zvjX0Jxfa9QtaHG5tTC7cLTKEA+WSCP+Dpg=";
};
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
sourceRoot = "${src.name}/src";
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -4,6 +4,7 @@
fetchFromGitHub,
srcOnly,
kernel,
kernelModuleMakeFlags,
nix-update-script,
}:
@ -28,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
];
makeFlags =
kernel.moduleMakeFlags
kernelModuleMakeFlags
++ [ "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ]
++ lib.optional (lib.versionAtLeast kernel.version "5.6") "KERNEL_SOURCE_DIR=${srcOnly kernel}";

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
nixosTests,
}:
@ -23,7 +24,7 @@ stdenv.mkDerivation {
hardeningDisable = [ "pic" ];
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchurl,
kernel,
kernelModuleMakeFlags,
}:
let
@ -19,7 +20,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELPATH=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -4,6 +4,7 @@
fetchFromGitHub,
fetchpatch,
kernel,
kernelModuleMakeFlags,
runtimeShell,
}:
@ -41,7 +42,7 @@ stdenv.mkDerivation {
--replace "/lib/modules" "${kernel.dev}/lib/modules"
'';
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
installPhase = ''
mkdir -p $out/lib/modules/${kernel.modDirVersion}/misc

View File

@ -2,6 +2,7 @@
lib,
stdenv,
kernel,
kernelModuleMakeFlags,
fetchFromGitHub,
}:
@ -18,7 +19,7 @@ stdenv.mkDerivation {
sha256 = "1laax93czalclg7cy9iq1r7hfh9jigh7igj06y9lski75ap2vhfq";
};
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=${placeholder "out"}"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel ? false,
kernelModuleMakeFlags ? [],
}:
stdenv.mkDerivation (finalAttrs: {
@ -19,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
"prefix=$(out)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitLab,
kernel,
kernelModuleMakeFlags,
fetchpatch,
}:
@ -39,7 +40,7 @@ stdenv.mkDerivation rec {
--replace depmod \#
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"KVER=${kernel.modDirVersion}"
"KERNEL_MODLIB=$(out)/lib/modules/${kernel.modDirVersion}"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -33,7 +34,7 @@ stdenv.mkDerivation rec {
rm -r $out/lib/udev
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KVERSION=${kernel.modDirVersion}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"DESTDIR=${placeholder "out"}"

View File

@ -3,6 +3,7 @@
stdenv,
fetchzip,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -16,7 +17,7 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "pic" ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"INSTALL_MOD_PATH=${placeholder "out"}"
];
KSRC = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";

View File

@ -3,6 +3,7 @@
lib,
fetchurl,
kernel,
kernelModuleMakeFlags,
nixosTests,
flex,
coccinelle,
@ -29,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: {
enableParallelBuilding = true;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"KVER=${kernel.version}"
"INSTALL_MOD_PATH=${placeholder "out"}"

View File

@ -4,6 +4,7 @@
fetchFromGitHub,
gitUpdater,
kernel,
kernelModuleMakeFlags,
}:
let
rev-prefix = "ena_linux_";
@ -23,7 +24,7 @@ stdenv.mkDerivation {
hardeningDisable = [ "pic" ];
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
env.KERNEL_BUILD_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
libdrm,
python3,
}:
@ -39,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
python3WithLibs
];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KVER=${kernel.modDirVersion}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
kmod,
nixosTests,
}:
@ -33,7 +34,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -2,6 +2,7 @@
lib,
stdenv,
kernel,
kernelModuleMakeFlags,
fetchFromGitHub,
unstableGitUpdater,
}:
@ -19,7 +20,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fwts,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -23,7 +24,7 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "pic" ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"INSTALL_MOD_PATH=${placeholder "out"}"
];

View File

@ -4,6 +4,7 @@
fetchFromGitHub,
fetchpatch2,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -31,7 +32,7 @@ stdenv.mkDerivation rec {
cd src
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"-C"
"${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"M=$(PWD)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
kmod,
}:
@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNEL_SOURCE_DIR=${kernel.dev}/${kerneldir}/build"
"INSTALL_MOD_PATH=$(out)"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"VERSION=${version}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
sourceRoot = "${src.name}/hid-t150";
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=${placeholder "out"}"
];

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, kernel }:
{ stdenv, lib, fetchFromGitHub, kernel, kernelModuleMakeFlags }:
stdenv.mkDerivation {
pname = "hid-tmff2";
@ -16,7 +16,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -4,6 +4,7 @@
fetchFromGitHub,
ivsc-driver,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -31,7 +32,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"VERSION=${version}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation {
@ -18,7 +19,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KERNEL_SRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
nixosTests,
}:
@ -22,7 +23,7 @@ stdenv.mkDerivation {
sed -e 's@/lib/modules/\$(.*)@${kernel.dev}/lib/modules/${kernel.modDirVersion}@' -i src/mod/*/Makefile
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"-C src/mod"
"INSTALL_MOD_PATH=${placeholder "out"}"
];

View File

@ -434,28 +434,26 @@ let
"LD=${stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ld"
] ++ (stdenv.hostPlatform.linux-kernel.makeFlags or [])
++ extraMakeFlags;
in
finalKernel = stdenv.mkDerivation (
builtins.foldl' lib.recursiveUpdate {} [
(drvAttrs config stdenv.hostPlatform.linux-kernel kernelPatches configfile)
{
inherit pname version;
stdenv.mkDerivation (
builtins.foldl' lib.recursiveUpdate {} [
(drvAttrs config stdenv.hostPlatform.linux-kernel kernelPatches configfile)
{
inherit pname version;
enableParallelBuilding = true;
enableParallelBuilding = true;
hardeningDisable = [ "bindnow" "format" "fortify" "stackprotector" "pic" "pie" ];
hardeningDisable = [ "bindnow" "format" "fortify" "stackprotector" "pic" "pie" ];
makeFlags = [
"O=$(buildRoot)"
] ++ commonMakeFlags;
makeFlags = [
"O=$(buildRoot)"
] ++ commonMakeFlags;
passthru.moduleMakeFlags = [
"KBUILD_OUTPUT=${finalKernel.dev}/lib/modules/${finalKernel.modDirVersion}/build"
] ++ commonMakeFlags;
passthru = { inherit commonMakeFlags; };
karch = stdenv.hostPlatform.linuxArch;
}
(optionalAttrs (pos != null) { inherit pos; })
]
);
in finalKernel)
karch = stdenv.hostPlatform.linuxArch;
}
(optionalAttrs (pos != null) { inherit pos; })
]
))

View File

@ -4,6 +4,7 @@
fetchurl,
fetchpatch,
kernel,
kernelModuleMakeFlags,
elfutils,
python3,
perl,
@ -101,7 +102,7 @@ stdenv.mkDerivation {
"WERROR=0"
"ASCIIDOC8=1"
]
++ kernel.moduleMakeFlags
++ kernelModuleMakeFlags
++ lib.optional (!withGtk) "NO_GTK2=1"
++ lib.optional (!withZstd) "NO_LIBZSTD=1"
++ lib.optional (!withLibcap) "NO_LIBCAP=1";

View File

@ -2,6 +2,7 @@
lib,
stdenv,
kernel,
kernelModuleMakeFlags,
bash,
lenovo-legion,
}:
@ -18,7 +19,7 @@ stdenv.mkDerivation {
sed -i -e '/depmod/d' ./Makefile
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"SHELL=bash"
"KERNELVERSION=${kernel.modDirVersion}"
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
let
isKernelRT =
@ -25,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNEL=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=${placeholder "out"}"
];

View File

@ -1,6 +1,7 @@
{
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
lib,
stdenv,
}:
@ -21,7 +22,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
];

View File

@ -2,6 +2,7 @@
lib,
stdenv,
kernel,
kernelModuleMakeFlags,
fetchFromGitHub,
}:
@ -17,7 +18,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
buildPhase = ''
make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \

View File

@ -5,6 +5,7 @@
linuxPackages,
git,
kernel ? linuxPackages.kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation {
pname = "msi-ec-kmods";
@ -23,7 +24,7 @@ stdenv.mkDerivation {
hardeningDisable = [ "pic" ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
];

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, kernel, kmod, mstflint }:
{ lib, stdenv, fetchurl, kernel, kmod, mstflint, kernelModuleMakeFlags }:
stdenv.mkDerivation rec {
pname = "mstflint_access";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KVER=${kernel.modDirVersion}"
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
nix-update-script,
}:
@ -23,7 +24,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"-C"
"${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"M=$(sourceRoot)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchurl,
kernel,
kernelModuleMakeFlags,
kmod,
zlib,
}:
@ -48,7 +49,7 @@ stdenv.mkDerivation {
kmod=${kmod} substituteAllInPlace netatop.service
'';
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
preInstall = ''
mkdir -p $out/lib/systemd/system $out/bin $out/sbin $out/share/man/man{4,8}

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
pname = "nullfs";
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -42,6 +42,7 @@
fetchurl,
fetchzip,
kernel ? null,
kernelModuleMakeFlags ? [],
perl,
nukeReferences,
which,
@ -215,7 +216,7 @@ let
kernelVersion = if libsOnly then null else kernel.modDirVersion;
makeFlags = lib.optionals (!libsOnly) (
kernel.moduleMakeFlags
kernelModuleMakeFlags
++ [
"IGNORE_PREEMPT_RT_PRESENCE=1"
"NV_BUILD_SUPPORTS_HMM=1"

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
nvidia_x11,
hash,
patches ? [ ],
@ -25,7 +26,7 @@ stdenv.mkDerivation (
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"SYSSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
"SYSOUT=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"MODLIB=$(out)/lib/modules/${kernel.modDirVersion}"

View File

@ -2,6 +2,7 @@
coreutils,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
stdenv,
lib,
util-linux,
@ -20,7 +21,7 @@ stdenv.mkDerivation (
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"VERSION=${version}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, kernel }:
{ stdenv, lib, fetchFromGitHub, kernel, kernelModuleMakeFlags }:
let modDestDir = "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/wireless/realtek/r8168";
@ -27,7 +27,7 @@ in stdenv.mkDerivation rec {
# avoid using the Makefile directly -- it doesn't understand
# any kernel but the current.
# based on the ArchLinux pkgbuild: https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/r8168
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"M=$(PWD)/src"
"modules"

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bc,
nukeReferences,
}:
@ -34,7 +35,7 @@ stdenv.mkDerivation rec {
substituteInPlace ./Makefile --replace '$(MODDESTDIR)' "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
(
"CONFIG_PLATFORM_I386_PC="

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bc,
}:
@ -25,7 +26,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies ++ [ bc ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation {
@ -17,7 +18,7 @@ stdenv.mkDerivation {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
hardeningDisable = [ "pic" ];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bc,
}:
@ -20,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: {
hardeningDisable = [ "pic" ];
nativeBuildInputs = [ bc ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
prePatch = ''
substituteInPlace ./Makefile \

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bc,
}:
@ -20,7 +21,7 @@ stdenv.mkDerivation {
hardeningDisable = [ "pic" ];
nativeBuildInputs = [ bc ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
prePatch = ''
substituteInPlace ./Makefile \

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bc,
}:
@ -20,7 +21,7 @@ stdenv.mkDerivation {
hardeningDisable = [ "pic" ];
nativeBuildInputs = [ bc ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags;
makeFlags = kernelModuleMakeFlags;
prePatch = ''
substituteInPlace ./Makefile \

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
let
@ -20,7 +21,7 @@ stdenv.mkDerivation {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
let
@ -20,7 +21,7 @@ stdenv.mkDerivation {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -2,6 +2,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
unstableGitUpdater,
}:
kernel.stdenv.mkDerivation {
@ -17,7 +18,7 @@ kernel.stdenv.mkDerivation {
};
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -1,6 +1,7 @@
{
lib,
kernel,
kernelModuleMakeFlags,
stdenv,
fetchFromGitea,
libgcrypt,
@ -22,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: {
libgcrypt
lvm2
];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -2,6 +2,7 @@
lib,
stdenv,
kernel,
kernelModuleMakeFlags,
ncurses,
}:
@ -17,7 +18,7 @@ stdenv.mkDerivation {
cd tools/thermal/tmon
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"INSTALL_ROOT=\"$(out)\""
"BINDIR=bin"
];

View File

@ -3,6 +3,7 @@
lib,
fetchgit,
kernel,
kernelModuleMakeFlags,
kmod,
}:
let
@ -30,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
cp '${./Makefile}' Makefile
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation {
@ -18,7 +19,7 @@ stdenv.mkDerivation {
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitLab,
kernel,
kernelModuleMakeFlags,
kmod,
pahole,
}:
@ -22,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [ pahole ];
nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=${placeholder "out"}"

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, kernel, kmod }:
{ lib, stdenv, fetchFromGitHub, kernel, kmod, kernelModuleMakeFlags }:
let version = "0.13.2";
@ -28,7 +28,7 @@ in stdenv.mkDerivation {
outputs = [ "out" "bin" ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"KERNELRELEASE=${kernel.modDirVersion}"
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -20,7 +21,7 @@ stdenv.mkDerivation rec {
buildInputs = [ kernel ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"BUILD_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, kernel }:
{ stdenv, lib, fetchFromGitHub, kernel, kernelModuleMakeFlags }:
stdenv.mkDerivation rec {
name = "virtio_vmmci";
@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
CONFIG_RTC_HCTOSYS yes
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"DEPMOD=echo"
"INSTALL_MOD_PATH=$(out)"
"KERNELRELEASE=${kernel.modDirVersion}"

View File

@ -3,6 +3,7 @@
lib,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
}:
stdenv.mkDerivation rec {
@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
CONFIG_RTC_HCTOSYS yes
'';
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"DEPMOD=echo"
"INSTALL_MOD_PATH=$(out)"
"KERNELRELEASE=${kernel.modDirVersion}"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
bluez,
nixosTests,
nix-update-script,
@ -26,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = kernel.moduleBuildDependencies;
buildInputs = [ bluez ];
makeFlags = kernel.moduleMakeFlags ++ [
makeFlags = kernelModuleMakeFlags ++ [
"-C"
"${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"M=$(sourceRoot)"

View File

@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
kernel,
kernelModuleMakeFlags,
kmod,
}:
@ -27,7 +28,7 @@ stdenv.mkDerivation {
"pic"
];
makeFlags = kernel.moduleMakeFlags ++ [ "KDIR=${kernelDirectory}" ];
makeFlags = kernelModuleMakeFlags ++ [ "KDIR=${kernelDirectory}" ];
installTargets = [ "modules_install" ];

View File

@ -34,6 +34,7 @@ let
# Kernel dependencies
kernel ? null,
kernelModuleMakeFlags ? [ ],
enablePython ? true,
...
}@outerArgs:
@ -191,10 +192,10 @@ let
"--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source"
"--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
]
++ kernel.moduleMakeFlags
++ kernelModuleMakeFlags
);
makeFlags = optionals buildKernel kernel.moduleMakeFlags;
makeFlags = optionals buildKernel kernelModuleMakeFlags;
enableParallelBuilding = true;
@ -264,6 +265,7 @@ let
outputs = [ "out" ] ++ optionals buildUser [ "dev" ];
passthru = {
inherit kernel;
inherit enableMail kernelModuleAttribute;
latestCompatibleLinuxPackages = lib.warn "zfs.latestCompatibleLinuxPackages is deprecated and is now pointing at the default kernel. If using the stable LTS kernel (default `linuxPackages` is not possible then you must explicitly pin a specific kernel release. For example, `boot.kernelPackages = pkgs.linuxPackages_6_6`. Please be aware that non-LTS kernels are likely to go EOL before ZFS supports the latest supported non-LTS release, requiring manual intervention." linuxPackages;

View File

@ -322,6 +322,9 @@ in {
# to help determine module compatibility
inherit (kernel) isZen isHardened isLibre;
inherit (kernel) kernelOlder kernelAtLeast;
kernelModuleMakeFlags = self.kernel.commonMakeFlags ++ [
"KBUILD_OUTPUT=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];
# Obsolete aliases (these packages do not depend on the kernel).
inherit (pkgs) odp-dpdk pktgen; # added 2018-05
inherit (pkgs) bcc bpftrace; # added 2021-12