晴れときどき崩壊ブログ

Arch Linux + Home Manager で pinentry が正しく動作しない

pinentryがダブってるぞよ!

経緯

Arch Linux (WSL) に Nix を入れて HomeManager で環境を管理しています。 git の設定でコミットする時にgpgで署名されます。 このCLIだけの環境で想定される挙動としては、鍵の使用時にターミナル上にプロンプトが出て、パスフレーズを入力する、という流れです。

ところが、git commit しようとすると gnupgpinentry がないとエラーを出します。

詰まったところ

services.gpg-agent.pinentryPackage = pkgs.pinentry-tty;

原因?

Terminal window
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のデーモンを再起動してあげます。

Terminal window
gpgconf --kill gpg-agent

まとめ

直ったぞよ!


Previous Post
Aerospace with Home Manager
Next Post
dotfiles で環境変数に API KEY を設定する (with Nix)