{ config, lib, pkgs, ... }: with lib; let cfg = config.grub2; payloadName = if cfg.asSecondaryPayload then "img/grub2" else "fallback/payload"; in { options.grub2 = { enable = mkEnableOption "grub2 coreboot primary payload"; asSecondaryPayload = mkOption { type = types.bool; default = false; }; font = mkOption { type = types.path; #default = "${pkgs.dejavu_fonts}/share/fonts/truetype/DejaVuSansMono.ttf"; default = "${pkgs.unifont}/share/fonts/truetype/unifont.ttf"; }; }; config = lib.mkIf cfg.enable { corenix.extraFiles = { ${payloadName} = { type = "payload"; src = "${pkgs.coreboot-payload-grub2}/default_payload.elf"; }; "font.pf2".src = ( pkgs.runCommand "font.pf2" { buildInputs = with pkgs; [ grub2 ]; } "grub-mkfont --range=0x20-0x7E,0x2501-0x251F,0x2191-0x2193 --size=14 -o $out ${cfg.font}" ); "etc/grub.cfg".src = ./files/grub.cfg; "background.png".src = ./files/background.png; }; }; }