Skip to content

feat(nix): install-nix.zsh + README 整備で一発セットアップを実現 (S12 / KISSA-32)#19

Merged
gotomts merged 3 commits into
feature/nix-migration-epicfrom
feature/nix-migration-s12-readme
May 13, 2026
Merged

feat(nix): install-nix.zsh + README 整備で一発セットアップを実現 (S12 / KISSA-32)#19
gotomts merged 3 commits into
feature/nix-migration-epicfrom
feature/nix-migration-s12-readme

Conversation

@gotomts
Copy link
Copy Markdown
Owner

@gotomts gotomts commented May 13, 2026

Summary

新規 PC で「README を上から実行するだけで Nix 一元化された環境が再現できる」状態を作る S12 の実装。

KISSA-32 のスコープ拡張で計画されていた nix/scripts/install-nix.zsh(Determinate Nix インストーラの薄ラッパー)を追加し、ルート README をその新スクリプトに沿った 6 ステップに全面書き換え。詳細・運用・トラブルシュートは nix/README.md に役割分離。

変更内容

1. nix/scripts/install-nix.zsh (新規)

Determinate Nix インストーラの薄ラッパー。

  • 既存 Nix を /nix/var/nix/daemon-socket/socketcommand -v nix で検出して skip する idempotent 動作
  • Full Disk Access の事前チェック (sudo touch /etc/fstab)。macOS 15 では FDA なしでは root でも /etc 書き込みが TCC で拒否されるため、インストール途中で詰むのを防ぐ
  • Determinate flavor + 非対話モード (--determinate --no-confirm)
  • setup/util.zsh の message 関数を共用 (Phase B で setup/ 削除時にローカル定義へ置換予定)
  • set -eu + if ! cmd; then パターンで早期 exit

2. ルート README.md (全面書き換え)

setup.zsh ベースの 3 ステップ手順から、Nix 一元化版の 6 ステップ手順に書き換え。

  • FDA 付与 → CLT → clone → install-nix.zsh → flake check & build → switch
  • homebrew.onActivation.cleanup = \"zap\" によるパッケージ削除の警告を明示
  • 完了確認チェックリスト (zsh / starship / yazi / claude / rtk / node / dart / brew / sudo / Touch ID)
  • setup/Brewfile を「Phase B で削除予定のレガシー資産」と明記

3. nix/README.md (役割整理)

ルート README に新規セットアップを集約したのを受け、詳細・運用・トラブルシュートに役割を絞った。

  • 初回セットアップ手順セクションを削除しルート README に委譲
  • ディレクトリ構造に modules/overlays/, scripts/install-nix.zsh, scripts/tests/ を反映
  • 別 PC 展開セクションを 2 シナリオ (m5mbp 再現 / 新ホスト追加) に再構成
  • トラブルシュート拡充: FDA 未付与、Determinate 競合 (S14 で解消済)、flake.lock 破損、Homebrew zap、初回ブートストラップ
  • 「現在の状態 (S2 完了時点)」を「Phase A の進捗」に置換し、S1〜S14 と Linear ID (KISSA-21〜KISSA-46) を反映。S10 (KISSA-30) のみ棚卸 triage 待ちで未完了

KISSA-32 受入条件との対応

  • nix/scripts/install-nix.zsh が存在し、zsh -n で構文 OK
  • FDA 未付与時に明確なエラーメッセージで停止する
  • 既に Nix がインストールされている環境では skip 動作
  • Determinate flavor + 非対話モードで呼ぶ (--determinate --no-confirm)
  • README に「Full Disk Access を Terminal.app に付与する手順」が明記されている
  • README に別 PC 手順が記載されている (FDA → CLT → install-nix.zsh → darwin-rebuild の順)
  • darwin-rebuild build --flake .#m5mbp がエラーなしで完了 → 親 PR feat(nix): 環境構築 Nix 一元化 (Phase A) を統合 (KISSA-20) #18 のローカル検証時に確認
  • darwin-rebuild switch 適用後、shell と CLI ツールが期待通り動作 → 親 PR feat(nix): 環境構築 Nix 一元化 (Phase A) を統合 (KISSA-20) #18 のローカル検証時に確認

検証系の 2 項目は親 PR #18 のローカル検証フローで担保する設計。

スコープから外したもの

KISSA-32 spec の「baseline diff (nvd diff) を PR コメントに記録」「docs/inventory/<host>-2026-05-02.md への追記」は S10 (defaults.nix 翻訳) と密接に絡むため、S10 着手時に併せて実施する想定。本 PR には含めない。

Test plan

Refs: KISSA-32, KISSA-20

gotomts added 3 commits May 13, 2026 23:18
Determinate Nix インストーラの薄ラッパー。新規 PC のブートストラップを
README 手順 1 本に圧縮する目的で追加。

- 既存 Nix を検出して skip する idempotent 動作
- Full Disk Access の事前チェック (`sudo touch /etc/fstab`)。macOS 15
  では FDA なしでは root でも /etc 書き込みが TCC で拒否されるため、
  インストール途中で詰むのを防ぐ
- Determinate flavor + 非対話モードで起動 (`--determinate --no-confirm`)
- setup/util.zsh の message 関数を共用 (Phase B で setup/ 削除時に
  ローカル定義に置換予定)

zsh -n で syntax 確認済み。実機動作確認は PR #18 のローカル検証時に行う。
旧 setup.zsh ベースの 3 ステップ手順から、Determinate Nix + nix-darwin
+ home-manager を前提とした 6 ステップ手順に全面書き換え。

- 「READMEを見て進めるだけでセットアップ完了」を実現するため、FDA 付与
  から darwin-rebuild switch までを 1 本のフローに整理
- 詳細 (ロールバック、別 PC 展開、トラブルシュート) は nix/README.md に
  逃がし、ルートはコンパクトに保つ
- homebrew.onActivation.cleanup = "zap" によるパッケージ削除の警告を
  明示
- 完了確認チェックリストを追加 (zsh / starship / yazi / claude / rtk /
  node / dart / brew / sudo / Touch ID の確認項目)
- setup/ と Brewfile を「Phase B で削除予定のレガシー資産」として明記
ルート README に新規セットアップ手順を集約したのを受け、nix/README は
詳細・運用・トラブルシュートに役割を絞った。

- 初回セットアップ手順セクションを削除しルート README に委譲
- ディレクトリ構造に `modules/overlays/`, `scripts/install-nix.zsh`,
  `scripts/tests/inventory.bats` を追記して実態と一致させる
- 別 PC 展開セクションを 2 シナリオ (m5mbp 再現 / 新ホスト追加) に再構成
- トラブルシュートに FDA 未付与エラー、Determinate 競合 (S14 で解消済)、
  Homebrew zap、初回ブートストラップ等を追加
- 「現在の状態 (S2 完了時点)」を「Phase A の進捗」に書き換え、S1〜S14
  と Linear issue ID (KISSA-21〜KISSA-46) を反映。S10 (KISSA-30) のみ
  棚卸 triage 待ちで未完了として残す
@gotomts gotomts merged commit b31bee8 into feature/nix-migration-epic May 13, 2026
1 check passed
@gotomts gotomts deleted the feature/nix-migration-s12-readme branch May 13, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant