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 = [
"-nographics"
"-batchmode"
"-name"
"main"
"-port"
"2456"
"-world"
"main"
"-savedir"
"/pikachu/media/games/servers/valheim/main"
"-password"
"foobarbaz"
"-public"
"0"
[ "-name" "main" ]
[ "-port" "2456" ]
[ "-world" "main" ]
[ "-savedir" "/pikachu/media/games/servers/valheim/main" ]
[ "-password" "foobarbaz" ]
[ "-public" "0" ]
];
udpPorts = [
2456

View File

@@ -8,6 +8,7 @@ let
cfg = config.modules.services.steamcmd;
libraryPath = lib.concatStringsSep ":" cfg.libraryDirs;
arguments = lib.flatten cfg.arguments;
prepareScript = pkgs.writeShellScript "steamcmd-${cfg.serviceName}-prepare" ''
set -eu
@@ -37,7 +38,7 @@ let
cd ${lib.escapeShellArg cfg.installDir}
${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 =
@@ -102,13 +103,15 @@ in
};
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 = [ ];
example = [
"-name"
"main"
[ "-name" "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 {