{ config , pkgs , lib , ... }: let inherit (lib) mkOption mkForce types concatStringsSep; in { imports = [ ./ramdisk.nix ]; config = { boot.ramdisk.enable = true; outputs.kexecboot = let o = config.outputs; in pkgs.runCommand "kexecboot" {} '' mkdir $out cd $out ln -s ${o.squashfs} squashfs ln -s ${o.kernel} kernel ln -s ${o.manifest} manifest ln -s ${o.boot-sh} boot.sh ln -s ${pkgs.kexec-tools-static}/bin/kexec ./kexec ln -s ${o.dtb} dtb ''; outputs.boot-sh = let inherit (pkgs.lib.trivial) toHexString; inherit (config.outputs) squashfs kernel; cmdline = concatStringsSep " " config.boot.commandLine; in pkgs.buildPackages.runCommand "boot.sh.sh" { } '' squashfsStart=${toString (100 * 1024 * 1024)} squashfsBytes=$(stat -L -c %s ${squashfs}) append_cmd="mtdparts=phram0:''${squashfsBytes}(rootfs) phram.phram=phram0,''${squashfsStart},''${squashfsBytes} memmap=''${squashfsBytes}\$''${squashfsStart}"; cat > $out <