From 3a3bdfad16e79c798fffa7b702b6d52a587b643b Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 12 Sep 2026 19:55:43 -0400 Subject: [PATCH] fix(nixos): avoid blocking guest startup on steamcmd --- configs/nixos/modules/services/steamcmd.nix | 10 ++++++++++ src/dotfiles/guests.nix | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/configs/nixos/modules/services/steamcmd.nix b/configs/nixos/modules/services/steamcmd.nix index d1203d0..ac72d29 100644 --- a/configs/nixos/modules/services/steamcmd.nix +++ b/configs/nixos/modules/services/steamcmd.nix @@ -65,6 +65,13 @@ default = [ ]; description = "TCP ports opened for the game service."; }; + + startupTimeout = lib.mkOption { + type = lib.types.str; + default = "15min"; + example = "30min"; + description = "Time systemd allows SteamCMD update and server startup to complete."; + }; }; config = lib.mkMerge [ @@ -138,12 +145,14 @@ WorkingDirectory = "-${service.steamDir}"; ExecStartPre = "+${prepareScript}"; ExecStart = updateScript; + TimeoutStartSec = service.startupTimeout; }; }; ${service.serviceName} = { description = "${service.serviceName} game server"; after = [ + "multi-user.target" "network-online.target" "steamcmd-${service.serviceName}-update.service" ]; @@ -160,6 +169,7 @@ ]; ExecStart = startScript; Restart = "on-failure"; + TimeoutStartSec = service.startupTimeout; }; }; }; diff --git a/src/dotfiles/guests.nix b/src/dotfiles/guests.nix index 5f8c50f..ddf47ed 100644 --- a/src/dotfiles/guests.nix +++ b/src/dotfiles/guests.nix @@ -134,6 +134,16 @@ let default = { }; description = "NixOS module imported into the guest interior."; }; + startupTimeout = lib.mkOption { + type = lib.types.str; + default = "10min"; + example = "30min"; + description = '' + Time the host waits for this guest to finish booting before treating + container startup as failed. + ''; + }; + limits = { memory = lib.mkOption { type = lib.types.nullOr lib.types.str; @@ -223,6 +233,7 @@ let wants = [ bridgeDevice ]; serviceConfig = lib.filterAttrs (_: v: v != null) { + TimeoutStartSec = lib.mkForce cfg.startupTimeout; MemoryMax = cfg.limits.memory; CPUQuota = cfg.limits.cpu; TasksMax = cfg.limits.tasksMax;