{
  config,
  lib,
  pkgs,
  namespace,
  ...
}:
let
  cfg = config.${namespace}.hardware.raspberry-pi.pwm;
  variant = config.${namespace}.hardware.raspberry-pi.variant;
in
{
  options.${namespace}.hardware.raspberry-pi.pwm = {
    enable = lib.mkEnableOption "enable pwm dt overlay";
  };

  config = lib.mkIf cfg.enable {
    hardware.deviceTree = {
      overlays = [
        {
          name = "enable-pwm";
          filter = (if (variant == "5") then "*pi5*" else "*rpi-4-b*");
          dtsFile = (
            if (variant == "5") then
              "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/pwm-pio-overlay.dts"
            else
              "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/pwm1-overlay.dts"
          );
        }
      ];
    };
  };
}
