diff --git a/modules/hardware/google-stadia-controller.nix b/modules/hardware/google-stadia-controller.nix
new file mode 100644
index 0000000..7b59e13
--- /dev/null
+++ b/modules/hardware/google-stadia-controller.nix
@@ -0,0 +1,24 @@
+{
+ lib,
+ config,
+ ...
+}:
+{
+ options.hardware.google-stadia-controller = {
+ enable = lib.mkEnableOption "Enable Google Stadia Controller support";
+ };
+ config = lib.mkIf config.hardware.google-stadia-controller.enable {
+ services.udev.extraRules = ''
+ #SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0664", GROUP="users"
+ # SDP protocol
+ KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", MODE="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1fc9", MODE="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", MODE="0666"
+ # Flashloader
+ KERNEL=="hidraw*", ATTRS{idVendor}=="15a2", MODE="0666"
+ # Controller
+ KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="18d1", MODE="0666"
+ SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="9400", MODE="0660", TAG+="uaccess"
+ '';
+ };
+}
|