Skip to content

reisuta/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

クロスプラットフォーム (macOS / Arch Linux / Ubuntu / WSL) で動く設定ファイル群。 chezmoi を使って 1 コマンドで環境構築できる。


目次


クイックスタート

OS によって最適な入り方が違うので以下から選ぶ。どちらでも最終的にやることは同じ (chezmoi が全パッケージインストール + 設定配置 + シェル切替まで実行)。

macOS / Ubuntu / WSL — chezmoi ワンライナー

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply reisuta

curl 1コマンドで chezmoi 取得 → リポ clone → apply まで完結。justgit も事前に要らない。

Arch Linux — just install

pacman から just / git / chezmoi が直接取れるので、こちらの方が手数少なめ:

sudo pacman -S --needed just git chezmoi
git clone https://github.com/reisuta/dotfiles ~/dotfiles && cd ~/dotfiles
just install

just install はローカル clone を chezmoi のソースとして init --apply する。chezmoi を pacman で入れ忘れても recipe 内で自動取得するので最低 pacman -S just git だけでも OK。

詳細は chezmoi init --apply の項を参照。


対応 OS

OS パッケージマネージャ メインターミナル
macOS (Apple Silicon / Intel) Homebrew WezTerm
Arch Linux (native) pacman kitty
Arch Linux (WSL) pacman (Windows 側 WezTerm)
Ubuntu / Debian (native) apt + curl kitty
Ubuntu / Debian (WSL) apt + curl (Windows 側 WezTerm)

コマンドリファレンス

凡例

  • 🟢 副作用なし: 何も変更しない (情報表示のみ)
  • 🟡 限定的な副作用: 一部のファイルや設定を更新する
  • 🔴 大きな副作用: パッケージインストール / シェル変更 / sudo 必要

初回セットアップ系

新規マシン / 新規環境で「最初の1回だけ」叩くコマンド群。

chezmoi init --apply

🔴 大きな副作用 (パッケージインストール、シェル変更、sudo 要)

いつ使う?

  • 新規マシンに dotfiles を導入するとき (= マシンセットアップで唯一叩くコマンド)

何が起きる?

  1. chezmoi バイナリを ~/bin/ (or ~/.local/bin/) にダウンロード
  2. github.com/reisuta/dotfiles~/.local/share/chezmoi に clone
  3. ~/.config/chezmoi/chezmoi.toml を生成 (.chezmoi.toml.tmpl から)
    • mode = "symlink" → 設定ファイルは symlink 配置
  4. run_once_before_install-packages.sh.tmpl 実行 (1回限り)
    • macOS: brew bundle --file=Brewfile
    • Arch: pacman -S でパッケージ一括インストール
    • Ubuntu: apt install + curl で atuin/mise/eza/starship を別途取得
    • 全 OS 共通: oh-my-zsh 取得 (プロンプトは Starship)
  5. 設定ファイルを symlink で配置 (例: ~/.zshrc~/.local/share/chezmoi/dot_zshrc)
  6. run_once_after_change-shell.sh.tmpl 実行 (1回限り)
    • /etc/shells に zsh のパスを追加 (必要なら)
    • chsh -s $(which zsh) でデフォルトシェル切替

例 (macOS / Ubuntu / WSL)

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply reisuta

例 (Arch Linux)

sudo pacman -S --needed just git chezmoi
git clone https://github.com/reisuta/dotfiles ~/dotfiles && cd ~/dotfiles
just install

所要時間: パッケージダウンロードがあるため初回は 5〜15 分。


日常運用系 (chezmoi)

設定変更があった日に叩くコマンド群。symlink モード前提なので 多くの場合 chezmoi apply は不要

chezmoi diff

🟢 副作用なし

いつ使う?

  • リポジトリ側の設定を変更した直後、ホーム側に何が反映されるか確認したいとき
  • リモートを git pull した後、何が変わるか把握したいとき

何が起きる?

  • ホームディレクトリと chezmoi が想定する状態の差分を表示
  • git diff 風の出力

chezmoi diff
# → 差分が表示される (ターミナルで色分け)

chezmoi apply

🟡 限定的な副作用

いつ使う?

  • symlink モードなので 基本的に不要 (リポジトリ編集が即時反映される)
  • .chezmoiignore.tmpl を変更した時 (除外ルール変更を反映するため)
  • 新しい dot_ ファイルを追加した時 (新規 symlink を作るため)
  • run_once スクリプトを変更した時 (再実行のため)

