diff --git a/hosts/andromedae/default.nix b/hosts/andromedae/default.nix index 1b72837..96922f4 100644 --- a/hosts/andromedae/default.nix +++ b/hosts/andromedae/default.nix @@ -113,6 +113,7 @@ in persist.state.directories = [ ".config/sops/age" + ".config/WarThunder" "nixos-config" "projects" ]; @@ -126,6 +127,7 @@ in wal_init_zero = "off"; wal_recycle = "off"; }; + ataraxia.programs.steam.enable = true; ataraxia.vpn.sing-box.enable = true; ataraxia.vpn.sing-box.config = "ataraxia-singbox"; services.tailscale = { diff --git a/modules/nixos/applications/steam.nix b/modules/nixos/applications/steam.nix new file mode 100644 index 0000000..4a1dffb --- /dev/null +++ b/modules/nixos/applications/steam.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs, + options, + ... +}: +let + inherit (builtins) hasAttr; + inherit (lib) mkEnableOption mkIf; + cfg = config.ataraxia.programs.steam; + defaultUser = config.ataraxia.defaults.users.defaultUser; +in +{ + options.ataraxia.programs.steam = { + enable = mkEnableOption "Enable steam"; + }; + + config = mkIf cfg.enable { + programs.gamescope.enable = true; + programs.gamescope.capSysNice = false; + + services.ananicy = { + enable = true; + package = pkgs.ananicy-cpp; + rulesProvider = pkgs.ananicy-cpp; + extraRules = [ + { + "name" = "gamescope"; + "nice" = -20; + } + ]; + }; + + programs.steam.enable = true; + programs.steam.extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; + programs.steam.gamescopeSession.enable = true; + programs.steam.gamescopeSession.env = { + MANGOHUD = "1"; + CONNECTOR = "*,DP-3"; + }; + programs.steam.gamescopeSession.args = [ "--adaptive-sync" ]; + + home-manager = mkIf (hasAttr "home-manager" options) { + users.${defaultUser} = { + startupApplications = [ "${config.programs.steam.package}/bin/steam" ]; + persist.state.directories = [ ".local/share/Steam" ]; + }; + }; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index 92265be..dbb5bab 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -31,17 +31,6 @@ in # yt-archivist = prev.callPackage ./packages/yt-archivist { }; yt-dlp = unstable.yt-dlp; sing-box = unstable.sing-box; - steam = prev.steam.override { - extraPkgs = - pkgs: - builtins.attrValues { - inherit (pkgs) - mono - libkrb5 - keyutils - ; - }; - }; wine = prev.wineWow64Packages.stagingFull; # Move modprobed config to subdir. Easier to use with impermanence