uefi testing

This commit is contained in:
mjallen18
2026-01-01 19:15:41 -06:00
parent c4ea874ae7
commit 3063d6b161
5 changed files with 163 additions and 4 deletions

View File

@@ -66,6 +66,7 @@ let
};
firmware = pkgs.${namespace}.raspberrypifw;
};
ubootBuilder = import ./uboot-builder.nix {
inherit pkgs;
ubootPackage = (if (cfg.variant == "5") then pkgs.${namespace}.uboot-pi5 else pkgs.${namespace}.uboot-pi4);
@@ -73,6 +74,12 @@ let
extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd;
};
uefiBuilder = import ./uefi-builder.nix{
inherit pkgs;
uefiPackage = (if (cfg.variant == "5") then pkgs.${namespace}.uefi-rpi5 else pkgs.${namespace}.uefi-rpi4);
firmwareBuilder = firmwarePopulateCmd;
};
# Builders exposed via populateCmd, which run on the build architecture
populateFirmwareBuilder = import ./firmware-builder.nix {
pkgs = pkgs.buildPackages;
@@ -106,6 +113,7 @@ let
builder = {
# system.build.installBootLoader
uboot = "${ubootBuilder} -f /boot/firmware -b /boot -c";
uefi = "${uefiBuilder} -f /boot/firmware -b /boot -c";
};
# firmware: caller must provide `-c <nixos configuration>` and `-f <firmware target path>`
@@ -128,6 +136,14 @@ in
];
description = "Raspberry Pi variant (4 or 5)";
};
bootType = lib.mkOption {
type = lib.types.enum [
"uefi"
"uboot"
];
default = "uboot";
};
apply-overlays-dtmerge = {
enable = lib.mkEnableOption "" // {
@@ -166,9 +182,10 @@ in
]);
loader = {
generic-extlinux-compatible = {
enable = lib.mkDefault true;
useGenerationDeviceTree = lib.mkOverride 60 true;
enable = lib.mkDefault (if cfg.bootType == "uefi" then false else true);
useGenerationDeviceTree = lib.mkOverride 60 (if cfg.bootType == "uefi" then false else true);
};
systemd-boot.enable = (if cfg.bootType == "uefi" then true else false);
grub.enable = lib.mkForce false;
};
};
@@ -259,10 +276,10 @@ in
};
system = {
build.installBootLoader = lib.mkOverride 60 (builder."uboot");
build.installBootLoader = lib.mkOverride 60 (if cfg.bootType == "uefi" then (builder."uefi") else (builder."uboot")); # todo
boot = {
loader = {
id = lib.mkOverride 60 ("raspberrypi-uboot");
id = lib.mkOverride 60 (if cfg.bootType == "uefi" then "raspberrypi-uefi" else "raspberrypi-uboot"); # todo
kernelFile = pkgs.stdenv.hostPlatform.linux-kernel.target;
};
};