From 5ed0924e7b445df9b684e6e5c63e0a7eeaf2f845 Mon Sep 17 00:00:00 2001 From: Nico Heitmann Date: Sun, 7 Jun 2020 16:07:47 +0200 Subject: [PATCH 1/3] nixos/krb5: refactor indentation generation mkVal is no longer aware of the indentation depth. Indentation is added to each line of the result when it is included in nested entries. --- nixos/modules/config/krb5/default.nix | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/nixos/modules/config/krb5/default.nix b/nixos/modules/config/krb5/default.nix index ff16ffcf9c6..85ecb8633a3 100644 --- a/nixos/modules/config/krb5/default.nix +++ b/nixos/modules/config/krb5/default.nix @@ -41,31 +41,29 @@ let value) else value; - mkIndent = depth: concatStrings (builtins.genList (_: " ") (2 * depth)); + indent = " "; - mkRelation = name: value: "${name} = ${mkVal { inherit value; }}"; + mkRelation = name: value: "${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; } + concatMapStringsSep " " mkVal value 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 From 2b694b1e9f69ba8053bb7006337b051154c44e86 Mon Sep 17 00:00:00 2001 From: Nico Heitmann Date: Sun, 7 Jun 2020 16:10:35 +0200 Subject: [PATCH 2/3] nixos/krb5: output lists as multiple config entries Fixes #89626 --- nixos/modules/config/krb5/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nixos/modules/config/krb5/default.nix b/nixos/modules/config/krb5/default.nix index 85ecb8633a3..58477fafc2d 100644 --- a/nixos/modules/config/krb5/default.nix +++ b/nixos/modules/config/krb5/default.nix @@ -43,14 +43,15 @@ let indent = " "; - mkRelation = name: value: "${name} = ${mkVal value}"; + mkRelation = name: value: + if (isList value) then + concatMapStringsSep "\n" (mkRelation name) value + else "${name} = ${mkVal value}"; 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 value else if (isAttrs value) then let configLines = concatLists (map (splitString "\n") From 0bee87c40085c396607b431afcc743b253567607 Mon Sep 17 00:00:00 2001 From: Nico Heitmann Date: Tue, 25 Aug 2020 17:18:56 +0200 Subject: [PATCH 3/3] nixos/krb5: add list to example configuration Updated the relevant nixos test to match the example configuration. --- nixos/modules/config/krb5/default.nix | 5 ++++- nixos/tests/krb5/example-config.nix | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/nixos/modules/config/krb5/default.nix b/nixos/modules/config/krb5/default.nix index 58477fafc2d..c2302451d70 100644 --- a/nixos/modules/config/krb5/default.nix +++ b/nixos/modules/config/krb5/default.nix @@ -113,7 +113,10 @@ in { { "ATHENA.MIT.EDU" = { admin_server = "athena.mit.edu"; - kdc = "athena.mit.edu"; + kdc = [ + "athena01.mit.edu" + "athena02.mit.edu" + ]; }; }; ''; diff --git a/nixos/tests/krb5/example-config.nix b/nixos/tests/krb5/example-config.nix index be195b51393..e2e10a9fda8 100644 --- a/nixos/tests/krb5/example-config.nix +++ b/nixos/tests/krb5/example-config.nix @@ -18,7 +18,10 @@ import ../make-test-python.nix ({ pkgs, ...} : { realms = { "ATHENA.MIT.EDU" = { admin_server = "athena.mit.edu"; - kdc = "athena.mit.edu"; + kdc = [ + "athena01.mit.edu" + "athena02.mit.edu" + ]; }; }; domain_realm = { @@ -65,7 +68,8 @@ import ../make-test-python.nix ({ pkgs, ...} : { [realms] ATHENA.MIT.EDU = { admin_server = athena.mit.edu - kdc = athena.mit.edu + kdc = athena01.mit.edu + kdc = athena02.mit.edu } [domain_realm]