{
  config,
  lib,
  ...
}:
let
  cfg = config.hardware.gcadapter;
in
{
  options.hardware.gcadapter.enable = lib.mkEnableOption "GameCube Adapter support";

  config = lib.mkIf cfg.enable {
    services.udev.extraRules = ''
      ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="666", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device" TAG+="uaccess"
    '';

    boot = {
      extraModulePackages = [
        config.boot.kernelPackages.gcadapter-oc-kmod
      ];

      kernelModules = [
        "gcadapter_oc"
      ];
    };
  };
}