何が起きる?

  • 想定状態と実際の状態が違うファイルだけ symlink を再作成
  • 該当する run_once スクリプトがあれば実行
  • 既に正しい状態のファイルは触らない

chezmoi apply -v   # -v で実行内容を詳しく表示

chezmoi update

🟡 限定的な副作用

いつ使う?

  • 別マシンで push した変更をこのマシンに取り込みたいとき
  • git pull + chezmoi apply を1コマンドにしたバージョン

何が起きる?

  1. リポジトリで git pull --rebase を実行
  2. 続けて chezmoi apply を実行

chezmoi update -v

chezmoi edit <ターゲットパス>

🟡 限定的な副作用 (ファイル編集)

いつ使う?

  • ~/.zshrc を編集する」を意識せずに「~/.zshrc を直接編集する感覚で」開きたいとき
  • chezmoi に管理させているファイルを編集したいとき

何が起きる?

  • ターゲットパスから対応するソースパスを逆引き
  • nvim でソースファイルを開く (.chezmoi.toml.tmplcommand = "nvim" を指定)
  • 保存して終了するとファイル変更が反映される (symlink モードなので即時)

chezmoi edit ~/.zshrc
# → ~/dotfiles/dot_zshrc を nvim で開く

chezmoi managed

🟢 副作用なし

いつ使う?

  • chezmoi が今管理しているファイル一覧を見たいとき
  • 「これ chezmoi 管理だっけ?」を確認したいとき

何が起きる?

  • chezmoi が管理しているターゲットパスの一覧表示

chezmoi managed
# → .config/nvim/init.lua, .zshrc, .tmux.conf, ...

chezmoi add <ファイルパス>

🟡 限定的な副作用 (ソースリポジトリにファイル追加)

いつ使う?

  • ホームディレクトリの既存ファイルを chezmoi 管理下に入れたいとき

何が起きる?

  • 指定ファイルを ~/dotfiles/ 内に適切な命名規則で配置
  • 例: ~/.gitconfig を追加 → ~/dotfiles/dot_gitconfig が作られる
  • ホーム側のファイルは手付かず (まだ symlink 化はされない)

chezmoi add ~/.gitconfig
git -C ~/dotfiles status   # ~/dotfiles/dot_gitconfig が untracked で出る

その後 chezmoi apply で symlink 化する。


メンテナンス系 (just)

just (引数なし)

🟢 副作用なし

いつ使う?

  • 利用可能タスクを忘れたとき
  • 何ができるか思い出したいとき

何が起きる?

  • justfile に定義されているタスクの一覧と説明を表示

$ just
Available recipes:
    install        # 初回セットアップ (chezmoi が無ければ取得し、このリポジトリを source として init --apply)
    doctor         # 環境ヘルスチェック (副作用なし)
    lint           # シェルスクリプトの静的解析
    plugins-update # Neovim プラグインを最新化 (lazy.nvim sync)
    brewfile-dump  # 現在のローカル brew 環境から Brewfile を再生成 (macOS 専用)
    backup         # 現在の chezmoi 管理状態をアーカイブ (バックアップ)
    status         # chezmoi 管理対象 + 未管理ファイルの一覧

just install

🔴 大きな副作用 (パッケージインストール、シェル変更、sudo 要)

いつ使う?

  • Arch Linux の新規マシンセットアップ (chezmoi ワンライナーより手数が少ない)
  • 既に ~/dotfiles を git clone してあって、ローカル clone を source として apply したいとき

何が起きる?

  1. chezmoi が PATH に無ければ ~/.local/bin/chezmoi に curl 取得
  2. chezmoi init --source=$(justfile_directory) --apply 実行 (= ローカルリポジトリを chezmoi の source として登録 + apply)
  3. 以降は chezmoi init --apply の手順と同じ (run_once が走ってパッケージインストール等)

cd ~/dotfiles
just install

just doctor

🟢 副作用なし

いつ使う?

  • 環境構築直後、ちゃんと揃っているか確認したいとき
  • 「コマンドが見つからない」エラーを見たとき
  • 別マシンと環境差分が無いか調べたいとき

