diff options
Diffstat (limited to 'infra/libkookie/home-manager/modules/programs/gpg.nix')
-rw-r--r-- | infra/libkookie/home-manager/modules/programs/gpg.nix | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/infra/libkookie/home-manager/modules/programs/gpg.nix b/infra/libkookie/home-manager/modules/programs/gpg.nix index 4588c59c8829..1c77d871e532 100644 --- a/infra/libkookie/home-manager/modules/programs/gpg.nix +++ b/infra/libkookie/home-manager/modules/programs/gpg.nix @@ -5,25 +5,30 @@ with lib; let cfg = config.programs.gpg; - cfgText = - concatStringsSep "\n" - (attrValues - (mapAttrs (key: value: - if isString value - then "${key} ${value}" - else optionalString value key) - cfg.settings)); - -in { + mkKeyValue = key: value: + if isString value + then "${key} ${value}" + else optionalString value key; + + cfgText = generators.toKeyValue { + inherit mkKeyValue; + listsAsDuplicateKeys = true; + } cfg.settings; + + primitiveType = types.oneOf [ types.str types.bool ]; +in +{ options.programs.gpg = { enable = mkEnableOption "GnuPG"; settings = mkOption { - type = types.attrsOf (types.either types.str types.bool); - example = { - no-comments = false; - s2k-cipher-algo = "AES128"; - }; + type = types.attrsOf (types.either primitiveType (types.listOf types.str)); + example = literalExample '' + { + no-comments = false; + s2k-cipher-algo = "AES128"; + } + ''; description = '' GnuPG configuration options. Available options are described in the gpg manpage: |