macOS / Linux 向けの個人設定ファイル(dotfiles)を管理するリポジトリ。 Nix + make + perl でセットアップを自動化している。
dotfiles/
├── bootstrap/ # セットアップ用の perl スクリプト
├── config/ # OS ごとの設定ファイル(mac / linux)
├── .config/ # ~/.config 配下にリンクする設定(wezterm / ghostty / herdr / nix)
├── docs/ # 各種ドキュメント(docs/README.md が入り口)
├── nix/ # flake.nix(dotfiles-tools の定義)
├── makefile # セットアップ用ターゲット(make help で一覧)
├── nix-install.sh # Nix のインストールスクリプト
└── nix-repair.sh # macOS アップグレード後の /nix 修復スクリプト
SSH 鍵を GitHub に登録済みの場合:
git clone git@github.com:ShotaArima/dotfiles.git ~/dotfiles
cd ~/dotfilesSSH 鍵を未設定の場合は HTTPS でも clone できます。
git clone https://github.com/ShotaArima/dotfiles.git ~/dotfiles
cd ~/dotfiles以下のコマンドが実行できれば、Nix はすでに利用可能です。
command -v nix
nix --version表示される場合は、2) Flakes の有効化 に進んでください。
- このShell Scriptを実行し、Nixをインストールしてください
bash nix-install.sh- インストール後、新しいターミナルを開き直してください。
nix --version補足:
nix: command not foundになる場合は、ターミナルを開き直すか、shell の初期化ファイルで PATH を上書きしていないか確認してください。
macOS のメジャーアップグレードで /etc/synthetic.conf / /etc/fstab / /etc/zshrc が初期化されると、
/nix が消えて nix: command not found になります。このとき Nix Store ボリューム自体(store の中身)は残っていて、
/Volumes/Nix Store にマウントされています。
以下で消えた設定を復元し、/nix にマウントし直します(sudo が必要)。
cd ~/dotfiles
make nix-repair復元するもの:
/etc/synthetic.confのnix行(/nixディレクトリ)/etc/fstabの/nixマウント行/Library/LaunchDaemons/org.nixos.darwin-store.plist(起動時にボリュームを復号して/nixにマウント)/etc/zshrc//etc/bashrcの Nix 初期化フック
/nix を再起動なしで作れなかった場合はその旨を表示して終了するので、再起動後にもう一度 make nix-repair を実行してください。
このリポジトリでは flake.nix を使うため、Nix の experimental features を有効にします。
- ユーザー単位で設定する場合:
mkdir -p /etc/nix
${EDITOR:-vi} /etc/nix/nix.conf- 以下を追記してください。
experimental-features = nix-command flakes- 確認します。
nix flake --help
nix develop --help補足: ユーザー単位で設定したい場合は
~/.config/nixに同じ設定を書きます。
~/.config/nix
${EDITOR:-vi} ~/.config/nix/nix.confこのリポジトリでは、make / perl / uv / gh / tmux / ghtkn / Omnigent などのセットアップや日常作業に必要な CLI ツールを dotfiles-tools として定義しています。
macOS で brew install <cli> していたものは、原則として dotfiles-tools に追加して Nix 側で管理します(GUI アプリは Homebrew cask のまま)。
dotfiles-tools を Nix profile に追加すると、通常の shell からこれらのコマンドを使えるようになります。
cd ~/dotfiles
git pull既存の dotfiles-tools が profile に入っている場合、同じものを何度も nix profile add すると重複することがあります。
そのため、先に既存の dotfiles-tools を削除してから追加します。
nix profile listpackages.x86_64-linux.dotfiles-tools や dotfiles-tools が表示されている場合は、Name を指定して削除します。
例:
nix profile remove nix-1複数ある場合は、まとめて削除します。
nix profile remove nix-1 nix-2 nix-3その後、dotfiles-tools を追加します。
nix profile add ./nix#dotfiles-tools追加後、通常の shell で以下が使えることを確認します。
hash -r
uv --version
make --version
perl --version
gh --version
tmux -V
ghtkn --version
omnigent --version
omni --version
modal --versionこれで、毎回 nix develop に入らなくても、通常の shell から uv / make / perl / gh / tmux / ghtkn / omnigent が使えるようになります。
Omnigent は Python 3.12 上の omnigent[databricks,modal] としてバージョンと依存を固定しています。omnigent と短縮名の omni に加え、Modal の認証などに使う modal コマンドも profile に追加されます。Omnigent の更新は omni upgrade ではなく、nix/omnigent/pyproject.toml のバージョンを変更して lock file を更新した後、dotfiles-tools を profile に入れ直してください。
Omnigent とその実行要件(Node.js 22 / tmux、Linux では bubblewrap)だけを追加する場合は、個別 package も利用できます。
nix profile add ./nix#omnigentdotfiles-tools を Nix profile に追加した後は、通常の shell で make setup を実行できます。
cd ~/dotfiles
make setup
source ~/.zprofile # PATH などを現在の shell に反映(macOS)make は子プロセスとして実行されるため、make setup の中で source ~/.zprofile を実行しても、実行元の shell の環境には反映されません。macOS で .zprofile を更新した場合は、make setup の後に source ~/.zprofile を実行してください。新しいターミナルを開いても反映されます。
make setup は Nix のユーザー設定もリンクします。
~/.config/nix/nix.conf -> ~/dotfiles/.config/nix/nix.conf
Nix の設定だけを適用する場合は、次を実行します。
make nixmake setup は ghtkn の設定もリンクします。
~/.config/ghtkn/ghtkn.yaml -> ~/dotfiles/.config/ghtkn/ghtkn.yaml
ghtkn の設定だけを適用する場合は、次を実行します。
make ghtknghtkn v0.4.0 以降は、device flow を開始するのは ghtkn auth だけです。ghtkn get / ghtkn exec / Git credential helper は device flow を自動では開始しないため、先に ghtkn auth で認証してから使います。
ghtkn auth ari-show/noneghtkn.yaml の clipboard.enable: true により、ghtkn auth が表示する one-time code は自動でクリップボードにコピーされます。表示されたコードを、自分で ghtkn auth を実行したときだけ GitHub の画面に貼り付けてください(身に覚えのないコードは入力しないこと)。
ghtkn.yaml の backend.type: agent により、トークンは ghtkn agent(Unix socket ~/.cache/ghtkn/agent.sock)が保持します。Codex の sandbox は既定でこの socket への接続を拒否するため、~/.codex/config.toml に次の permission profile を追加します(~/.codex は dotfiles 管理外なので手で追記します。~ は展開されないので絶対パスで書くこと)。
default_permissions = "ghtkn"
[features]
network_proxy = true
[permissions.ghtkn]
extends = ":workspace"
description = "Workspace profile plus the ghtkn agent socket."
[permissions.ghtkn.network]
enabled = true
[permissions.ghtkn.network.unix_sockets]
"/Users/<you>/.cache/ghtkn/agent.sock" = "allow"
# ghtkn 自体には不要だが、トークンを使う gh / git には必要
[permissions.ghtkn.network.domains]
"github.com" = "allow"
"api.github.com" = "allow"agent は sandbox の外で動かすので、Codex を起動する前に自分の shell で起動・unlock しておきます(unlock はパスフレーズを求めるため、コーディングエージェント経由では実行しないこと)。
ghtkn agent start
ghtkn agent unlock設定が効いているかは、モデルを呼ばずに sandbox 内でコマンドを実行する codex sandbox で確認できます。
codex sandbox -- ghtkn agent statusローカルの ~/dotfiles/nix/flake.nix ではなく、GitHub 上の flake を直接使う場合は以下を実行します。
nix profile add "github:ShotaArima/dotfiles?dir=nix#dotfiles-tools" --no-write-lock-file --refreshただし、すでに dotfiles-tools が profile に入っている場合は、先に削除してください。
nix profile list
nix profile remove <Name>例:
nix profile remove nix-1
nix profile add "github:ShotaArima/dotfiles?dir=nix#dotfiles-tools" --no-write-lock-file --refresh補足:
nix profile addは「既存の package を自動で置き換える」コマンドではありません。 同じdotfiles-toolsを何度も追加すると profile に重複することがあるため、更新したい場合は既存の entry を削除してから追加してください。
すでに profile に入っている dotfiles-tools を新しい lock で入れ直すだけなら、削除と追加を繰り返す代わりに nix profile upgrade <Name> が使えます(ローカル flake の場合は make nix-update / make nix-sync、詳細は docs/mac.md の「3. Nix 管理のツールを更新する」)。
nix profile upgrade nix --refresh| 方法 | 用途 |
|---|---|
nix develop ./nix |
一時的に dotfiles 用の開発環境へ入る |
nix develop ./nix -c make setup |
開発シェルに入らずセットアップだけ実行する |
nix profile install ...#dotfiles-tools |
make や perl を普段の profile に入れて使う |
ホストの make / perl を使う |
Nix を使わず従来通り実行する |
nix profile add "github:ShotaArima/dotfiles?dir=nix#dotfiles-tools" は、GitHub Actions でビルド済みの成果物を直接取得するコマンドではありません。
このコマンドは GitHub 上の nix/flake.nix を取得し、そこに定義された dotfiles-tools を手元の Nix で評価して profile に追加します。
dotfiles-tools に含まれる uv / gnumake / perl などは、利用可能であれば Nix の binary cache から取得されます。取得できない場合はローカルでビルドされます。
GitHub Actions でビルドした成果物を配布したい場合は、別途 binary cache や artifact を用意し、nix copy などで closure を取り込む構成にします。
各ツール・OS ごとの詳細な手順は docs/README.md にまとめています。
- macOS セットアップ — クローンから
make setup、複数端末間での更新手順 - Ghostty — インストールと設定リンク
- WezTerm — 設定の構成とリンク手順
- herdr エージェントオーケストレーション — AI エージェントの自動運用