feat: forgejoの認証情報をpass-git-helper経由で記憶する#1297
Conversation
nvd diff: seminar (base: master)Version changesAdded packages
|
There was a problem hiding this comment.
Forgejoの認証情報をpass-git-helper経由でpassに記憶させる構成です。トークンをsopsで正本管理しつつactivationで内容変化時のみpassへ再暗号化配置する設計、credential helperをnixストア絶対パスで固定する点、pass-git-helperの依存追加(上流v4.3.0で活発に保守、軽量なPythonアプリ)はいずれも妥当です。
ただし1点だけ確実に修正すべき問題があります。last-commit.jsonが誤ってコミットされています。これは.gitignoreに/last-commit.jsonとして登録されたinstall.shのrebuild時一時ファイルであり、恒久的にコミットされるとflake評価が古いコミット情報を参照する温床になります。git rm --cached last-commit.jsonで除外してください。
そのほかactivationスクリプトの復号エラーの扱い(冪等性)についてWARNINGを1件、パーミッションやコメント正確性などのNOTE/TIPを添えています。
定義が一部重複しているのはツールがどこから呼ぶかバラバラなので仕方がない。
There was a problem hiding this comment.
前回レビュー (commit bd6418e, CHANGES_REQUESTED) で唯一のブロッカーだった last-commit.json の誤コミットは、現在のhead a69bae5 のツリーから除去済みで、master・head いずれにも含まれていないことを確認しました。当該スレッドもoutdated扱いになっています。
また home/core/pass.nix / home/core/git.nix に付いていた指摘 (activationの冪等性と復号失敗の握り潰し、再暗号化先のパーミッション、条件判定部の $DRY_RUN_CMD、helperの $@ クォート、コメントの責務記述) はすべてncaqによりresolved済みです。
今回の追加コミットで入った credential."https://forgejo.ncaq.net" の helper / useHttpPath = false / username = ncaq と、pass-git-helper 側マッピング ([forgejo.ncaq.net*] / target / username) は整合しており、ホスト単位でhelperを引かせる構成として妥当です。pass-git-helper 4.3.0 の依存追加も軽量 (closure +99KiB) で、上流は活発に保守されています。
設計面 (sopsを正本に内容変化時のみpassへ再暗号化、credential helperをnixストア絶対パスで固定) も健全で、新規に修正を要する問題は見つかりませんでした。前回のブロッカー解消を確認できたためAPPROVEします。
Forgejoに対する
git pushなどのHTTPS操作でユーザ名とトークンを毎回聞かれずに済むよう、pass-git-helperをcredential helperとして組み込みます。トークン自体はsopsで暗号化したものを正本として
secrets/forgejo.yamlに長期保存し、home-managerのactivationで内容に変化があった時だけpassのエントリへ再暗号化して配置します。
これによりトークンの管理はsopsとgitで完結しつつ、
日常の認証はGUIや
libsecret連携の豊富なpassエコシステムに乗せられます。git側ではForgejoのエンドポイントに対してuseHttpPath = falseとusername = ncaqを指定し、ホスト単位でhelperを引かせます。
helperの問い合わせマッピングは
pass-git-helperの設定ファイルで定義します。