@@ -76,7 +76,7 @@ let
7676 };
7777
7878 tags = mkOption {
79− type = types.attrsOf types.str;
79+ type = types.attrsOf (types.either types.str (types.listOf types.str));
8080 default = {};
8181 example = { queue = "default"; docker = "true"; ruby2 ="true"; };
8282 description = ''
@@ -230,7 +230,11 @@ in
230230 ## don't end up in the Nix store.
231231 preStart = let
232232 sshDir = "${cfg.dataDir}/.ssh";
233− tagStr = lib.concatStringsSep "," (lib.mapAttrsToList (name: value: "${name}=${value}") cfg.tags);
233+ tagStr = name: value:
234+ if lib.isList value
235+ then lib.concatStringsSep "," (builtins.map (v: "${name}=${v}") value)
236+ else "${name}=${value}";
237+ tagsStr = lib.concatStringsSep "," (lib.mapAttrsToList tagStr cfg.tags);
234238 in
235239 optionalString (cfg.privateSshKeyPath != null) ''
236240 mkdir -m 0700 -p "${sshDir}"
@@ -241,7 +245,7 @@ in
241245 token="$(cat ${toString cfg.tokenPath})"
242246 name="${cfg.name}"
243247 shell="${cfg.shell}"
244− tags="${tagStr}"
248+ tags="${tagsStr}"
245249 build-path="${cfg.dataDir}/builds"
246250 hooks-path="${cfg.hooksPath}"
247251 ${cfg.extraConfig}