summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorBenjamin Lee <benjamin@computer.surgery>2023-09-30 22:36:30 -0700
committerBenjamin Lee <benjamin@computer.surgery>2023-10-05 18:43:23 -0700
commitf0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945 (patch)
tree08fc19833eff68707ef9e31ca0141939efff5553 /nixos/modules/programs
parent8a86b98f0ba1c405358f1b71ff8b5e1d317f5db2 (diff)
downloadnixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar.gz
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar.bz2
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar.lz
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar.xz
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.tar.zst
nixpkgs-f0a8e05a5d95d2b4e08b53e0ae6c3bbe38b98945.zip
nixos/gnupg: add agent.settings option
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/gnupg.nix27
1 files changed, 23 insertions, 4 deletions
diff --git a/nixos/modules/programs/gnupg.nix b/nixos/modules/programs/gnupg.nix
index 697b6e9a0bd..d67820a824a 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 = {