Patching an in-tree Linux kernel module

The above solution no longer works for me after Move in-tree kernel modules to separate derivation output by jmbaur · Pull Request #423933 · NixOS/nixpkgs · GitHub merged. The module build fails with an error like this:

Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
build flags: -j12 SHELL=/nix/store/qsydfxm1vq6q9jac2kq3r8kn0xdmsldf-bash-5.3p3/bin/bash O=\$\(buildRoot\) --eval=undefine modules CC=/nix/store/68ndh04pl2hhhizsarvzwa9cnlp7zj3d-gcc-14.3.0/bin/gcc LD=/nix/store/asc30cdibhz4d82jv1bgaadfv529xqli-binutils-2.44/bin/ld AR=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/ar NM=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/nm STRIP=/nix/store/asc30cdibhz4d82jv1bgaadfv529xqli-binutils-2.44/bin/strip OBJCOPY=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/objcopy OBJDUMP=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/objdump READELF=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/readelf HOSTCC=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/cc HOSTCXX=/nix/store/ag7fc58qzff4j1sgd7v98irhcr6vcg8v-gcc-wrapper-14.3.0/bin/c++ HOSTAR=/nix/store/1rrjjyl7davy8znlykxzxwrsxkmxbvbq-binutils-wrapper-2.44/bin/ar HOSTLD=/nix/store/1rrjjyl7davy8znlykxzxwrsxkmxbvbq-binutils-wrapper-2.44/bin/ld ARCH=x86_64 CROSS_COMPILE= -C /nix/store/n350v7jbm90ns4af8fy69b8464w496bm-linux-6.12.58-dev/lib/modules/6.12.58/build M=\$\(PWD\) modules
make: Entering directory '/nix/store/n350v7jbm90ns4af8fy69b8464w496bm-linux-6.12.58-dev/lib/modules/6.12.58/build'
make: *** empty variable name.  Stop.
make: Leaving directory '/nix/store/n350v7jbm90ns4af8fy69b8464w496bm-linux-6.12.58-dev/lib/modules/6.12.58/build'

I can fix the build by undoing the makeFlags change from the PR in my kernel module derivation:

   nativeBuildInputs = kernel.moduleBuildDependencies;
 
-  makeFlags = kernel.makeFlags ++ [
+  makeFlags = (lib.filter (x: x != "--eval=undefine modules") kernel.makeFlags) ++ [
     "-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
     "M=$(PWD)"
     "modules"

But I honestly have no idea what I’m doing here. So, what is the right way to patch an in-tree kernel module without rebuilding the whole kernel?

Feature request: build single in-tree Linux kernel module · Issue #458785 · NixOS/nixpkgs · GitHub is a related issue about upstreaming a snippet from the wiki.