{ config, pkgs, lib, namespace, ... }: with lib; let name = "sunshine"; cfg = config.${namespace}.services.${name}; module = lib.${namespace}.mkModule { inherit config name; description = "Sunshine, a self-hosted game stream host for Moonlight"; options = { }; moduleConfig = { services.sunshine = { enable = true; openFirewall = cfg.openFirewall; autoStart = true; capSysAdmin = true; applications.apps = with pkgs; [ steam ]; settings = { port = 47989; }; }; # systemd.user.services.sunshine = { # description = "Self-hosted game stream host for Moonlight"; # wantedBy = [ "graphical-session.target" ]; # partOf = [ "graphical-session.target" ]; # wants = [ "graphical-session.target" ]; # after = [ "graphical-session.target" ]; # startLimitIntervalSec = 500; # startLimitBurst = 5; # environment.PATH = lib.mkForce null; # don't use default PATH, needed for tray icon menu links to work # serviceConfig = { # # only add configFile if an application or a setting other than the default port is set to allow configuration from web UI # ExecStart = lib.mkForce "${config.security.wrapperDir}/sunshine port:47989"; # Restart = "on-failure"; # RestartSec = "5s"; # }; # }; }; }; in { imports = [ module ]; }