about summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorLassulus <github@lassul.us>2021-03-07 14:22:16 +0100
committerGitHub <noreply@github.com>2021-03-07 14:22:16 +0100
commitf38b9b258f3f4db5ecf7dd27a7d5b48f23202843 (patch)
tree80d3ac64e0d6d40cb8ef34d5ba56e6ba2841bf7d /nixos/modules
parentaed658c6f20714bac2cbd1a480c8203e105eb305 (diff)
parentbe9d37e2f08386b880329d18d1e16c0be3d78ca1 (diff)
Merge pull request #113714 from ilian/steam-firewall
nixos/steam: Add port forwarding options
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/programs/steam.nix32
1 files changed, 31 insertions, 1 deletions
diff --git a/nixos/modules/programs/steam.nix b/nixos/modules/programs/steam.nix
index 6b805c374a017..ff4deba2bf0ae 100644
--- a/nixos/modules/programs/steam.nix
+++ b/nixos/modules/programs/steam.nix
@@ -12,7 +12,25 @@ let
       else [ package32 ] ++ extraPackages32;
   };
 in {
-  options.programs.steam.enable = mkEnableOption "steam";
+  options.programs.steam = {
+    enable = mkEnableOption "steam";
+
+    remotePlay.openFirewall = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Open ports in the firewall for Steam Remote Play.
+      '';
+    };
+
+    dedicatedServer.openFirewall = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Open ports in the firewall for Source Dedicated Server.
+      '';
+    };
+  };
 
   config = mkIf cfg.enable {
     hardware.opengl = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
@@ -27,6 +45,18 @@ in {
     hardware.steam-hardware.enable = true;
 
     environment.systemPackages = [ steam steam.run ];
+
+    networking.firewall = lib.mkMerge [
+      (mkIf cfg.remotePlay.openFirewall {
+        allowedTCPPorts = [ 27036 ];
+        allowedUDPPortRanges = [ { from = 27031; to = 27036; } ];
+      })
+
+      (mkIf cfg.dedicatedServer.openFirewall {
+        allowedTCPPorts = [ 27015 ]; # SRCDS Rcon port
+        allowedUDPPorts = [ 27015 ]; # Gameplay traffic
+      })
+    ];
   };
 
   meta.maintainers = with maintainers; [ mkg20001 ];