{ config, lib, ... }: with lib; let cfg = config.nixfiles.modules.gnupg; in { options.nixfiles.modules.gnupg.pinentry = mkOption { description = "Name of a pinentry implementation."; type = types.str; default = "curses"; }; config = mkIf cfg.enable { hm = { programs.gpg.homedir = "${config.dirs.data}/gnupg"; services.gpg-agent = { enable = true; enableSshSupport = true; enableScDaemon = false; defaultCacheTtl = 999999; defaultCacheTtlSsh = 999999; maxCacheTtl = 999999; maxCacheTtlSsh = 999999; grabKeyboardAndMouse = true; sshKeys = [my.pgp.grip]; pinentryFlavor = cfg.pinentry; }; }; }; }