From d437baa41ca9e8e544fe8969310141816d1e8611 Mon Sep 17 00:00:00 2001 From: Cole Mickens Date: Tue, 27 Apr 2021 13:40:05 -0700 Subject: [PATCH] gnupg/gpg-agent: gnupg package is configurable (#1949) --- modules/programs/gpg.nix | 10 +++++++++- modules/services/gpg-agent.nix | 11 ++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix index c31eb848b..f81002c87 100644 --- a/modules/programs/gpg.nix +++ b/modules/programs/gpg.nix @@ -21,6 +21,14 @@ in options.programs.gpg = { enable = mkEnableOption "GnuPG"; + package = mkOption { + type = types.package; + default = pkgs.gnupg; + defaultText = literalExample "pkgs.gnupg"; + example = literalExample "pkgs.gnupg23"; + description = "The Gnupg package to use (also used the gpg-agent service)."; + }; + settings = mkOption { type = types.attrsOf (types.either primitiveType (types.listOf types.str)); example = literalExample '' @@ -67,7 +75,7 @@ in use-agent = mkDefault true; }; - home.packages = [ pkgs.gnupg ]; + home.packages = [ cfg.package ]; home.sessionVariables = { GNUPGHOME = cfg.homedir; }; diff --git a/modules/services/gpg-agent.nix b/modules/services/gpg-agent.nix index 1092dd874..785c23b4b 100644 --- a/modules/services/gpg-agent.nix +++ b/modules/services/gpg-agent.nix @@ -5,6 +5,7 @@ with lib; let cfg = config.services.gpg-agent; + gpgPkg = config.programs.gpg.package; homedir = config.programs.gpg.homedir; @@ -13,7 +14,7 @@ let export GPG_TTY '' + optionalString cfg.enableSshSupport - "${pkgs.gnupg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null"; + "${gpgPkg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null"; # mimic `gpgconf` output for use in `systemd` unit definitions. # we cannot use `gpgconf` directly because it heavily depends on system @@ -204,7 +205,7 @@ in home.sessionVariables = optionalAttrs cfg.enableSshSupport { - SSH_AUTH_SOCK = "$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)"; + SSH_AUTH_SOCK = "$(${gpgPkg}/bin/gpgconf --list-dirs agent-ssh-socket)"; }; programs.bash.initExtra = gpgInitStr; @@ -222,7 +223,7 @@ in # The systemd units below are direct translations of the # descriptions in the # - # ${pkgs.gnupg}/share/doc/gnupg/examples/systemd-user + # ${gpgPkg}/share/doc/gnupg/examples/systemd-user # # directory. { @@ -237,9 +238,9 @@ in }; Service = { - ExecStart = "${pkgs.gnupg}/bin/gpg-agent --supervised" + ExecStart = "${gpgPkg}/bin/gpg-agent --supervised" + optionalString cfg.verbose " --verbose"; - ExecReload = "${pkgs.gnupg}/bin/gpgconf --reload gpg-agent"; + ExecReload = "${gpgPkg}/bin/gpgconf --reload gpg-agent"; Environment = "GNUPGHOME=${homedir}"; }; };