{ config, pkgs, lib, ... }: with lib; let cfg = config.aa.tools.gpg; in { options.aa.tools.gpg = with types; { enable = mkEnableOption "gpg"; }; config = mkIf cfg.enable { environment.systemPackages = [pkgs.gnupg ]; aa.home.extraOptions = { programs.gpg = { enable = true; scdaemonSettings = { # Fix conflicts with config in common/yubikey.nix disable-ccid = true; }; }; programs.ssh.matchBlocks = { # Fix for pinentry showing up in wrong terminal "*".match = "host * exec \"gpg-connect-agent UPDATESTARTUPTTY /bye\""; }; services.gpg-agent = { enable = true; pinentryPackage = pkgs.pinentry-curses; enableZshIntegration = true; # TODO: Only set if using zsh enableSshSupport = true; sshKeys = [ # run `gpg-connect-agent 'keyinfo --list' /bye` to get these values for existing keys "E274D5078327CB6C8C83CFF102CC12A2D493C77F" ]; }; }; }; }