{ lib, config, pkgs, ... }:
lib.mkIf config.desktop.enable {

  services.udev.extraRules = ''
    # Disable mouse as gamepad
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
  '';

  services.ratbagd = {
    enable = true;
    package = pkgs.libratbag.overrideAttrs (previousAttrs: {
      postInstall = ''
        # Ensure the target directory exists
        mkdir -p $out/share/libratbag/
        # cat the custom configuration file
        cat << EOF > $out/share/libratbag/asus-rog-pugio-II.device
[Device]
Name=ASUS ROG Pugio II
DeviceMatch=usb:0b05:1906;usb:0b05:1908
Driver=asus

[Driver/asus]
Profiles=3
Buttons=10
Leds=3
Dpis=4
Wireless=1
DpiRange=100:16000@100
ButtonMapping=f0;f1;f2;e4;e5;e6;0;e8;e9;e1;e2
EOF
      '';
    });
  };
}