liminix

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

initramfs.nix (1473B)


      1 {
      2   config
      3 , pkgs
      4 , lib
      5 , ...
      6 }:
      7 let
      8   inherit (lib) mkEnableOption mkOption mkIf types;
      9   inherit (pkgs) runCommand callPackage writeText;
     10 in
     11 {
     12   options = {
     13     boot.initramfs = {
     14       enable = mkEnableOption "initramfs";
     15     };
     16     system.outputs.initramfs = mkOption {
     17       type = types.package;
     18       internal = true;
     19       description = ''
     20         Initramfs image capable of mounting the jffs2 root
     21         filesystem
     22       '';
     23     };
     24   };
     25   config = mkIf config.boot.initramfs.enable {
     26     kernel.config = {
     27       BLK_DEV_INITRD = "y";
     28       INITRAMFS_SOURCE = builtins.toJSON "${config.system.outputs.initramfs}";
     29 #      INITRAMFS_COMPRESSION_LZO = "y";
     30     };
     31 
     32     system.outputs = {
     33       initramfs =
     34         let inherit (pkgs.pkgsBuildBuild) gen_init_cpio;
     35         in runCommand "initramfs.cpio" {} ''
     36           cat << SPECIALS | ${gen_init_cpio}/bin/gen_init_cpio /dev/stdin > $out
     37           dir /proc 0755 0 0
     38           dir /dev 0755 0 0
     39           nod /dev/console 0600 0 0 c 5 1
     40           nod /dev/mtdblock0 0600 0 0 b 31 0
     41           nod /dev/mtdblock1 0600 0 0 b 31 1
     42           nod /dev/mtdblock2 0600 0 0 b 31 2
     43           nod /dev/mtdblock3 0600 0 0 b 31 3
     44           nod /dev/mtdblock4 0600 0 0 b 31 4
     45           nod /dev/mtdblock5 0600 0 0 b 31 5
     46           dir /target 0755 0 0
     47           dir /target/persist 0755 0 0
     48           dir /target/nix 0755 0 0
     49           file /init ${pkgs.preinit}/bin/preinit 0755 0 0
     50           SPECIALS
     51         '';
     52     };
     53   };
     54 }