何が起きる?

  • 副作用ゼロで以下を確認:
    • OS / WSL / ディストリ判定結果
    • zsh がインストール済 + デフォルトシェル化されているか
    • oh-my-zsh / starship の存在
    • コアツール (git/nvim/tmux/fzf/rg/zoxide/bat) の存在
    • オプションツール (eza/fd/atuin/mise/gh) の存在
    • OS別のターミナル (macOS: WezTerm, Arch: kitty)
    • Neovim プラグインのインストール数
    • chezmoi 状態 (pending changes の有無)
  • すべて OK なら緑、欠けがあれば赤で表示

$ just doctor
==> 環境情報
  OS:     darwin

==> シェル
  ✓ zsh installed: /opt/homebrew/bin/zsh
  ✓ default shell is zsh
  ✓ oh-my-zsh installed
  ✓ starship installed

==> コアツール
  ✓ git
  ✓ nvim
  ...

just plugins-update

🟡 限定的な副作用 (Neovim プラグイン更新)

いつ使う?

  • Neovim プラグイン (lazy.nvim 管理) を一括更新したいとき

何が起きる?

  • nvim --headless "+Lazy! sync" +qa を実行
  • 新規プラグインのインストール / 既存プラグインのアップデート

just plugins-update

just brewfile-dump (macOS 専用)

🟡 限定的な副作用 (Brewfile 上書き)

いつ使う?

  • 手動で brew install した後、それを Brewfile に反映させたいとき
  • macOS 環境を真の正としてリポジトリ側を最新化したいとき

何が起きる?

  • 現在の brew 環境を読み取って Brewfile を上書き生成
  • brew bundle dump --file=Brewfile --force を実行
  • 既存の手書きコメントは消える (注意)

just brewfile-dump
git -C ~/dotfiles diff Brewfile   # 何が変わったか確認

just lint

🟢 副作用なし

いつ使う?

  • scripts/doctor.sh を編集した後

何が起きる?

  • shellcheck で scripts/doctor.sh を静的解析
  • .tmpl ファイルは chezmoi 処理が必要なので対象外

前提

  • shellcheck がインストール済 (macOS: brew install shellcheck)

just backup

🟡 限定的な副作用 (アーカイブ作成)

いつ使う?

  • 大きな変更前に現状をスナップショット取りたいとき

何が起きる?

  • chezmoi archive でホーム側の管理対象をすべて tar.gz に固める
  • ファイル名: backup-YYYYMMDD-HHMM.tar.gz (カレント生成)

just status

🟢 副作用なし

いつ使う?

  • chezmoi 全体の状態をざっと見たいとき

何が起きる?

  • chezmoi status (pending な変更) と chezmoi managed (管理対象一覧) を続けて表示

緊急/トラブル対応系

chezmoi apply --force

🔴 大きな副作用 (ホームディレクトリ書き換え)

いつ使う?

  • 既存ファイルを上書きしてでも chezmoi の想定状態にしたいとき
  • 「壊れた状態をリセットしたい」とき

何が起きる?

  • 通常 apply でスキップされる差分も強制適用
  • ホーム側のローカル変更は失われる (取り戻せない場合あり)

注意: 実行前に chezmoi diff で何が起きるか必ず確認すること。


chezmoi state delete-bucket --bucket=scriptState

🟡 限定的な副作用 (chezmoi の内部状態リセット)

いつ使う?

  • run_once_* スクリプトを 再度実行したい とき
  • パッケージリストを変えた後、再インストールしたいとき

何が起きる?

  • chezmoi が「実行済」と覚えている run_once_* スクリプトの記録を削除
  • 次の chezmoi apply で全 run_once スクリプトが再実行される

chezmoi state delete-bucket --bucket=scriptState
chezmoi apply -v
# → 全 run_once スクリプトが再走行

chezmoi forget <ファイルパス>

🟡 限定的な副作用

いつ使う?

  • ファイルを chezmoi 管理から外したいとき (ファイル自体は残す)

何が起きる?

  • ソース側 (~/dotfiles/) からファイルが消える
  • ターゲット側 (~/.foo) のファイルは残る (ただの普通のファイルになる)

chezmoi forget ~/.gitconfig

状況別チートシート

困ったときに「何を叩けばいいか」のクイックリファレンス。

