-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
目的
現在の設定はprivate PC用の設定になっているが、work PC用など環境(profile)別に異なる設定を管理できるようにしたい。特に以下の2つはprofileごとに管理する必要がある:
- Brewfile: 会社PCではインストールしないアプリ(プライベート用SNS、ゲームなど)がある
- mise config.toml: プロジェクトによって必要な言語・ツールのバージョンが異なる
前提
- 現在の設定 = private PC用の設定
- 新たにwork PC用の設定を追加する
- 共通部分と差分を適切に管理する
chezmoiのprofile機能について
chezmoiでは、.chezmoi.toml.tmplでprofileを定義し、以下のような管理が可能:
- テンプレート変数でのprofile判定:
{{ if eq .profile "work" }} - ファイル名でのprofile指定:
dot_Brewfile.tmplで条件分岐 .chezmoiignoreでのprofile別除外: 特定profileでは適用しないファイルを指定
実装の段取り
Phase 1: Profile設定の追加
1.1 .chezmoi.toml.tmplの拡張
現在の設定にprofile設定を追加:
{{- $profile := "private" -}}
{{- if eq .chezmoi.hostname "work-macbook" -}}
{{- $profile = "work" -}}
{{- else if stdinIsATTY -}}
{{- $profile = promptString "profile (private/work)" $profile -}}
{{- end -}}
[data]
profile = {{ $profile | quote }}
[edit]
command = "code"
args = ["--wait"]判定ロジック:
- ホスト名が
work-macbookの場合は自動的にworkプロファイル - それ以外でインタラクティブな環境の場合はプロンプトで選択
- デフォルトは
private
タスク
-
.chezmoi.toml.tmplにprofile設定を追加 - ホスト名ベースの自動判定ロジックを実装
- プロンプトによる手動選択機能を追加
Phase 2: Brewfileのprofile別管理
2.1 ファイル構成の設計
以下の3つのファイルで管理:
home/
├── dot_Brewfile.tmpl # メインファイル(テンプレート)
├── dot_Brewfile_common.tmpl # 共通設定
├── dot_Brewfile_private.tmpl # private専用
└── dot_Brewfile_work.tmpl # work専用
2.2 dot_Brewfile.tmplの実装
{{- if eq .profile "private" -}}
{{ include "dot_Brewfile_common.tmpl" }}
{{ include "dot_Brewfile_private.tmpl" }}
{{- else if eq .profile "work" -}}
{{ include "dot_Brewfile_common.tmpl" }}
{{ include "dot_Brewfile_work.tmpl" }}
{{- end -}}2.3 既存Brewfileの分類
現在のdot_Brewfileを分析して以下に分類:
共通(両環境で必要):
- 開発ツール: Docker, Git関連, VSCode, mise
- 基本ユーティリティ: tree, 1Password
- ブラウザ: Chrome, Brave, Firefox
Private専用:
- SNS/コミュニケーション: Discord, LINE
- エンターテイメント: Spotify, Kindle
- プライベートなアプリ: Notion(個人版), Obsidian
Work専用:
- 会社固有のツール
- エンタープライズ版アプリ
タスク
- 現在の
dot_Brewfileをcommon/private/workに分類 -
dot_Brewfile_common.tmplを作成(共通設定) -
dot_Brewfile_private.tmplを作成(現在の設定から抽出) -
dot_Brewfile_work.tmplを作成(初期は空または最小構成) -
dot_Brewfile.tmplでincludeする実装 - 既存の
dot_Brewfileを削除またはリネーム
Phase 3: mise config.tomlのprofile別管理
3.1 ファイル構成の設計
home/dot_config/mise/
├── config.toml.tmpl # メインファイル(テンプレート)
├── config_common.toml.tmpl # 共通設定
├── config_private.toml.tmpl # private専用
└── config_work.toml.tmpl # work専用
3.2 設定の分類方針
共通:
- chezmoi, gh, docker-compose(どの環境でも必要)
- Go, Node.js, Python(バージョンはprofileで変える可能性あり)
Private専用:
- 個人プロジェクト用の特定バージョン
- 趣味の開発用ツール
Work専用:
- 会社プロジェクト固有のバージョン指定
- 業務用ツール
3.3 実装方法(案)
# config.toml.tmpl
{{- if eq .profile "private" -}}
{{ include "config_common.toml.tmpl" }}
{{ include "config_private.toml.tmpl" }}
{{- else if eq .profile "work" -}}
{{ include "config_common.toml.tmpl" }}
{{ include "config_work.toml.tmpl" }}
{{- end -}}タスク
- 現在の
config.tomlをcommon/private/workに分類 -
config_common.toml.tmplを作成 -
config_private.toml.tmplを作成 -
config_work.tmplを作成 -
config.toml.tmplでincludeする実装 - 既存の
config.tomlを削除またはリネーム
Phase 4: テストとドキュメント
4.1 テスト計画
- private profileでの
chezmoi initテスト - work profileでの
chezmoi initテスト - 両profileでの
chezmoi applyテスト - Brewfileが正しく生成されることを確認
- mise設定が正しく生成されることを確認
- profile切り替えテスト
4.2 ドキュメント更新
README.mdに以下のセクションを追加:
- Profile機能の説明
- 初期セットアップ時のprofile選択方法
- Profile別の設定管理方法
- Profile切り替え手順
- Brewfile/mise設定の追加・更新フロー
4.3 GitHub Actions対応
既存のE2E Setup Testをprofile対応させる:
- private profileでのテスト
- work profileでのテスト(オプション)
実装順序の推奨
- Phase 1 → Phase 2 → Phase 3 → Phase 4の順で実施
- 各Phaseごとにブランチを作成してPR
- 最初はprivate profileのみで動作確認
- work profileは段階的に追加
参考リンク
注意事項
- 既存の設定はprivate profileとして保存
- work profileは最小構成から始めて段階的に追加
- 共通部分は重複を避けて
_commonファイルで管理 - セキュリティ: work固有の情報は絶対に公開リポジトリにコミットしない
関連ファイル
home/.chezmoi.toml.tmplhome/dot_Brewfile→ 3つのファイルに分割home/dot_config/mise/config.toml→ 3つのファイルに分割README.md
Metadata
Metadata
Assignees
Labels
No labels