NixOS

NixOS #

General documentation about VR is provided on the NixOS Wiki.

Monado #

Monado is supported natively on NixOS using the services.monado since 24.05.

Make sure to follow the official guide as it sets the minimal requirements needed, then, if those aren’t sufficient:

In case of the headset view stuttering, adding U_PACING_COMP_MIN_TIME_MS = "5"; to systemd.user.services.monado.environment could help. Adjust the value as needed.

Similarly, setting the cpu Niceness value to a higher priority manually with renice -20 -p $(pgrep monado) could also help. Unfortunately systemd.user.services.monado.serviceConfig.Nice = -20; does not seem to work.

Once monado is set up the nix way, use systemctl --user start monado.service to run it and systemctl --user stop monado.service to stop it.

VRChat #

To get VRChat working with monado on nix, use the env PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/monado_comp_ipc %command% launch options on steam and click play with the “Launch VRChat in Steam VR” mode. It should open it on your desktop for preview and display it through monado.

SteamVR #

SteamVR works like it does on other distros for the most part. Unfotrunately, if it doesn’t work out of the box, troubleshooting it on NixOS can be close to impossible due to NixOS’s structure and SteamVR’s proprietary nature.

Asynchronous reprojection does not work without a kernel patch.

setcap doesn’t work but can be done manually.

Envision #

Envision has been packaged in nixos unstable but is still in early development and is not recommended. It may also mess with your monado.service setup in unexpected ways.

Community Overlays #

Nixpkgs-xr provides overlays for the exisiting nixpkgs. If the mainline packages are broken for you (whether it be compiling or in function) for any reason, adding this, as described in the readme, might help.