Arch Linux + Home Manager で pinentry が正しく動作しない
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
まとめ
直ったぞよ!