From cfb95bbedc617340dc50834ce530bf0888c4190f Mon Sep 17 00:00:00 2001 From: transcaffeine Date: Tue, 3 Dec 2024 20:22:55 +0100 Subject: [PATCH] chore(home-manager/gpg-agent): template agent configuration from upstream dotfiles --- users/transcaffeine/home-manager/gnupg.nix | 44 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/users/transcaffeine/home-manager/gnupg.nix b/users/transcaffeine/home-manager/gnupg.nix index 567bee9..6996089 100644 --- a/users/transcaffeine/home-manager/gnupg.nix +++ b/users/transcaffeine/home-manager/gnupg.nix @@ -1,10 +1,14 @@ -{ lib, ... }: { +{ lib, ... }: + +let + repo = (builtins.fetchGit { + url = "https://git.finally.coffee/transcaffeine/dotfiles.git"; + ref = "main"; + shallow = true; + }); + utils = import ../../../utils { inherit lib; }; +in { programs.gpg = let - repo = (builtins.fetchGit { - url = "https://git.finally.coffee/transcaffeine/dotfiles.git"; - ref = "main"; - shallow = true; - }); gpgconf = builtins.listToAttrs ( map (entry: { name = toString (lib.sublist 0 1 (lib.splitString " " entry)); @@ -21,4 +25,32 @@ enable = true; settings = gpgconf; }; + services.gpg-agent = let + gpg_agent_config = builtins.listToAttrs ( + map (entry: let + val = toString (lib.sublist 1 100 (lib.splitString " " entry)); + emptyStringToTrue = (x: if lib.isBool x then x else if x == "" then true else x); + in { + name = toString (lib.sublist 0 1 (lib.splitString " " entry)); + value = emptyStringToTrue val; + }) ( + builtins.filter (v: v != "") ( + lib.splitString "\n" ( + lib.readFile (repo.outPath + "/config/gnupg/gpg-agent.conf") + ) + ) + ) + ); + in { + enable = true; + enableSshSupport = gpg_agent_config."enable-ssh-support"; + defaultCacheTtl = gpg_agent_config."default-cache-ttl"; + maxCacheTtl = gpg_agent_config."max-cache-ttl"; + defaultCacheTtlSsh = gpg_agent_config."default-cache-ttl-ssh"; + maxCacheTtlSsh = gpg_agent_config."max-cache-ttl-ssh"; + extraConfig = utils.attrsToConfig { + "ignore-cache-for-signing" = gpg_agent_config."ignore-cache-for-signing"; + "no-allow-external-cache" = gpg_agent_config."no-allow-external-cache"; + }; + }; }