Skip to content
mananyukiPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

dotfiles

Apple Silicon Mac を nix-darwin と Home Manager で宣言的に管理するリポジトリです。home と work の 2 プロファイルがあり、差分は必要最小限にしています。

Bootstrap

macOS 14 以降の Apple Silicon Mac で Command Line Tools を用意し、このリポジトリを次の固定パスへ clone します。bootstrap script はこの配置パスを確認します。

git clone https://github.com/mananyuki/dotfiles.git ~/go/src/github.com/mananyuki/dotfiles
cd ~/go/src/github.com/mananyuki/dotfiles

bootstrap script は、未導入の場合に限って Nix と Homebrew の公式 installer を実行します。その後、lock 済みの nix-darwin で build が成功した場合だけ初回 switch へ進みます。home は個人 Mac、work は仕事用 Mac です。

./bootstrap.sh work

Homebrew 本体は明示的な bootstrap prerequisite であり、Nix の管理対象ではありません。導入後の tap、cask、Mac App Store の desired inventory は nix-darwin が管理します。

既存の Homebrew 環境へ適用する場合、初回 switch は nix/modules/darwin/homebrew.nix にない tap、formula、cask を uninstall します。実行前に同ファイルの inventory を確認してください。Mac App Store アプリは追加を宣言できますが、Homebrew Bundle の制約により宣言から削除したアプリは自動では uninstall されません。

Daily workflow

プロファイルの指定を省略して誤った Mac に適用しないよう、PROFILE は必須です。

task eval                 # 全プロファイルを評価
task check                # Nix の形式確認と全プロファイルのビルド
task build PROFILE=work   # 1 プロファイルをビルド
task diff PROFILE=work    # 現在の system closure と比較
task switch PROFILE=work  # build 後に sudo で適用

入力の更新は適用と分離されています。

task update               # flake.lock を更新し、全プロファイルを検証
git diff -- flake.lock
task switch PROFILE=work  # 内容を確認してから適用

task update は Homebrew 本体、tap、cask を更新しません。それらを更新するときは、desired inventory を変えずに明示的な maintenance として実行します。

/opt/homebrew/bin/brew update
/opt/homebrew/bin/brew upgrade --cask

Herdr はほかの coding agent CLI と同じく llm-agents input から導入します。agent 類だけを更新する場合は nix flake update llm-agents を実行し、その後 task check で全プロファイルを検証します。

Ghostty は起動時に Herdr へ接続する単一のターミナル面として使い、tab、pane、workspace、agent 通知は Herdr が担当します。Herdr 自身のバージョン確認は無効化し、更新は Nix に集約しています。

直前の世代へ戻す場合は task rollback を使います。古い世代を整理する task gc は削除対象を先に表示し、少なくとも直近 5 件の system generation を残して到達不能な Nix store path を削除します。

Source-of-truth boundary

Nix が管理するのは、パッケージの在庫、macOS 設定、シェル、dotfile の望ましい状態です。Homebrew 本体の導入、パスワードやトークン、Git identity (~/.config/git/local)、アプリのデータ、プロジェクト固有の toolchain は意図的に対象外です。

管理する dotfile は Nix store 経由の読み取り専用リンクです。Claude Code の ~/.claude/settings.json はリポジトリ外の通常ファイルとして保持し、Nix では生成・マージしません。組織の設定は Team 側で配布し、モデルや表示の好み、plugin、権限、autoMode.environment はローカルで設定します。

Claude Code 本体、共通指示、skills、Herdr hook と status line のスクリプトは引き続き Nix で管理します。新しいマシンでは、ローカル設定の手順 に従って hook と status line を登録してください。

Codex は設定レイヤーを分離しています。共有する既定値は Nix が /etc/codex/config.toml に配置し、project trust、workspace path、Desktop app や plugin が書き込む状態は、追跡しない ~/.codex/config.toml に残します。Codex の仕様上は user layer が system layer より優先されるため、アプリで明示的に変更した値は共有既定値を上書きします。

設計の詳細は Nix implementation guide、flake architecture、configuration pipeline を参照してください。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages