Files
nixos-configs/roles/desktop/gaming.nix
T
johno 1bf7b88be5
CI / check (push) Successful in 2m0s
CI / Build & Push OpenClaw Image (push) Successful in 37m4s
CI / build-and-cache (push) Failing after 1h14m22s
feat(gaming): add xone driver and YARG udev rules for controller support
Enable hardware.xone for Xbox wireless protocol support (PDP RiffMaster Xbox) and add udev rules for HID controller access (Wii/PS3 instruments) and Xbox 360 Wireless Adapter. Without these, YARG requires Steam as a workaround which causes connectivity conflicts.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-11 19:33:37 -07:00

56 lines
1.6 KiB
Nix

{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkMerge [
(mkIf (cfg.enable && cfg.gaming.enable) {
environment.systemPackages = with pkgs; [
lutris
moonlight
# Emulators
dolphin-emu
# Re-enabled in 25.11 after binary build was fixed
dolphin-emu-primehack
# Experimenting with just using the steam version + downloading
# indiviudal cores
#retroarch-full
ryubing
yarg
];
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# Xbox wireless protocol support (PDP RiffMaster Xbox, Xbox controllers, etc.)
hardware.xone.enable = true;
# YARG (rhythm game) needs udev rules for HID controller access.
# Without these, instruments (Wii, PS3, etc.) can't be read without
# sudo, and Steam's input layer must be used as a workaround (which
# causes connectivity conflicts).
# Note: Xbox peripherals (PDP RiffMaster Xbox) use xone instead of hidraw.
services.udev.extraRules = ''
# Allow user access to hidraw devices (Wii/PS3/PS4 instruments, etc.)
KERNEL=="hidraw*", TAG+="uaccess"
# Xbox 360 Wireless Adapter
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="0291", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02a9", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="0719", MODE="0666"
'';
})
];
}