状況 コマンド
新規マシンに導入したい (mac/Ubuntu/WSL) sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply reisuta
新規マシンに導入したい (Arch) sudo pacman -S just git chezmoi && git clone <repo> ~/dotfiles && cd ~/dotfiles && just install
設定変更を確認したい chezmoi diff
ホーム側を最新化したい chezmoi apply -v
リモートの変更を取り込みたい chezmoi update -v
ファイルを編集したい chezmoi edit ~/.zshrc (or 直接 ~/dotfiles/dot_zshrc を編集)
環境が正しいか確認したい just doctor
利用可能なタスクを思い出したい just
Neovim プラグインを更新したい just plugins-update
ホーム既存ファイルを管理下に追加 chezmoi add ~/.foo
パッケージリスト変更後、再インストール chezmoi state delete-bucket --bucket=scriptState && chezmoi apply -v
brew で入れたツールを Brewfile に反映 just brewfile-dump (macOS)
設定が壊れた、リセットしたい chezmoi diff で確認 → chezmoi apply --force

ツール棲み分け

┌─ chezmoi ──────────────────────────────────────────────────┐
│ 唯一のセットアップ/運用ツール。                              │
│   sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply reisuta
│ 1コマンドで chezmoi 自身のダウンロード + リポジトリ clone +    │
│ パッケージインストール + 設定配置 + シェル切替まで完了。       │
│ 日常コマンド: chezmoi diff / apply / update / edit          │
└─────────────────────────────────────────────────────────────┘
                           ↑ 一部のメタタスクで使う
┌─ just ─────────────────────────────────────────────────────┐
│ chezmoi の単純ラッパーは含めない。代わりに以下を担当:           │
│   - just install      : 初回セットアップ (Arch で便利)         │
│   - just doctor       : 環境健全性チェック                   │
│   - just lint         : シェルスクリプト品質チェック          │
│   - just plugins-update: Neovim プラグイン同期               │
│   - just brewfile-dump: 現環境から Brewfile 再生成 (macOS)   │
│   - just backup       : 現状をスナップショット               │
└─────────────────────────────────────────────────────────────┘

ディレクトリ構成

~/dotfiles/
├── README.md                     ← このファイル
├── justfile                      ← 非ラッパー系タスク集
├── .chezmoi.toml.tmpl            ← chezmoi 自身の設定 (symlink モード等)
├── .chezmoiignore.tmpl           ← OS 別の除外ルール
├── .gitattributes                ← Linguist 言語検出の上書き
├── Brewfile                      ← macOS パッケージリスト
├── archpkgs.txt                  ← Arch ベースパッケージ
├── archpkgs-gui.txt              ← Arch GUI (WSL では除外)
├── aptpkgs.txt                   ← Ubuntu/Debian ベースパッケージ
│
├── dot_zshrc                     → ~/.zshrc
├── dot_tmux.conf                 → ~/.tmux.conf
├── dot_config/
│   ├── nvim/                     → ~/.config/nvim/
│   ├── kitty/                    → ~/.config/kitty/    (Linux ネイティブのみ)
│   ├── wezterm/                  → ~/.config/wezterm/  (macOS のみ)
│   ├── starship.toml             → ~/.config/starship.toml (Starship プロンプト)
│   └── redshift.conf             → ~/.config/redshift.conf (Linux ネイティブのみ)
├── private_dot_local/bin/
│   ├── executable_win-clip-copy.sh     → ~/.local/bin/win-clip-copy.sh (WSL のみ)
│   ├── executable_claude-code-status   → ~/.local/bin/claude-code-status (Claude Code statusLine)
│   └── executable_tmux-claude-status   → ~/.local/bin/tmux-claude-status (tmux ステータスバー)
│
├── run_once_before_install-packages.sh.tmpl  ← chezmoi が apply 前に1度だけ実行
├── run_once_after_change-shell.sh.tmpl        ← chezmoi が apply 後に1度だけ実行
│
└── scripts/
    └── doctor.sh                 ← `just doctor` の実体

chezmoi の命名規則 (この repo で使うもの)

プレフィックス 効果
dot_<name> ~/.<name> に配置
private_<name> パーミッション 0600
executable_<name> 実行権限を付与
run_once_<...>.tmpl 1度だけ実行されるスクリプト (内容変更で再実行)
run_once_before_<...> apply 前に実行
run_once_after_<...> apply 後に実行

組み合わせ可: private_executable_dot_foo のように複数プレフィックスを連結できる。

About

Cross-platform dotfiles for macOS / Arch / WSL, managed with chezmoi — zsh, tmux, Neovim, kitty, WezTerm, Starship

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors