refactor(nixos): allow grouped SteamCMD arguments

This commit is contained in:
2026-09-09 22:03:09 -04:00
parent 4f19d5987c
commit 46805be6de
2 changed files with 14 additions and 17 deletions

View File

@@ -77,18 +77,12 @@
arguments = [ arguments = [
"-nographics" "-nographics"
"-batchmode" "-batchmode"
"-name" [ "-name" "main" ]
"main" [ "-port" "2456" ]
"-port" [ "-world" "main" ]
"2456" [ "-savedir" "/pikachu/media/games/servers/valheim/main" ]
"-world" [ "-password" "foobarbaz" ]
"main" [ "-public" "0" ]
"-savedir"
"/pikachu/media/games/servers/valheim/main"
"-password"
"foobarbaz"
"-public"
"0"
]; ];
udpPorts = [ udpPorts = [
2456 2456

View File

@@ -8,6 +8,7 @@ let
cfg = config.modules.services.steamcmd; cfg = config.modules.services.steamcmd;
libraryPath = lib.concatStringsSep ":" cfg.libraryDirs; libraryPath = lib.concatStringsSep ":" cfg.libraryDirs;
arguments = lib.flatten cfg.arguments;
prepareScript = pkgs.writeShellScript "steamcmd-${cfg.serviceName}-prepare" '' prepareScript = pkgs.writeShellScript "steamcmd-${cfg.serviceName}-prepare" ''
set -eu set -eu
@@ -37,7 +38,7 @@ let
cd ${lib.escapeShellArg cfg.installDir} cd ${lib.escapeShellArg cfg.installDir}
${lib.optionalString (cfg.libraryDirs != [ ]) ''export LD_LIBRARY_PATH=${lib.escapeShellArg libraryPath}:''${LD_LIBRARY_PATH-}''} ${lib.optionalString (cfg.libraryDirs != [ ]) ''export LD_LIBRARY_PATH=${lib.escapeShellArg libraryPath}:''${LD_LIBRARY_PATH-}''}
exec ${lib.getExe pkgs.steam-run} ${lib.escapeShellArg cfg.executable} ${lib.escapeShellArgs cfg.arguments} exec ${lib.getExe pkgs.steam-run} ${lib.escapeShellArg cfg.executable} ${lib.escapeShellArgs arguments}
''; '';
restartCommand = restartCommand =
@@ -102,13 +103,15 @@ in
}; };
arguments = lib.mkOption { arguments = lib.mkOption {
type = lib.types.listOf lib.types.str; type = lib.types.listOf (lib.types.oneOf [
lib.types.str
(lib.types.listOf lib.types.str)
]);
default = [ ]; default = [ ];
example = [ example = [
"-name" [ "-name" "main" ]
"main"
]; ];
description = "Arguments passed to the server executable."; description = "Arguments passed to the server executable. Nested lists group related arguments and are flattened before execution.";
}; };
libraryDirs = lib.mkOption { libraryDirs = lib.mkOption {