nix format
This commit is contained in:
@@ -15,10 +15,13 @@ let
|
|||||||
|
|
||||||
# installs raspberry's firmware independent of the nixos generations
|
# installs raspberry's firmware independent of the nixos generations
|
||||||
# sometimes referred to as "boot code"
|
# sometimes referred to as "boot code"
|
||||||
raspberryPiFirmware = ({ pkgs
|
raspberryPiFirmware = (
|
||||||
, firmware
|
{
|
||||||
, configTxt
|
pkgs,
|
||||||
}: pkgs.replaceVarsWith {
|
firmware,
|
||||||
|
configTxt,
|
||||||
|
}:
|
||||||
|
pkgs.replaceVarsWith {
|
||||||
src = ./generational/install-firmware.sh;
|
src = ./generational/install-firmware.sh;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
|
|
||||||
@@ -30,11 +33,15 @@ let
|
|||||||
|
|
||||||
inherit firmware configTxt;
|
inherit firmware configTxt;
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
kernelbootGenBuilder = ({ pkgs
|
kernelbootGenBuilder = (
|
||||||
, deviceTreeInstaller
|
{
|
||||||
}: pkgs.replaceVarsWith {
|
pkgs,
|
||||||
|
deviceTreeInstaller,
|
||||||
|
}:
|
||||||
|
pkgs.replaceVarsWith {
|
||||||
src = ./generational/kernelboot-gen-builder.sh;
|
src = ./generational/kernelboot-gen-builder.sh;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
|
|
||||||
@@ -46,11 +53,15 @@ let
|
|||||||
|
|
||||||
installDeviceTree = deviceTreeInstaller;
|
installDeviceTree = deviceTreeInstaller;
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
deviceTree = ({ pkgs
|
deviceTree = (
|
||||||
, firmware
|
{
|
||||||
}: pkgs.replaceVarsWith {
|
pkgs,
|
||||||
|
firmware,
|
||||||
|
}:
|
||||||
|
pkgs.replaceVarsWith {
|
||||||
src = ./generational/install-device-tree.sh;
|
src = ./generational/install-device-tree.sh;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
|
|
||||||
@@ -62,9 +73,12 @@ let
|
|||||||
|
|
||||||
inherit firmware;
|
inherit firmware;
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
mkBootloader = pkgs: bootloader {
|
mkBootloader =
|
||||||
|
pkgs:
|
||||||
|
bootloader {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit (cfg) nixosGenerationsDir;
|
inherit (cfg) nixosGenerationsDir;
|
||||||
|
|
||||||
@@ -86,22 +100,27 @@ let
|
|||||||
|
|
||||||
nixosGenBuilder = "${kernelbootGenBuilder {
|
nixosGenBuilder = "${kernelbootGenBuilder {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
deviceTreeInstaller = let
|
deviceTreeInstaller =
|
||||||
|
let
|
||||||
cmd = deviceTree {
|
cmd = deviceTree {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
firmware = cfg.firmwarePackage;
|
firmware = cfg.firmwarePackage;
|
||||||
};
|
};
|
||||||
args = lib.optionalString (!cfg.useGenerationDeviceTree) " -r";
|
args = lib.optionalString (!cfg.useGenerationDeviceTree) " -r";
|
||||||
in "${cmd} ${args}";
|
in
|
||||||
|
"${cmd} ${args}";
|
||||||
}}";
|
}}";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bootloader = ({ pkgs
|
bootloader = (
|
||||||
, nixosGenerationsDir
|
{
|
||||||
, firmwareInstaller
|
pkgs,
|
||||||
, nixosGenBuilder
|
nixosGenerationsDir,
|
||||||
}: pkgs.replaceVarsWith {
|
firmwareInstaller,
|
||||||
|
nixosGenBuilder,
|
||||||
|
}:
|
||||||
|
pkgs.replaceVarsWith {
|
||||||
src = ./generational/nixos-generations-builder.sh;
|
src = ./generational/nixos-generations-builder.sh;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
|
|
||||||
@@ -117,7 +136,8 @@ let
|
|||||||
# NixOS-generations -dependent
|
# NixOS-generations -dependent
|
||||||
inherit nixosGenerationsDir nixosGenBuilder;
|
inherit nixosGenerationsDir nixosGenBuilder;
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
# Builders used to write during system activation
|
# Builders used to write during system activation
|
||||||
|
|
||||||
@@ -130,20 +150,6 @@ let
|
|||||||
extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd;
|
extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd;
|
||||||
};
|
};
|
||||||
|
|
||||||
populateUbootBuilder = import ./uboot-builder.nix {
|
|
||||||
pkgs = pkgs.buildPackages;
|
|
||||||
ubootPackage = (
|
|
||||||
if (cfg.variant == "5") then pkgs.${namespace}.uboot-pi5 else pkgs.${namespace}.uboot-pi4
|
|
||||||
);
|
|
||||||
firmwareBuilder = firmwarePopulateCmd;
|
|
||||||
extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd;
|
|
||||||
};
|
|
||||||
|
|
||||||
kernelbootBuilder = import ./kernelboot-builder.nix {
|
|
||||||
inherit pkgs;
|
|
||||||
firmwareBuilder = firmwarePopulateCmd;
|
|
||||||
};
|
|
||||||
|
|
||||||
uefiBuilder = import ./uefi-builder.nix {
|
uefiBuilder = import ./uefi-builder.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
uefiPackage = (
|
uefiPackage = (
|
||||||
@@ -169,11 +175,6 @@ let
|
|||||||
firmware = pkgs.${namespace}.raspberrypifw;
|
firmware = pkgs.${namespace}.raspberrypifw;
|
||||||
};
|
};
|
||||||
|
|
||||||
populateKernelbootBuilder = import ./kernelboot-builder.nix {
|
|
||||||
pkgs = pkgs.buildPackages;
|
|
||||||
firmwareBuilder = firmwarePopulateCmd;
|
|
||||||
};
|
|
||||||
|
|
||||||
firmwarePopulateCmd = "${populateFirmwareBuilder} ${firmwareBuilderArgs}";
|
firmwarePopulateCmd = "${populateFirmwareBuilder} ${firmwareBuilderArgs}";
|
||||||
firmwareBuilderArgs = lib.optionalString (!true) " -r";
|
firmwareBuilderArgs = lib.optionalString (!true) " -r";
|
||||||
|
|
||||||
@@ -193,20 +194,6 @@ let
|
|||||||
|
|
||||||
# firmware: caller must provide `-c <nixos configuration>` and `-f <firmware target path>`
|
# firmware: caller must provide `-c <nixos configuration>` and `-f <firmware target path>`
|
||||||
# boot: caller must provide `-c <nixos configuration>` and `-b <boot-dir>`
|
# boot: caller must provide `-c <nixos configuration>` and `-b <boot-dir>`
|
||||||
populateCmds = {
|
|
||||||
uboot = {
|
|
||||||
firmware = "${populateUbootBuilder}";
|
|
||||||
boot = "${populateUbootBuilder}";
|
|
||||||
};
|
|
||||||
kernel = let cmd = builtins.concatStringsSep " " [
|
|
||||||
"${mkBootloader pkgs.buildPackages}"
|
|
||||||
"-g ${toString cfg.configurationLimit}"
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
firmware = "${cmd}";
|
|
||||||
boot = "${cmd}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.${namespace}.hardware.raspberry-pi = {
|
options.${namespace}.hardware.raspberry-pi = {
|
||||||
@@ -326,16 +313,25 @@ in
|
|||||||
};
|
};
|
||||||
kernel = lib.mkIf (cfg.bootType == "kernel" || cfg.bootType == "uboot") {
|
kernel = lib.mkIf (cfg.bootType == "kernel" || cfg.bootType == "uboot") {
|
||||||
enable = true;
|
enable = true;
|
||||||
value = (if cfg.bootType == "uboot" then "u-boot.bin" else if cfg.bootType == "kernel" then "kernel.img" else "");
|
value = (
|
||||||
|
if cfg.bootType == "uboot" then
|
||||||
|
"u-boot.bin"
|
||||||
|
else if cfg.bootType == "kernel" then
|
||||||
|
"kernel.img"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extra-config = let
|
extra-config =
|
||||||
|
let
|
||||||
# https://www.raspberrypi.com/documentation/computers/config_txt.html#initramfs
|
# https://www.raspberrypi.com/documentation/computers/config_txt.html#initramfs
|
||||||
ramfsfile = "initrd";
|
ramfsfile = "initrd";
|
||||||
ramfsaddr = "followkernel"; # same as 0 = "after the kernel image"
|
ramfsaddr = "followkernel"; # same as 0 = "after the kernel image"
|
||||||
in ''
|
in
|
||||||
|
''
|
||||||
[all]
|
[all]
|
||||||
initramfs ${ramfsfile} ${ramfsaddr}
|
initramfs ${ramfsfile} ${ramfsaddr}
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{ pkgs
|
{
|
||||||
, firmwareBuilder
|
pkgs,
|
||||||
|
firmwareBuilder,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
pkgs.replaceVarsWith {
|
pkgs.replaceVarsWith {
|
||||||
|
|||||||
Reference in New Issue
Block a user