diff --git a/modules/services/default.nix b/modules/services/default.nix index 86269d4..c3a430b 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -12,6 +12,7 @@ ./finance ./freshrss ./fritzbox + ./game-stream ./git ./grafana ./hedgedoc diff --git a/modules/services/game-stream/default.nix b/modules/services/game-stream/default.nix new file mode 100644 index 0000000..ea2bd2e --- /dev/null +++ b/modules/services/game-stream/default.nix @@ -0,0 +1,48 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.services.game-stream; +in +{ + options.my.services.game-stream = { + enable = lib.mkEnableOption "game-streaming-server"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ + pkgs.sunshine + ]; + services.udev.packages = [ pkgs.sunshine ]; + networking.firewall = { + enable = true; + allowedTCPPorts = [ + 47984 + 47989 + 47990 + 48010 + ]; + allowedUDPPortRanges = [ + { + from = 47998; + to = 48000; + } + { + from = 8000; + to = 8010; + } + ]; + }; + # Prevents this error: + # Fatal: You must run [sudo setcap cap_sys_admin+p $(readlink -f sunshine)] for KMS display capture to work! + security.wrappers.sunshine = { + owner = "root"; + group = "root"; + capabilities = "cap_sys_admin+p"; + source = "${pkgs.sunshine}/bin/sunshine"; + }; + }; +}