Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

Options

core.gaming.enable

Typeboolean
Defaultfalse
Exampletrue

Whether to enable Enable gaming features.


Architecture / Services / Scope

When enabled, module:

  • adds adbusers to core.defaultGroups,
  • enables hardware.steam-hardware and 32-bit graphics support,
  • installs android-tools,
  • enables Steam with Steam Deck style launch arguments, extest, xwayland-run/xwininfo extras, and proton-ge-bin compatibility,
  • 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-session for 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.service from 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.wivrn listens on %t/wivrn/comp_ipc (UNIX socket, mode 0770).
  • 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 with 0770.

Operational Notes / Assumptions

  • Module assumes desktop-class host with graphics stack and Steam support.
  • WiVRn config uses NVENC H.265 encoder entries and enables wayvr as application.
  • Some extra behavior only appears when related modules already exist, such as Jovian Decky Loader and Home Manager.