liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

default.nix (1533B)


      1 {
      2   stdenv
      3 , buildPackages
      4 , kernelSrc  ? null
      5 , modulesupport ? null
      6 , targets ? []
      7 , kconfig ? {}
      8 , openssl
      9 , writeText
     10 , lib
     11 }:
     12 let
     13   writeConfig = import ../kernel/write-kconfig.nix { inherit lib writeText; };
     14 in stdenv.mkDerivation {
     15   name = "kernel-modules";
     16 
     17   nativeBuildInputs = [buildPackages.stdenv.cc] ++
     18                       (with buildPackages.pkgs; [
     19                         bc bison flex
     20                         openssl
     21                         cpio
     22                         kmod
     23                       ]);
     24   CC = "${stdenv.cc.bintools.targetPrefix}gcc";
     25   HOST_EXTRACFLAGS = with buildPackages.pkgs;
     26     "-I${buildPackages.openssl.dev}/include -L${buildPackages.openssl.out}/lib";
     27   CROSS_COMPILE = stdenv.cc.bintools.targetPrefix;
     28   ARCH = "mips";  # kernel uses "mips" here for both mips and mipsel
     29   KBUILD_BUILD_HOST = "liminix.builder";
     30 
     31   buildPhase = ''
     32     cat ${writeConfig "kconfig" kconfig}  > .more-config
     33     cat .more-config >> .config
     34     make olddefconfig
     35     for v in $(cat .more-config) ; do grep $v .config || (echo Missing $v && exit 1);done
     36     # grep =m .config
     37     make modules
     38   '';
     39   src =  modulesupport;
     40   installPhase = ''
     41     mkdir -p $out/lib/modules/0.0
     42     find . -name \*.ko | cpio --verbose --make-directories -p $out/lib/modules/0.0
     43     depmod -b $out -v 0.0
     44     touch $out/load.sh
     45     for i in ${lib.concatStringsSep " " targets}; do
     46       modprobe -S 0.0 -d $out --show-depends $i >> $out/load.sh
     47     done
     48     tac < $out/load.sh | sed 's/^insmod/rmmod/g' > $out/unload.sh
     49   '';
     50 }