{ options, config, lib, pkgs, ... }: with lib; with lib.frajul; let cfg = config.apps.tools.gnupg; in { options.apps.tools.gnupg = with types; { enable = mkBoolOpt false "Enable gnupg"; }; config = mkIf cfg.enable { environment.systemPackages = [ pkgs.pinentry pkgs.pinentry-curses (pkgs.writeShellScriptBin "gpg" '' GNUPGHOME=${config.environment.variables.GNUPGHOME} ${pkgs.gnupg}/bin/gpg $@ '') ]; services.pcscd.enable = true; programs.gnupg.agent = { enable = true; pinentryPackage = pkgs.pinentry-curses; enableSSHSupport = true; }; home.file.".local/share/gnupg/gpg-agent.conf".source = ./gpg-agent.conf; environment.variables = { GNUPGHOME = "$XDG_DATA_HOME/gnupg"; }; home.persist.directories = [ ".local/share/gnupg" ".pki" ]; }; }