CLI管理

miseで管理する。

  • Homebrew: Windows未対応
  • ubi: アップデートが大変

暗号化

実現したいこと

  • chezmoi initをインタラクティブに実行したときはパスフレーズを入力する
  • CDEのdotfilesインストール時はCDEにパスフレーズが設定されていれば参照する
  • chezmoi applyを実行するときOSのシークレットストアにパスフレーズが保存されていれば入力する必要がない(Windows Helloなどの認証は必要)

chezmoiが暗号化したファイルを管理できると秘密情報を公開リポジトリに置くことができる。公開リポジトリでないとchezmoi init時に追加のgit認証が必要になり不便だ。仮に非公開リポジトリであっても平文で機密情報を置くのはよくないと思う。

実現方法

1. パスフレーズを作成して保存する

 mise use -g ubi:open-source-cooperative/keyring-rs
 keyring-rs -s chezmoi -t age-passphrase set --password
Password:

将来、手入力が必要になるので入力しやすく強固なものがよい。パスフレーズはopen-source-cooperative/keyring-rsでOSのシークレットストアに保存しておき、再入力を不要にする。作成したパスフレーズは新規マシンセットアップ時に入力が必要になるので1Passwordに保存しておく。

2. chezmoi専用のage秘密鍵を作る

 chezmoi age-keygen | chezmoi age encrypt --passphrase --output=key.txt.age
Enter passphrase: passphrase

1.で作成したパスフレーズを入力する。

❯ open key.txt.age
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBDUGJ6Yk4wTzhXVEgvREQw
UXdjQjZBIDE4CmpWT0pKOGp0ZGFjbVozWTEyUUlRYlFnZU5tcFJLcW5qV0tEcEFo
ZUpDRzAKLS0tIHcxdHJVZjM5NEUrUEwxN3hMRlpISkZxZldUNjVPNG5iMzRJSE03
UVFwREUKr6/FJey6C1NsT6sTZNtQJLYGjPsx72wQVPxZzy1YeBypg768MqczsCMq
WkPhr3pmWsVovXh4S4jMXs7Vx6l3IrOpzlWwg0VRyVLbGrboTkVB4eZK8K28ATr7
bG2vZIQjehMWEZeNqptDhZOYhk1O8ywreYWBbP7wJkCmDyWpyeZkDL9y5RnMFbu3
OiBuoDmq1lryqsNCh7zns1/3zQA/CCgZsPkyh2jq2dGg23DC+Mc0arRzHnzvJ9Nt
aQn01ZUtj8N7Ln4qjYAV03/XdpLxd+5P0UkzgFSxmdTOV+M=
-----END AGE ENCRYPTED FILE-----

パスフレーズで暗号化された秘密鍵が作成される。これはgitにcommitしても安全だ。.chezmoiignorekey.txt.ageを追記してhomeディレクトリに作成されないようにする。

 chezmoi age decrypt --passphrase key.txt.age
# created: 2025-09-06T19:38:30+09:00
# public key: age1zy08l6jjdz4flluglhachu7ca877d6nmet4kgu930rdl0kzg99nqp636mw
AGE-SECRET-KEY-1MRHQKT37ZWF779EFKKY6QDM40R3JCJ58TQ5M9P429Q9SKFX2CFKSXYXM8N

decryptして公開鍵を確認する。秘密鍵とともに1Passwordに保存しておくとよい。

参考