62 lines
1.5 KiB
Nix
62 lines
1.5 KiB
Nix
{ den, modules, ... }:
|
|
{
|
|
modules.wivrn = {
|
|
homeManager =
|
|
{ pkgs, ... }:
|
|
{
|
|
home.packages = with pkgs; [
|
|
wivrn
|
|
wayvr
|
|
];
|
|
};
|
|
|
|
nixos =
|
|
{ pkgs, lib, ... }:
|
|
{
|
|
services.wivrn = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
autoStart = true;
|
|
highPriority = true;
|
|
|
|
# Low-latency encoder config
|
|
extraServerFlags = [ ];
|
|
|
|
monadoEnvironment = {
|
|
# Monado OpenXR runtime env vars
|
|
};
|
|
|
|
steam = {
|
|
enable = true;
|
|
importOXRRuntimes = true;
|
|
};
|
|
|
|
# Optimal config for low latency:
|
|
# - Vulkan encoder (newer kernels) or vaapi (AMD/Intel)
|
|
# - H265 codec (3ms overhead, better quality than H264)
|
|
# - 90Hz refresh rate (balance quality/battery)
|
|
# - 140% render resolution with quality supersampling
|
|
# - Up to 200Mbit/s bitrate on good networks
|
|
config.enable = true;
|
|
config.json = {
|
|
encoder = {
|
|
encoder = "nvenc";
|
|
codec = "h265";
|
|
};
|
|
|
|
# Enable mDNS discovery
|
|
"publish-service" = "avahi";
|
|
|
|
# High priority for async reprojection
|
|
highPriority = true;
|
|
};
|
|
};
|
|
|
|
# Include monado-vulkan-layers for VR rendering
|
|
environment.systemPackages = with pkgs; [
|
|
monado-vulkan-layers
|
|
];
|
|
};
|
|
};
|
|
}
|