diff options
author | Benjamin Lee <benjamin@computer.surgery> | 2023-09-30 22:36:30 -0700 |
---|---|---|
committer | Benjamin Lee <benjamin@computer.surgery> | 2023-10-05 18:43:23 -0700 |
commit | f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945 (patch) | |
tree | 08fc19833eff68707ef9e31ca0141939efff5553 /nixos/modules/programs | |
parent | 8a86b98f0ba1c405358f1b71ff8b5e1d317f5db2 (diff) |
nixos/gnupg: add agent.settings option
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r-- | nixos/modules/programs/gnupg.nix | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/nixos/modules/programs/gnupg.nix b/nixos/modules/programs/gnupg.nix index 697b6e9a0bd03..d67820a824a7f 100644 --- a/nixos/modules/programs/gnupg.nix +++ b/nixos/modules/programs/gnupg.nix @@ -6,6 +6,10 @@ let cfg = config.programs.gnupg; + agentSettingsFormat = pkgs.formats.keyValue { + mkKeyValue = lib.generators.mkKeyValueDefault { } " "; + }; + xserverCfg = config.services.xserver; defaultPinentryFlavor = @@ -82,6 +86,18 @@ in ''; }; + agent.settings = mkOption { + type = agentSettingsFormat.type; + default = { }; + example = { + default-cache-ttl = 600; + }; + description = lib.mdDoc '' + Configuration for /etc/gnupg/gpg-agent.conf. + See {manpage}`gpg-agent(1)` for supported options. + ''; + }; + dirmngr.enable = mkOption { type = types.bool; default = false; @@ -92,10 +108,13 @@ in }; config = mkIf cfg.agent.enable { - environment.etc."gnupg/gpg-agent.conf".text = - lib.optionalString (cfg.agent.pinentryFlavor != null) '' - pinentry-program ${pkgs.pinentry.${cfg.agent.pinentryFlavor}}/bin/pinentry - ''; + programs.gnupg.agent.settings = { + pinentry-program = lib.mkIf (cfg.agent.pinentryFlavor != null) + "${pkgs.pinentry.${cfg.agent.pinentryFlavor}}/bin/pinentry"; + }; + + environment.etc."gnupg/gpg-agent.conf".source = + agentSettingsFormat.generate "gpg-agent.conf" cfg.agent.settings; # This overrides the systemd user unit shipped with the gnupg package systemd.user.services.gpg-agent = { |