checkpoint lol
This commit is contained in:
@@ -7,6 +7,11 @@
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.hardware.raspberry-pi;
|
||||
dt_ao_overlay = _final: prev: {
|
||||
deviceTree = prev.deviceTree // {
|
||||
applyOverlays = _final.callPackage ./apply-overlays-dtmerge.nix { };
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options.${namespace}.hardware.raspberry-pi = {
|
||||
@@ -19,13 +24,40 @@ in
|
||||
];
|
||||
description = "Raspberry Pi variant (4 or 5)";
|
||||
};
|
||||
|
||||
apply-overlays-dtmerge = {
|
||||
enable = lib.mkEnableOption "" // {
|
||||
description = ''
|
||||
Whether replace deviceTree.applyOverlays implementation to use dtmerge from libraspberrypi.
|
||||
This can resolve issues with applying dtbs for the pi.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./leds.nix
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
boot.initrd.availableKernelModules = lib.mkIf (cfg.variant == "5") [
|
||||
"nvme"
|
||||
];
|
||||
boot = {
|
||||
initrd.availableKernelModules = [
|
||||
"usbhid"
|
||||
"usb-storage"
|
||||
] ++ (if (cfg.variant == "5") then [
|
||||
"nvme"
|
||||
] else
|
||||
[
|
||||
"vc4"
|
||||
"pcie-brcmstb" # required for the pcie bus to work
|
||||
"reset-raspberrypi" # required for vl805 firmware to load
|
||||
]);
|
||||
loader = {
|
||||
generic-extlinux-compatible.enable = lib.mkDefault true;
|
||||
grub.enable = lib.mkForce false;
|
||||
};
|
||||
};
|
||||
|
||||
# Common Raspberry Pi packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
@@ -58,21 +90,65 @@ in
|
||||
|
||||
# Common hardware settings
|
||||
hardware = {
|
||||
i2c.enable = lib.mkDefault true;
|
||||
deviceTree = {
|
||||
filter = lib.mkDefault (if (cfg.variant == "5") then "bcm2712-rpi-*.dtb" else "bcm2711-rpi-*.dtb");
|
||||
overlays = lib.mkIf (cfg.variant == "4") [
|
||||
{
|
||||
name = "rpi4-cpu-revision";
|
||||
dtsText = ''
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-model-b";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
system {
|
||||
linux,revision = <0x00d03114>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
'';
|
||||
}
|
||||
{
|
||||
name = "enable-xhci";
|
||||
dtsText = ''
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2711";
|
||||
fragment@0 {
|
||||
//target-path = "/scb/xhci@7e9c0000";
|
||||
target = <&xhci>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
firmware = [ pkgs.${namespace}.raspberryPiWirelessFirmware ];
|
||||
graphics.enable32Bit = lib.mkForce false;
|
||||
i2c.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
# Pi specific system tags
|
||||
system.nixos.tags = (
|
||||
let
|
||||
bootCfg = config.boot.loader.raspberry-pi;
|
||||
in
|
||||
[
|
||||
"raspberry-pi-${bootCfg.variant}"
|
||||
bootCfg.bootloader
|
||||
config.boot.kernelPackages.kernel.version
|
||||
]
|
||||
);
|
||||
# system.nixos.tags = (
|
||||
# let
|
||||
# bootCfg = config.boot.loader.raspberry-pi;
|
||||
# in
|
||||
# [
|
||||
# "raspberry-pi-${bootCfg.variant}"
|
||||
# bootCfg.bootloader
|
||||
# config.boot.kernelPackages.kernel.version
|
||||
# ]
|
||||
# );
|
||||
|
||||
# Common programs
|
||||
programs.kdeconnect.enable = lib.mkDefault false;
|
||||
@@ -164,6 +240,7 @@ in
|
||||
++ [ "${pageSizeFlag}=14" ];
|
||||
});
|
||||
})
|
||||
] else [ ]);
|
||||
] else [ ])
|
||||
++ (if cfg.apply-overlays-dtmerge.enable then [ dt_ao_overlay ] else [ ]);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user