From b62ca97ccb56fd425aa98d413b0514f08c2b07ad Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Sun, 27 Apr 2025 20:57:17 +0800 Subject: [PATCH] feat(nixosmodules): add steam module --- hosts/nemesis.nix | 2 ++ modules/nixos/default.nix | 1 + modules/nixos/gaming.nix | 42 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 modules/nixos/gaming.nix diff --git a/hosts/nemesis.nix b/hosts/nemesis.nix index 2c3b5a3..b510ec3 100644 --- a/hosts/nemesis.nix +++ b/hosts/nemesis.nix @@ -8,4 +8,6 @@ boot-config.bootloader = "systemd-boot"; hardware-config.cpu = "amd"; hardware-config.gpu = "nvidia"; + gaming.steam.enable = true; + gaming.steam.enableGamescope = true; } diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index eaee29f..5021abd 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -12,6 +12,7 @@ in ./boot.nix ./hardware.nix ./nix-config.nix + ./gaming.nix ]; options = { diff --git a/modules/nixos/gaming.nix b/modules/nixos/gaming.nix new file mode 100644 index 0000000..13d7f21 --- /dev/null +++ b/modules/nixos/gaming.nix @@ -0,0 +1,42 @@ +{ + config, + lib, + pkgs, + ... +}: +let + moduleName = "gaming"; + cfg = config."${moduleName}"; +in +{ + options = { + "${moduleName}" = { + steam = { + enable = lib.mkEnableOption "Enable Steam."; + enableGamescope = lib.mkEnableOption "Enable the gamescope compositor."; + }; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.steam.enable { + programs.steam = { + enable = true; + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + protontricks.enable = true; + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers + }; + environment.systemPackages = with pkgs; [ + steam-run + ]; + }) + (lib.mkIf cfg.steam.enableGamescope { + programs.steam.gamescopeSession.enable = true; + programs.gamescope = { + enable = true; + capSysNice = true; + }; + }) + ]; +}