Skip to content

Commit 841b845

Browse files
nobodyinpersonMic92
authored andcommitted
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 f49bb3b commit 841b845

File tree

2 files changed

+49
-40
lines changed

2 files changed

+49
-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: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,41 @@
2727
./xhci.nix
2828
];
2929

30-
boot = {
31-
kernelPackages = lib.mkDefault pkgs.linuxKernel.packages.linux_rpi4;
32-
initrd.availableKernelModules = [
33-
"usbhid"
34-
"usb_storage"
35-
"vc4"
36-
"pcie_brcmstb" # required for the pcie bus to work
37-
"reset-raspberrypi" # required for vl805 firmware to load
38-
];
39-
40-
loader = {
41-
grub.enable = lib.mkDefault false;
42-
generic-extlinux-compatible.enable = lib.mkDefault true;
30+
options = {
31+
hardware.raspberry-pi."4" = {
32+
enable = lib.mkEnableOption "basic config for a RaspberryPi 4";
4333
};
4434
};
4535

46-
hardware.deviceTree.filter = lib.mkDefault "bcm2711-rpi-*.dtb";
36+
config = lib.mkIf config.hardware.raspberry-pi."4".enable {
37+
4738

48-
assertions = [
49-
{
50-
assertion = (lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.1");
51-
message = "This version of raspberry pi 4 dts overlays requires a newer kernel version (>=6.1). Please upgrade nixpkgs for this system.";
52-
}
53-
];
39+
boot = {
40+
kernelPackages = lib.mkDefault pkgs.linuxKernel.packages.linux_rpi4;
41+
initrd.availableKernelModules = [
42+
"usbhid"
43+
"usb_storage"
44+
"vc4"
45+
"pcie_brcmstb" # required for the pcie bus to work
46+
"reset-raspberrypi" # required for vl805 firmware to load
47+
];
48+
49+
loader = {
50+
grub.enable = lib.mkDefault false;
51+
generic-extlinux-compatible.enable = lib.mkDefault true;
52+
};
53+
};
54+
55+
hardware.deviceTree.filter = lib.mkDefault "bcm2711-rpi-*.dtb";
5456

55-
# Required for the Wireless firmware
56-
hardware.enableRedistributableFirmware = true;
57+
assertions = [{
58+
assertion =
59+
(lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.1");
60+
message =
61+
"This version of raspberry pi 4 dts overlays requires a newer kernel version (>=6.1). Please upgrade nixpkgs for this system.";
62+
}];
63+
64+
# Required for the Wireless firmware
65+
hardware.enableRedistributableFirmware = true;
66+
};
5767
}

0 commit comments

Comments
 (0)