From d4c2b37d4688ff7edad2ff80786615bac93922ae Mon Sep 17 00:00:00 2001 From: hermes-bot Date: Wed, 22 Jul 2026 22:07:31 -0300 Subject: [PATCH] feat: add adaptive pinentry module (rofi on TTY, curses on SSH) --- hosts/jpporta-nixos/home.nix | 9 ++----- modules/home-manager/pinentry/default.nix | 32 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 modules/home-manager/pinentry/default.nix diff --git a/hosts/jpporta-nixos/home.nix b/hosts/jpporta-nixos/home.nix index 5474253..1a2d4f7 100644 --- a/hosts/jpporta-nixos/home.nix +++ b/hosts/jpporta-nixos/home.nix @@ -33,6 +33,7 @@ ../../modules/home-manager/openspec ../../modules/home-manager/power-profiles ../../modules/home-manager/ntfy-notify + ../../modules/home-manager/pinentry inputs.zen-browser.homeModules.beta ]; @@ -148,13 +149,7 @@ gpg.enable = true; }; - services.gpg-agent = { - enable = true; - pinentry.package = pkgs.pinentry-rofi; - enableSshSupport = true; # only if you use gpg keys as ssh keys - defaultCacheTtl = 3600; - maxCacheTtl = 86400; - }; + custom.pinentry.enable = true; services.swaync.enable = true; } diff --git a/modules/home-manager/pinentry/default.nix b/modules/home-manager/pinentry/default.nix new file mode 100644 index 0000000..49e84fd --- /dev/null +++ b/modules/home-manager/pinentry/default.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + pkgs, + ... +}: + +let + pinentry-wrapper = pkgs.writeShellScriptBin "pinentry-wrapper" '' + if [ -n "''${SSH_CONNECTION:-}" ] || [ -n "''${SSH_TTY:-}" ]; then + exec ${pkgs.pinentry-curses}/bin/pinentry-curses "$@" + else + exec ${pkgs.pinentry-rofi}/bin/pinentry-rofi "$@" + fi + ''; +in { + options.custom.pinentry = { + enable = lib.mkEnableOption "adaptive pinentry: rofi on TTY, curses on SSH"; + }; + + config = lib.mkIf config.custom.pinentry.enable { + home.packages = [ pinentry-wrapper ]; + + services.gpg-agent = { + enable = true; + pinentry.package = pinentry-wrapper; + enableSshSupport = true; + defaultCacheTtl = 3600; + maxCacheTtl = 86400; + }; + }; +}