gpg: allow for duplicate keys in config (#1814)

Allow for duplicate keys in the form of a list of strings.

Also update the `settings` example configuration to use `literalExample`.
This commit is contained in:
Nicolas Berbiche 2021-02-21 00:37:46 -05:00 committed by GitHub
parent 2b7a73071a
commit eb3a0342a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 15 deletions

View file

@ -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));
mkKeyValue = key: value:
if isString value
then "${key} ${value}"
else optionalString value key;
in {
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:

View file

@ -14,6 +14,8 @@ require-cross-certification
s2k-cipher-algo AES128
s2k-digest-algo SHA512
throw-keyids
trusted-key 0xXXXXXXXXXXXXX
trusted-key 0xYYYYYYYYYYYYY
use-agent
verify-options show-uid-validity
with-fingerprint
with-fingerprint

View file

@ -11,6 +11,10 @@ with lib;
no-comments = false;
s2k-cipher-algo = "AES128";
throw-keyids = true;
trusted-key = [
"0xXXXXXXXXXXXXX"
"0xYYYYYYYYYYYYY"
];
};
};