diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/kmod/aggregator.nix')
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/kmod/aggregator.nix | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/kmod/aggregator.nix b/nixpkgs/pkgs/os-specific/linux/kmod/aggregator.nix new file mode 100644 index 000000000000..7d46a13f3562 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/kmod/aggregator.nix @@ -0,0 +1,35 @@ +{ stdenv, kmod, modules, buildEnv }: + +buildEnv { + name = "kernel-modules"; + + paths = modules; + + postBuild = + '' + source ${stdenv}/setup + + if ! test -d "$out/lib/modules"; then + echo "No modules found." + # To support a kernel without modules + exit 0 + fi + + 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" + + shopt -s extglob + + # 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.!(builtin*|order*) + ${kmod}/bin/depmod -b $out -a $kernelVersion + fi + ''; +} |