diff --git a/modules/nixos/hardware/raspberry-pi/overlays/default.nix b/modules/nixos/hardware/raspberry-pi/overlays/default.nix index 59b662f..11a706b 100644 --- a/modules/nixos/hardware/raspberry-pi/overlays/default.nix +++ b/modules/nixos/hardware/raspberry-pi/overlays/default.nix @@ -3,104 +3,109 @@ let inherit (lib.${namespace}) mkOpt mkBoolOpt; cfg = config.${namespace}.hardware.raspberry-pi.overlays; - firmware = pkgs.${namespace}.raspberrypifw; + firmware = "${pkgs.${namespace}.raspberrypifw}/share/raspberrypi/boot/overlays"; configfsPath = "/sys/kernel/config/device-tree/overlays"; in { options.${namespace}.hardware.raspberry-pi.overlays = with lib; { pi5DisableWifi = { enable = lib.mkEnableOption "Disable wifi on Pi5"; - overlay = mkOpt types.str "${firmware}/share/raspberrypi/boot/overlays/disable-wifi-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/disable-wifi-pi5.dtbo" "Location of the dtbo file"; }; pi5DisableBluetooth = { enable = lib.mkEnableOption "Disable bluetooth on Pi5"; - overlay = mkOpt types.str "${firmware}/share/raspberrypi/boot/overlays/disable-bt-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/disable-bt-pi5.dtbo" "Location of the dtbo file"; }; pi5i2c0 = { enable = lib.mkEnableOption "Enable pi5i2c0 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/i2c0-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/i2c0-pi5.dtbo" "Location of the dtbo file"; }; pi5i2c1 = { enable = lib.mkEnableOption "Enable pi5i2c1 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/i2c1-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/i2c1-pi5.dtbo" "Location of the dtbo file"; }; pi5i2c2 = { enable = lib.mkEnableOption "Enable pi5i2c2 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/i2c2-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/i2c2-pi5.dtbo" "Location of the dtbo file"; }; pi5i2c3 = { enable = lib.mkEnableOption "Enable pi5i2c3 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/i2c3-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/i2c3-pi5.dtbo" "Location of the dtbo file"; }; pi5Sdio = { enable = lib.mkEnableOption "Enable sdio-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/sdio-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/sdio-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi21cs = { enable = lib.mkEnableOption "Enable spi2-1cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi2-1cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi2-1cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi22cs = { enable = lib.mkEnableOption "Enable spi2-2cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi2-2cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi2-2cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi31cs = { enable = lib.mkEnableOption "Enable spi3-1cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi3-1cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi3-1cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi32cs = { enable = lib.mkEnableOption "Enable spi3-2cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi3-2cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi3-2cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi51cs = { enable = lib.mkEnableOption "Enable spi5-1cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi5-1cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi5-1cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Spi52cs = { enable = lib.mkEnableOption "Enable spi5-2cs-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/spi5-1cs-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/spi5-1cs-pi5.dtbo" "Location of the dtbo file"; }; pi5Uart0 = { enable = lib.mkEnableOption "Enable pi5Uart0 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/uart0-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/uart0-pi5.dtbo" "Location of the dtbo file"; }; pi5Uart1 = { enable = lib.mkEnableOption "Enable pi5Uart1 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/uart1-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/uart1-pi5.dtbo" "Location of the dtbo file"; }; pi5Uart2 = { enable = lib.mkEnableOption "Enable pi5Uart2 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/uart2-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/uart2-pi5.dtbo" "Location of the dtbo file"; }; pi5Uart3 = { enable = lib.mkEnableOption "Enable pi5Uart3 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/uart3-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/uart3-pi5.dtbo" "Location of the dtbo file"; }; pi5Uart4 = { enable = lib.mkEnableOption "Enable pi5Uart4 on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/uart4-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/uart4-pi5.dtbo" "Location of the dtbo file"; }; pi5Vc4Kms = { enable = lib.mkEnableOption "Enable vc4-kms-v3d-pi5.dtbo on Pi5"; - overlay = mkOpt types.str "${firmware}/boot/overlays/vc4-kms-v3d-pi5.dtbo" "Location of the dtbo file"; + overlay = mkOpt types.str "${firmware}/vc4-kms-v3d-pi5.dtbo" "Location of the dtbo file"; + }; + + bcm2712d0 = { + enable = lib.mkEnableOption "Enable bcm2712d0.dtbo on Pi5"; + overlay = mkOpt types.str "${firmware}/bcm2712d0.dtbo" "Location of the dtbo file"; }; }; @@ -243,6 +248,13 @@ in else rm -rf ${toString configfsPath}/vc4-kms-v3d-pi5 fi + + if [ ${if cfg.bcm2712d0.enable then "true" else "false"} ]; then + mkdir ${toString configfsPath}/bcm2712d0 + cp ${cfg.bcm2712d0.overlay} ${configfsPath}/bcm2712d0/dtbo + else + rm -rf ${toString configfsPath}/bcm2712d0 + fi ''; wantedBy = [ "multi-user.target" ]; };