Merge pull request #89748 from heinic/krb5-lists

Changed files
+24 -18
nixos
modules
config
tests
+18 -16
nixos/modules/config/krb5/default.nix
···
value)
else value;
-
mkIndent = depth: concatStrings (builtins.genList (_: " ") (2 * depth));
+
indent = " ";
-
mkRelation = name: value: "${name} = ${mkVal { inherit value; }}";
+
mkRelation = name: value:
+
if (isList value) then
+
concatMapStringsSep "\n" (mkRelation name) value
+
else "${name} = ${mkVal value}";
-
mkVal = { value, depth ? 0 }:
+
mkVal = value:
if (value == true) then "true"
else if (value == false) then "false"
else if (isInt value) then (toString value)
-
else if (isList value) then
-
concatMapStringsSep " " mkVal { inherit value depth; }
else if (isAttrs value) then
-
(concatStringsSep "\n${mkIndent (depth + 1)}"
-
([ "{" ] ++ (mapAttrsToList
-
(attrName: attrValue: let
-
mappedAttrValue = mkVal {
-
value = attrValue;
-
depth = depth + 1;
-
};
-
in "${attrName} = ${mappedAttrValue}")
-
value))) + "\n${mkIndent depth}}"
+
let configLines = concatLists
+
(map (splitString "\n")
+
(mapAttrsToList mkRelation value));
+
in
+
(concatStringsSep "\n${indent}"
+
([ "{" ] ++ configLines))
+
+ "\n}"
else value;
mkMappedAttrsOrString = value: concatMapStringsSep "\n"
(line: if builtins.stringLength line > 0
-
then "${mkIndent 1}${line}"
+
then "${indent}${line}"
else line)
(splitString "\n"
(if isAttrs value then
···
{
"ATHENA.MIT.EDU" = {
admin_server = "athena.mit.edu";
-
kdc = "athena.mit.edu";
+
kdc = [
+
"athena01.mit.edu"
+
"athena02.mit.edu"
+
];
};
};
'';
+6 -2
nixos/tests/krb5/example-config.nix
···
realms = {
"ATHENA.MIT.EDU" = {
admin_server = "athena.mit.edu";
-
kdc = "athena.mit.edu";
+
kdc = [
+
"athena01.mit.edu"
+
"athena02.mit.edu"
+
];
};
};
domain_realm = {
···
[realms]
ATHENA.MIT.EDU = {
admin_server = athena.mit.edu
-
kdc = athena.mit.edu
+
kdc = athena01.mit.edu
+
kdc = athena02.mit.edu
}
[domain_realm]