{ 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
      '';
    });
  };
}