signalridge/dotfiles
signalridge/dotfiles has 46 GitHub stars and 3 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 16:36 UTC. Last push 2026-11-13.
計測したスター増加
- 24時間
- 0
- 7日間
- 履歴を収集中
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
概要
A modern, reproducible development environment for macOS and Linux using chezmoi + Nix
開発ツールREADME.ja.md
オリジナルこのリポジトリについて
chezmoi で管理している個人用ワークステーションの設定です。汎用のスターター
テンプレートではなく、実際に使っている構成です。レイヤーは次のとおりです。
chezmoi:テンプレート、ターゲットファイルのマージ、bootstrap スクリプト- Nix:クロスプラットフォームのユーザー profile、macOS では
nix-darwin - Homebrew と Mac App Store:macOS アプリケーション
aquaでバージョン固定の CLI を、miseでランタイムと残りのツールを管理- Claude Code、Codex CLI、Cursor Agent CLI、Antigravity CLI の設定
- プライベートネットワーク層:EasyTier mesh、sing-box クライアント、JAIST VPN
このリポジトリには、緩い AI 実行モードや個人マシン向けのアプリケーションを含む 個人的なデフォルト値が入っています。別のコンピューターに適用する前に、 テンプレートとデータを確認してください。
サポート範囲と Profile の挙動
| 項目 | 挙動 |
|---|---|
| OS | macOS と Linux。 |
| 新規 Nix bootstrap | 固定インストーラーは aarch64-darwin、aarch64-linux、x86_64-linux に対応。新規の x86_64-darwin インストールは拒否されます。 |
work |
work パッケージセット(Nix、macOS では Homebrew も)を追加し、private = false に設定。仕事用マシンには中継/出口ツールを入れません。 |
private |
not work から導出され、private パッケージセットを選択します。 |
headless |
GUI の dotfiles と GUI スクリプト 09、17、21 をスキップ。パッケージのスイッチではなく、macOS では nix-darwin/Homebrew モジュールは引き続き描画されます。 |
| Mac App Store | installMasApps = true のときだけ MAS のエントリをインストールします。 |
クイックスタート
[!WARNING] このリポジトリを適用すると、shell ファイル、パッケージマネージャー、AI 設定、 (macOS では)システムとアプリケーションの設定が変更されます。先にテンプレートと データを確認してください。
curl -fsSL https://raw.githubusercontent.com/signalridge/dotfiles/main/init.sh -o /tmp/init.sh
sh /tmp/init.sh
curl … | sh は使わないでください。初回実行では profile と身元情報の入力を
求められ、必須データがなく stdin が TTY でない場合、テンプレートは明示的に失敗
します。ref を固定するには、その ref の init.sh をダウンロードして
--ref <ref> を渡します。ローカルクローンでは、目的の checkout で ./init.sh を
実行します。init.sh は --repo と --depth(または
DOTFILES_REPO/DOTFILES_REF/DOTFILES_DEPTH)、
DOTFILES_USE_ENCRYPTION=true|false にも対応します。詳細は sh init.sh --help
を参照してください。bootstrap は HTTPS のみです。
chezmoi を直接呼び出すときに profile を事前に選ぶ例:
chezmoi init --apply \
--promptBool work=false \
--promptBool useEncryption=false \
signalridge
初回データ
すべてのプロンプトと導出値は .chezmoi.toml.tmpl にあります。
| データ | 要求・使用されるタイミング |
|---|---|
work |
必須。TTY でプロンプト表示。private の導出に使用。 |
useEncryption |
DOTFILES_USE_ENCRYPTION がなければ必須。鍵の復元、gopass、~/.ssh/* を制御。 |
hostname |
仕事用以外のマシンでプロンプト表示。仕事用マシンはシステムのホスト名を使用。 |
gitUsername、gitEmail |
未設定ならプロンプト表示。身元のデフォルト値はありません。 |
headless |
TTY でプロンプト表示。それ以外は保存済みデータか OS ベースのフォールバック。 |
installMasApps |
macOS の TTY プロンプト(Mac App Store のインストール)。 |
timezone |
自動検出。できなければプロンプト表示し、最終的に Etc/UTC にフォールバック。 |
keysRepository、gopassRepository |
暗号化が有効なときだけプロンプト表示。 |
easytierExit |
プロンプトなし。EasyTier の出口にする Linux マシンで手動設定します。 |
easytierMember |
プロンプトなし。出口にせず固定 IP で EasyTier に参加する Linux マシンで手動設定します。 |
Bootstrap フロー
chezmoi init 以降の処理はすべて .chezmoiscripts/ の番号付きスクリプトが
担い、実行順は番号どおりです。00 が Nix をインストールし、01 が鍵を復元、
続いて nix-darwin、profile、aqua、gopass、mise、その後に AI 連携、サービス、
ネットワークスタックが続きます。run_onchange_* は描画内容が変わったときに再実行
され、run_after_* は apply のたびに実行され、それぞれ独自のガードや実行間隔を
持ちます。マシンごとの条件はスクリプト自体と .chezmoiignore にあります。
新しいマシンでは read-source-state.pre フック(.bootstrap/pre-source-state.sh)が、
chezmoi がソース状態を読む前に Nix のインストール、鍵の復元、gopass のクローンを
済ませるため、.chezmoiignore とテンプレートは最初からストアを参照でき、apply は
1 回で済みます。準備済みのマシンではこのフックは何もしません。
日常運用
~/Justfile は Justfile.tmpl から描画されます。just --list で chezmoi、Nix、
nix-darwin、Git のレシピを確認できます。ソースディレクトリで
pre-commit run --all-files を実行すると、フォーマット・構文・secret の
チェックが走ります。
各定義の置き場所:
- Nix パッケージ:
.chezmoidata/nix.yamlとnix-config/ - Homebrew と MAS:
.chezmoidata/homebrew.yaml - aqua の CLI:
private_dot_config/aquaproj-aqua/(仕事用マシンではaqua-private.yamlをスキップ) - mise のランタイムとツール:
private_dot_config/mise/config.toml.tmpl - 固定したインストーラーとチェックサム:
.chezmoidata/versions.yaml - shell の alias と関数:
dot_custom/。wt-new/wt-go/wt-ls/wt-rmは通常の repository では<repo>/.worktrees/に Git worktree を作りますが、この chezmoi source 内では 使わないでください。constitution(CLAUDE.md)が worktree と branch switching を禁止しています。
ネットワークスタック
- EasyTier:すべての Mac がクライアントとしてプライベート mesh に参加します。
Linux マシンはローカルデータで
easytierExit(出口)またはeasytierMember(固定 IP、出口なし)を設定したときだけ参加します(.chezmoidata/easytier.yaml、スクリプト23)。 - sing-box:すべてのマシンにクライアントがあり(Mac では TUN、headless Linux
ではユーザーサービス)、
Egressセレクターで出口を選びます (.chezmoidata/sing-box.yaml、スクリプト24)。 - JAIST VPN:パッチ版 sing-box の OpenConnect エンドポイントと
openconnect-auto/openconnect-login(スクリプト25、仕事用以外のマシンのみ)。 - bastion:手動でデプロイした中継兼 STUN サーバー。
bastion-importがその sing-box outbound を gopass に保存します。
AI Harness
Claude Code、Codex CLI、Cursor Agent CLI、Antigravity CLI
は dot_* と private_dot_config/ で設定します。Claude と Codex は
.chezmoitemplates/agent-instructions.md から描画される共通のグローバル指示を
使います。Claude Code と Codex はネイティブ OAuth を使い、起動時のモデルは
.chezmoidata/claude.yaml と dot_codex/modify_private_config.toml.tmpl で
設定します。MCP サーバーの一覧は
.chezmoidata/mcp.yaml にあります。エージェントの状態表示は Herdr が担います。
Skill は ~/.harnesses/skills/<category>/<skill>/ に置かれ、ソースはバージョン
固定のアーカイブ(.chezmoiexternal.toml.tmpl)と dot_harnesses/ です。
グローバルには何も有効化されません。プロジェクトで skill-activate を実行すると、
選んだ skill が ./.claude/skills、./.agents/skills(Codex・pi・Kimi・mare 共通)、./.cursor/skills に
シンボリックリンクされます
(--list、--active、--category <name>、--sync、--clear)。
AI 実行ポリシー
管理しているデフォルト値は意図的に緩く設定しているため、再利用する前に確認して ください。
- Claude:
bypassPermissions、Bash の deny ルールと Git 書き換え hook を併用 - Codex:
approval_policy = "never"とsandbox_mode = "danger-full-access" - Cursor:
approvalMode = "unrestricted" - Antigravity:
toolPermission = "always-proceed"、ターミナルサンドボックスなし
Claude の hook は変更したファイルのフォーマットも行います。Git 書き換え hook
(dot_claude/hooks/executable_block-git-rewrites.sh)は一部の不可逆な操作を
ブロックし、復旧可能な危険操作の前には確認を求めますが、すべての Git 変更を
ブロックするわけではありません。
セキュリティと Secrets
- chezmoi は
ageで暗号化します(.chezmoitemplates/shell/age_command_wrapper.sh)。 鍵は~/.ssh/mainと~/.ssh/main.pubです。 - API キーとサービスの認証情報は gopass に、鍵ファイルのバックアップは
keys-manageにあります。gopass の構成はprivate_dot_config/gopass/config.tmplに記載。 - GitHub へのアクセスは HTTPS +
ghcredential helper で、insteadOfによる 書き換えは使いません。 - 脆弱性の報告と注意すべき領域:SECURITY.md。
ドキュメント
CI(.github/workflows/)は pre-commit、Nix flake のチェック、セキュリティスキャンを
実行し、日次のスケジューラーが依存関係更新の PR を作成します。
謝辞
- chezmoi と nix-darwin:設定のオーケストレーション
- Nix、flakey-profile、 Homebrew、aqua、 mise:パッケージとツールの管理
- Claude Code、Codex、 Cursor、Herdr: 管理対象の AI/エージェントツール
- EasyTier と sing-box:ネットワーク層
.chezmoiexternal.toml.tmplに列挙した外部 skill リポジトリ。それぞれの上流の ライセンスに従います。- Dracula Theme:ターミナルと fzf の配色
ライセンス
このリポジトリにはルートの LICENSE ファイルがありません。再配布可能なものとして
扱う前に、明示的なライセンスを追加してください。