diff --git a/modules/nixos/hardware/raspberry-pi/overlays/default.nix b/modules/nixos/hardware/raspberry-pi/overlays/default.nix new file mode 100644 index 0000000..f2d4cd6 --- /dev/null +++ b/modules/nixos/hardware/raspberry-pi/overlays/default.nix @@ -0,0 +1,64 @@ +{ config, lib, pkgs, namespace, ... }: +let + inherit (lib.${namespace}) mkOpt mkBoolOpt; + cfg = config.${namespace}.hardware.raspberry-pi.overlays; + + firmware = pkgs.${namespace}.raspberrypifw; + 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}/boot/overlays/disable-wifi-pi5.dtbo" "Location of the dtbo file"; + }; + }; + +# audremap-pi5.dtbo +# disable-bt-pi5.dtbo +# disable-wifi-pi5.dtbo +# i2c0-pi5.dtbo +# i2c1-pi5.dtbo +# i2c2-pi5.dtbo +# i2c3-pi5.dtbo +# imx500-pi5.dtbo +# midi-uart0-pi5.dtbo +# midi-uart1-pi5.dtbo +# midi-uart2-pi5.dtbo +# midi-uart3-pi5.dtbo +# midi-uart4-pi5.dtbo +# pcie-32bit-dma-pi5.dtbo +# pciex1-compat-pi5.dtbo +# pisound-pi5.dtbo +# sdio-pi5.dtbo +# spi2-1cs-pi5.dtbo +# spi2-2cs-pi5.dtbo +# spi3-1cs-pi5.dtbo +# spi3-2cs-pi5.dtbo +# spi5-1cs-pi5.dtbo +# spi5-1cs.dtbo +# spi5-2cs-pi5.dtbo +# spi5-2cs.dtbo +# tc358743-pi5.dtbo +# uart0-pi5.dtbo +# uart1-pi5.dtbo +# uart2-pi5.dtbo +# uart3-pi5.dtbo +# uart4-pi5.dtbo +# vc4-kms-v3d-pi5.dtbo +# w1-gpio-pi5.dtbo +# w1-gpio-pullup-pi5.dtbo + + systemd.services = { + apply-overlays = { + description = "Apply Raspberry Pi Device Tree Overlays"; + script = '' + echo "Applying Device Tree Overlays via ConfigFS" + '' ++ lib.mkIf cfg.pi5DisableWifi.enable '' + mkdir ${configfsPath}/disable-wifi-pi5 + cp ${cfg.pi5DisableWifi.overlay} ${configfsPath}/disable-wifi-pi5/dtbo + ''; + wantedBy = [ "multi-user.target" ]; + }; + }; +} \ No newline at end of file