refactor(steam): scope VR configuration to Zeus
This commit is contained in:
@@ -40,7 +40,6 @@
|
|||||||
modules.desktop.enable = true;
|
modules.desktop.enable = true;
|
||||||
modules.desktop.apps.firefox.uiScale = "1.25";
|
modules.desktop.apps.firefox.uiScale = "1.25";
|
||||||
modules.desktop.apps.obsidian.enable = true;
|
modules.desktop.apps.obsidian.enable = true;
|
||||||
modules.desktop.apps.steam.enable = true;
|
|
||||||
|
|
||||||
registry.waybar.neogaia.battery = {
|
registry.waybar.neogaia.battery = {
|
||||||
order = 70;
|
order = 70;
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
# zeus — Ryzen desktop with AMD graphics.
|
# zeus — Ryzen desktop with AMD graphics.
|
||||||
# Disk layout is in ./disk.nix.
|
# Disk layout is in ./disk.nix.
|
||||||
# `fileSystems` are derived from it, none declared here.
|
# `fileSystems` are derived from it, none declared here.
|
||||||
|
let
|
||||||
|
steamVrLauncher = "/home/${config.user.name}/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./disk.nix
|
./disk.nix
|
||||||
@@ -46,12 +50,30 @@
|
|||||||
modules.desktop.apps.r2modman.enable = true;
|
modules.desktop.apps.r2modman.enable = true;
|
||||||
modules.desktop.emulation.enable = true;
|
modules.desktop.emulation.enable = true;
|
||||||
modules.desktop.apps.signal.enable = true;
|
modules.desktop.apps.signal.enable = true;
|
||||||
modules.desktop.apps.steam = {
|
modules.desktop.apps.steam.enable = true;
|
||||||
enable = true;
|
|
||||||
vr.enable = true;
|
|
||||||
};
|
|
||||||
modules.desktop.apps.vencord.enable = true;
|
modules.desktop.apps.vencord.enable = true;
|
||||||
|
|
||||||
|
networking.firewall.allowedUDPPorts = [ 10400 ];
|
||||||
|
|
||||||
|
programs.gamescope.capSysNice = true;
|
||||||
|
|
||||||
|
systemd.paths.steamvr-capabilities = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
pathConfig = {
|
||||||
|
PathChanged = steamVrLauncher;
|
||||||
|
Unit = "steamvr-capabilities.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.steamvr-capabilities = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = [ pkgs.libcap ];
|
||||||
|
script = ''
|
||||||
|
setcap cap_sys_nice=eip ${lib.escapeShellArg steamVrLauncher}
|
||||||
|
'';
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.${config.user.name}.wayland.windowManager.hyprland.settings.monitor = [
|
home-manager.users.${config.user.name}.wayland.windowManager.hyprland.settings.monitor = [
|
||||||
{
|
{
|
||||||
output = "HDMI-A-1";
|
output = "HDMI-A-1";
|
||||||
|
|||||||
@@ -6,62 +6,26 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
# Steam game launcher and runtime integration.
|
# Steam game launcher and runtime integration.
|
||||||
let
|
|
||||||
cfg = config.modules.desktop.apps.steam;
|
|
||||||
steamVrLauncher = "/home/${config.user.name}/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
options.modules.desktop.apps.steam = {
|
options.modules.desktop.apps.steam.enable = lib.mkEnableOption "Steam game launcher";
|
||||||
enable = lib.mkEnableOption "Steam game launcher";
|
|
||||||
|
|
||||||
vr.enable = lib.mkEnableOption "SteamVR with VRLink";
|
config = lib.mkIf config.modules.desktop.apps.steam.enable {
|
||||||
|
programs.gamemode.enable = true;
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.steam.override {
|
||||||
|
extraEnv.STEAM_FORCE_DESKTOPUI_SCALING = "1.5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.steam-hardware.enable = true;
|
||||||
|
|
||||||
|
programs.gamescope.enable = true;
|
||||||
|
|
||||||
|
registry.window-icon.${config.networking.hostName}.steam = {
|
||||||
|
class = "[Ss]team";
|
||||||
|
icon = util.glyph "f1b6";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
programs.gamemode.enable = true;
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.steam.override {
|
|
||||||
extraEnv.STEAM_FORCE_DESKTOPUI_SCALING = "1.5";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.steam-hardware.enable = true;
|
|
||||||
|
|
||||||
programs.gamescope.enable = true;
|
|
||||||
|
|
||||||
registry.window-icon.${config.networking.hostName}.steam = {
|
|
||||||
class = "[Ss]team";
|
|
||||||
icon = util.glyph "f1b6";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
(lib.mkIf cfg.vr.enable {
|
|
||||||
networking.firewall.allowedUDPPorts = [ 10400 ];
|
|
||||||
|
|
||||||
programs.gamescope.capSysNice = true;
|
|
||||||
|
|
||||||
systemd.paths.steamvr-capabilities = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
pathConfig = {
|
|
||||||
PathChanged = steamVrLauncher;
|
|
||||||
Unit = "steamvr-capabilities.service";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.steamvr-capabilities = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.libcap ];
|
|
||||||
script = ''
|
|
||||||
if [ -e ${lib.escapeShellArg steamVrLauncher} ]; then
|
|
||||||
setcap cap_sys_nice=eip ${lib.escapeShellArg steamVrLauncher}
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user