diff --git a/configs/nixos/guests/palworld.nix b/configs/nixos/guests/palworld.nix index 212a20d..71bab38 100644 --- a/configs/nixos/guests/palworld.nix +++ b/configs/nixos/guests/palworld.nix @@ -50,6 +50,12 @@ in description = "Public IP address advertised by the Palworld server."; }; + autoStart = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Start the Palworld server after the guest reaches network readiness."; + }; + passwordSecret = lib.mkOption { type = lib.types.str; default = "services/game-servers/password"; @@ -82,7 +88,7 @@ in guests.palworld = { interior.modules.services.games.palworld = { enable = true; - inherit (cfg) serverName port publicIP; + inherit (cfg) serverName port publicIP autoStart; inherit steamDir installDir stateDir; passwordFile = "/run/secrets/${cfg.passwordSecret}"; adminPasswordFile = "/run/secrets/${cfg.adminPasswordSecret}"; diff --git a/configs/nixos/hosts/pikachu/default.nix b/configs/nixos/hosts/pikachu/default.nix index 2853ea6..6ed01b0 100644 --- a/configs/nixos/hosts/pikachu/default.nix +++ b/configs/nixos/hosts/pikachu/default.nix @@ -94,6 +94,7 @@ installPath = "/pikachu/data/servers/palworld/tracion"; statePath = "/pikachu/media/games/servers/palworld/tracion"; serverName = "Tracion"; + autoStart = false; adminPasswordSecret = "services/game-servers/admin/password"; publicIP = config.guests.palworld.address; reverseProxy = { diff --git a/configs/nixos/modules/services/games/palworld.nix b/configs/nixos/modules/services/games/palworld.nix index 7c321da..4e2fa66 100644 --- a/configs/nixos/modules/services/games/palworld.nix +++ b/configs/nixos/modules/services/games/palworld.nix @@ -56,6 +56,12 @@ description = "Advertise the server in Palworld's public lobby."; }; + autoStart = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Start the Palworld server after the guest reaches network readiness."; + }; + rcon = { enable = lib.mkEnableOption "Palworld RCON" // { default = true; @@ -126,6 +132,7 @@ inherit (service) steamDir installDir stateDir; serviceName = "palworld-${lib.toLower service.serverName}"; appId = 2394010; + inherit (service) autoStart; executable = "${startScript}"; arguments = [ diff --git a/configs/nixos/modules/services/steamcmd.nix b/configs/nixos/modules/services/steamcmd.nix index 5c27d94..e15a517 100644 --- a/configs/nixos/modules/services/steamcmd.nix +++ b/configs/nixos/modules/services/steamcmd.nix @@ -65,6 +65,12 @@ default = [ ]; description = "TCP ports opened for the game service."; }; + + autoStart = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Start the game service after the guest reaches network readiness."; + }; }; config = lib.mkMerge [ @@ -146,7 +152,7 @@ description = "Queue ${service.serviceName} game server startup"; after = [ "network-online.target" ]; wants = [ "network-online.target" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = lib.mkIf service.autoStart [ "multi-user.target" ]; serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.systemd}/bin/systemctl --no-block start ${service.serviceName}.service";