Skip to content

Commit 5450a1c

Browse files
rpi4: Introduce raspberry-pi."4".enable
Don't enable anything unless explicitly enabled. Otherwise e.g. the specified kernel complicates running a x86_64 vm of a rpi4 NixOS system
1 parent 9823641 commit 5450a1c

File tree

2 files changed

+46
-40
lines changed

2 files changed

+46
-40
lines changed

raspberry-pi/4/cpu-revision.nix

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
1-
{
2-
hardware.deviceTree.overlays = [
3-
{
4-
name = "rpi4-cpu-revision";
5-
dtsText = ''
6-
/dts-v1/;
7-
/plugin/;
1+
{ config, lib, ... }:
2+
lib.mkIf config.hardware.raspberry-pi."4".enable {
3+
hardware.deviceTree.overlays = [{
4+
name = "rpi4-cpu-revision";
5+
dtsText = ''
6+
/dts-v1/;
7+
/plugin/;
88
9-
/ {
10-
compatible = "raspberrypi,4-model-b";
9+
/ {
10+
compatible = "raspberrypi,4-model-b";
1111
12-
fragment@0 {
13-
target-path = "/";
14-
__overlay__ {
15-
system {
16-
linux,revision = <0x00d03114>;
17-
};
12+
fragment@0 {
13+
target-path = "/";
14+
__overlay__ {
15+
system {
16+
linux,revision = <0x00d03114>;
1817
};
1918
};
2019
};
21-
'';
22-
}
23-
];
20+
};
21+
'';
22+
}];
2423
}

raspberry-pi/4/default.nix

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,39 @@
2222
./xhci.nix
2323
];
2424

25-
boot = {
26-
kernelPackages = lib.mkDefault pkgs.linuxKernel.packages.linux_rpi4;
27-
initrd.availableKernelModules = [
28-
"usbhid"
29-
"usb_storage"
30-
"vc4"
31-
"pcie_brcmstb" # required for the pcie bus to work
32-
"reset-raspberrypi" # required for vl805 firmware to load
33-
];
34-
35-
loader = {
36-
grub.enable = lib.mkDefault false;
37-
generic-extlinux-compatible.enable = lib.mkDefault true;
25+
options = {
26+
hardware.raspberry-pi."4" = {
27+
enable = lib.mkEnableOption "basic config for a RaspberryPi 4";
3828
};
3929
};
4030

41-
hardware.deviceTree.filter = lib.mkDefault "bcm2711-rpi-*.dtb";
31+
config = lib.mkIf config.hardware.raspberry-pi."4".enable {
32+
boot = {
33+
kernelPackages = lib.mkDefault pkgs.linuxKernel.packages.linux_rpi4;
34+
initrd.availableKernelModules = [
35+
"usbhid"
36+
"usb_storage"
37+
"vc4"
38+
"pcie_brcmstb" # required for the pcie bus to work
39+
"reset-raspberrypi" # required for vl805 firmware to load
40+
];
4241

42+
loader = {
43+
grub.enable = lib.mkDefault false;
44+
generic-extlinux-compatible.enable = lib.mkDefault true;
45+
};
46+
};
4347

44-
assertions = [
45-
{
46-
assertion = (lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.1");
47-
message = "This version of raspberry pi 4 dts overlays requires a newer kernel version (>=6.1). Please upgrade nixpkgs for this system.";
48-
}
49-
];
48+
hardware.deviceTree.filter = lib.mkDefault "bcm2711-rpi-*.dtb";
5049

51-
# Required for the Wireless firmware
52-
hardware.enableRedistributableFirmware = true;
50+
assertions = [{
51+
assertion =
52+
(lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.1");
53+
message =
54+
"This version of raspberry pi 4 dts overlays requires a newer kernel version (>=6.1). Please upgrade nixpkgs for this system.";
55+
}];
56+
57+
# Required for the Wireless firmware
58+
hardware.enableRedistributableFirmware = true;
59+
};
5360
}

0 commit comments

Comments
 (0)