pinentryがダブってるぞよ!
経緯
Arch Linux (WSL) に Nix を入れて HomeManager で環境を管理しています。
git の設定でコミットする時にgpgで署名されます。
このCLIだけの環境で想定される挙動としては、鍵の使用時にターミナル上にプロンプトが出て、パスフレーズを入力する、という流れです。
ところが、git commit しようとすると gnupg が pinentry がないとエラーを出します。
詰まったところ
- ちゃんとpinentryパッケージを指定し、インストールされている
services.gpg-agent.pinentryPackage = pkgs.pinentry-tty;pinentryコマンドが動く
原因?
which pinentry>> /usr/sbin/pinentryどうやら HomeManager でインストールした pinentry じゃなさそうじゃないですか〜
これは pacman の依存の gnupg の依存で入ってきたやつですね。
対策
上書きしてやりましょう(雑)
{ pkgs, ... }: { imports = [ ./. ]; services.gpg-agent.pinentryPackage = pkgs.pinentry-tty;
programs.zsh.initExtra = '' alias pinentry=${pkgs.pinentry-tty}/bin/pinentry '';}HomeManagerをビルドし直したらgpg-agentのデーモンを再起動してあげます。
gpgconf --kill gpg-agentまとめ
直ったぞよ!