Skip to content
ari-showPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

119 Commits

Folders and files

Repository files navigation

dotfiles

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 修復スクリプト

セットアップ方法

0) リポジトリのクローン

SSH 鍵を GitHub に登録済みの場合:

git clone git@github.com:ShotaArima/dotfiles.git ~/dotfiles
cd ~/dotfiles

SSH 鍵を未設定の場合は HTTPS でも clone できます。

git clone https://github.com/ShotaArima/dotfiles.git ~/dotfiles
cd ~/dotfiles

1) Nix の確認

以下のコマンドが実行できれば、Nix はすでに利用可能です。

command -v nix
nix --version

表示される場合は、2) Flakes の有効化 に進んでください。


1-1) Nix のインストール

  • このShell Scriptを実行し、Nixをインストールしてください
bash nix-install.sh
  • インストール後、新しいターミナルを開き直してください。
nix --version

補足: nix: command not found になる場合は、ターミナルを開き直すか、shell の初期化ファイルで PATH を上書きしていないか確認してください。


1-2) macOS アップグレード後に Nix が消えた場合

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 を実行してください。


2) Flakes の有効化

このリポジトリでは 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

3) dotfiles 用ツールを Nix profile に追加する

このリポジトリでは、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 list

packages.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#omnigent

4) セットアップの実行

dotfiles-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 nix

make setup は ghtkn の設定もリンクします。

~/.config/ghtkn/ghtkn.yaml -> ~/dotfiles/.config/ghtkn/ghtkn.yaml

ghtkn の設定だけを適用する場合は、次を実行します。

make ghtkn

ghtkn の認証

ghtkn v0.4.0 以降は、device flow を開始するのは ghtkn auth だけです。ghtkn get / ghtkn exec / Git credential helper は device flow を自動では開始しないため、先に ghtkn auth で認証してから使います。

ghtkn auth ari-show/none

ghtkn.yaml の clipboard.enable: true により、ghtkn auth が表示する one-time code は自動でクリップボードにコピーされます。表示されたコードを、自分で ghtkn auth を実行したときだけ GitHub の画面に貼り付けてください(身に覚えのないコードは入力しないこと)。

Codex sandbox での利用

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

5) GitHub 上の flake から直接 profile に追加する場合

ローカルの ~/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 を使わず従来通り実行する

補足: dotfiles-tools の取得方法について

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 にまとめています。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages