45 lines
880 B
Nix

{
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"
];
};
}