summary refs log tree commit diff
path: root/pkgs/os-specific/linux/kmod/aggregator.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/kmod/aggregator.nix')
-rw-r--r--pkgs/os-specific/linux/kmod/aggregator.nix27
1 files changed, 27 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/kmod/aggregator.nix b/pkgs/os-specific/linux/kmod/aggregator.nix
new file mode 100644
index 00000000000..161af38ff60
--- /dev/null
+++ b/pkgs/os-specific/linux/kmod/aggregator.nix
@@ -0,0 +1,27 @@
+{ stdenv, kmod, modules, buildEnv }:
+
+buildEnv {
+  name = "kernel-modules";
+
+  paths = modules;
+
+  postBuild =
+    ''
+      source ${stdenv}/setup
+
+      kernelVersion=$(cd $out/lib/modules && ls -d *)
+      if test "$(echo $kernelVersion | wc -w)" != 1; then
+         echo "inconsistent kernel versions: $kernelVersion"
+         exit 1
+      fi
+
+      echo "kernel version is $kernelVersion"
+
+      # Regenerate the depmod map files.  Be sure to pass an explicit
+      # kernel version number, otherwise depmod will use `uname -r'.
+      if test -w $out/lib/modules/$kernelVersion; then
+          rm -f $out/lib/modules/$kernelVersion/modules.*
+          ${kmod}/sbin/depmod -b $out -a $kernelVersion
+      fi
+    '';
+}