Gaming — Gaming, VR, and Steam-focused desktop features
Purpose
Enable a desktop gaming stack around Steam, 32-bit graphics, Android ADB tooling, and WiVRn VR streaming, plus firewall, udev, and optional Decky Loader lifecycle integration.
Entry Point
- Main file: gaming.nix
Options
core.gaming.enable
| Type | boolean |
| Default | false |
| Example | true |
Whether to enable Enable gaming features.
Architecture / Services / Scope
When enabled, module:
- adds
adbuserstocore.defaultGroups, - enables
hardware.steam-hardwareand 32-bit graphics support, - installs
android-tools, - enables Steam with Steam Deck style launch arguments,
extest,xwayland-run/xwininfoextras, andproton-ge-bincompatibility, - opens Steam Remote Play and local transfer firewall rules,
- enables WiVRn with
highPriority, OpenXR runtime import, firewall access, and JSON config, - installs udev rules for PlayStation controller, Oculus Quest, and tty ACM devices, and
- overlays
gamescope-sessionfor 4K resolution and wider refresh limits.
Firewall ports opened: UDP 41492, 9943, 9944 plus TCP 8082, 9943, 9944, 24070.
Decky Loader Integration
If config.jovian.decky-loader.enable is true, module additionally:
- prevents
decky-loader.servicefrom auto-starting at boot, - adds Polkit rule so active local user can start and stop
decky-loader.service, and - when Home Manager is present, installs user service that polls Steam PID file, starts Decky Loader once Steam is running, and stops it after Steam exits.
WiVRn Socket Activation
WiVRn is activated on-demand through systemd user socket activation instead of running for the full session.
systemd.user.sockets.wivrnlistens on%t/wivrn/comp_ipc(UNIX socket, mode0770).- Socket is
WantedBy=default.target, so it’s available throughout the session, but WiVRn itself only starts when a client connects. - Service env override:
IPC_EXIT_ON_DISCONNECT=on— WiVRn exits after client disconnects. - Steam’s OpenXR runtime path resolves to the socket; activating a SteamVR/OpenXR game triggers socket activation.
- Parent dir created with
0750, socket with0770.
Operational Notes / Assumptions
- Module assumes desktop-class host with graphics stack and Steam support.
- WiVRn config uses NVENC H.265 encoder entries and enables
wayvras application. - Some extra behavior only appears when related modules already exist, such as Jovian Decky Loader and Home Manager.