チュートリアル(Windows)
macOS・Linux版チュートリアルと同じシナリオを,Windows Terminalで進めます。なにも管理していない状態から始めて,dotfilesをRigoの管理下に置き,2台目のマシンと同期するまでの流れです。さらにWindows固有の置き場(.local / .appdata セクション・名前付きボリューム)も体験します。
コマンド例はPowerShellを主とし,構文が異なる箇所だけNYAGOSのタブを併記します。NYAGOSはUnix風のシェルなので,タブがない箇所はmacOS版と同じ書き方がそのまま通ります。
前提
- インストールが済んでいること
- 開発者モードが有効(設定 → システム → 開発者向け)か,管理者権限のプロンプトで実行すること。Rigoはsymlinkを作成するため,どちらかが必須です
- マシン間でディレクトリを同期する手段(Syncthing・Dropbox・OneDriveなど)。Rigoは同期機構に関知しないので,どれでも構いません。1台で試す分には不要です
以下の例ではVaultを ~\Sync\Vault に置きます。同期ツールが同期しているディレクトリに読み替えてください。
~ はそのまま使えます
PowerShellは外部コマンドの引数の ~ を展開せず,文字どおり渡します。しかしRigo自身が先頭の ~・~/・~\ をホームディレクトリに展開するため,本チュートリアルの例はそのまま動きます。$HOME と書いても同じです。NYAGOSは既定(tilde_expansion 有効)でシェル側が展開します。
Step 1 — Vaultを作る
Vaultはただのディレクトリです。設定ファイル rigo.toml の置き場所だけが決まっています(<vault>\.config\rigo\rigo.toml)。中身は空で構いません。
mkdir ~\Sync\Vault\.config\rigo
New-Item ~\Sync\Vault\.config\rigo\rigo.tomlmkdir /p ~/Sync/Vault/.config/rigo
touch ~/Sync/Vault/.config/rigo/rigo.toml初回だけ -f でこの rigo.toml を直接指定して apply を実行します。
rigo -f ~\Sync\Vault\.config\rigo\rigo.toml applylinked .config/rigo/rigo.toml
1 linked, 0 conflict, 0 broken, 0 failed, 0 excludedこの時点でVault内の rigo.toml 自身が ~\.config\rigo\rigo.toml へリンクされました。RigoはこのsymlinkをたどってVaultの場所を発見するので,以降は -f が不要になります。
rigo statushost: workpc (mode: exclude)
linked .config/rigo/rigo.tomlヘッダの workpc がこのマシンのホスト名(後でマシンごとの選択に使う識別子)です。
なお,symlink作成の権限がない場合はここで「creating symlinks on Windows requires Developer Mode or an elevated prompt」というエラーになります。前提の開発者モードを確認してください。
Step 2 — 最初のファイルを管理する
rigo add は実体をVaultへ移動し,元の場所へsymlinkを張り戻します。Windowsでも普遍的な .gitconfig から始めます。
rigo add ~\.gitconfigadded .gitconfigなにが起きたか確認してみます。
Get-Item ~\.gitconfig | Format-List LinkType, Targetls -l ~/.gitconfigLinkType : SymbolicLink
Target : C:\Users\ada\Sync\Vault\.gitconfig~\.gitconfig を今までどおりエディタで開いて編集すれば,実際に書き換わるのはVault側の実体です。変更はそのまま同期ツールに乗って他のマシンへ届きます。「編集 → applyで反映」のような追加操作はありません。
Step 3 — ディレクトリを管理する
ディレクトリを add するときは,2つの扱いから選びます。
--dir
ディレクトリ全体を1本のsymlinkとして展開します。中に新しいファイルを作っても自動で管理下に入ります--files
ディレクトリ単位ではなく,中のファイルを個別に移動・リンクします
# vimのランタイムディレクトリ全体を1本のsymlinkとして管理し,タグにまとめる
rigo add --dir --tag vim ~\vimfilesadded vimfiles/ (directory unit)フラグを付けずにディレクトリを add すると,対話でどちらかを選べます。--dir で追加したディレクトリは rigo.toml の dirs(--tag を付けた場合は [tags])に自動で記録されます。
手作業と併用できる
ここまで rigo add を使ってきましたが,これは必須の経路ではありません。Rigoは隠れた状態ファイルやデータベースを持たず,Vaultのディレクトリ木と実際のファイルの状態だけを情報源にします。同じ結果になるなら,手作業で行っても壊れません。
- ファイルを自分でVault内の対応する場所へ移動し,symlink(
New-Item -ItemType SymbolicLinkなど)も自分で張る。次のrigo statusはそれをlinkedと認識します - Vaultへ置くだけでsymlinkを張らない。エントリは
pending(移動した場合)またはunlinked(コピーして原本を残し,内容が同一の場合)として現れ,rigo applyが拾ってリンクします rigo.tomlを直接編集する。--dir/--tagによる自動追記や名前付きボリュームの自動宣言は省力化にすぎず,手で書いても同じです
各コマンドは,実体の退避とロールバック・conflictの確認・設定への自動追記といった手間を省くために用意されているものです。手作業と混ぜて使って構いません。
Step 4 — 2台目のマシンをつなぐ
2台目でもRigoをインストールし,同期ツールがVaultを同期し終えるのを待ちます。あとは初回ブートストラップだけです。
rigo -f ~\Sync\Vault\.config\rigo\rigo.toml applylinked .config/rigo/rigo.toml
linked vimfiles
conflict .gitconfig (resolve with "rigo link .gitconfig")
2 linked, 1 conflict, 0 broken, 0 failed, 0 excludedまだ存在しなかったファイル(pending)はそのままリンクされました。一方,2台目にすでに別内容の ~\.gitconfig があったため,conflict として報告されています。Rigoがconflictを黙って解決することはありません。指示どおり解決します。
rigo link .gitconfigconflict: .gitconfig
vault: 1234 B, modified 2026-07-18 10:00:12
local: 987 B, modified 2026-07-01 08:15:44
+12 -3
1) take the vault version (local content is replaced)
2) adopt the local content into the vault, then link
3) abort
choice:1台目の内容に揃えるなら 1,2台目の内容のほうを正としてVaultに取り込むなら 2 を選びます。非対話で済ませたい場合は rigo link --force .gitconfig(Vault側を採用)です。
2台目がMacやLinuxでも手順は同じです。共通レイヤーのエントリは全OSに展開されるため,たとえばMacで add した .zshrc はWindowsにも pending として現れます。OSを選ぶファイルは次のStepの .os 配下に置くか,Step 6の exclude で外します。
Step 5 — Windows固有の置き場を使う
--os でOS別にする
ホームディレクトリ内でも,Windowsにしか意味のないファイルは --os でOS別レイヤーに置きます。
# WSLの設定はWindowsでしか意味を持たない
rigo add --os ~\.wslconfigadded .wslconfigエントリはVaultの .os\windows\ 配下に入り,Windowsのマシンにだけ展開されます。NYAGOSの設定 ~\.nyagos も,NYAGOSをWindowsでだけ使うなら --os の好例です。
%APPDATA% / %LOCALAPPDATA% は自動でOS別になる
Windowsのアプリ設定の多くはホーム直下ではなく %APPDATA% / %LOCALAPPDATA% にあります。これらの配下は --os を付けなくても自動的にOS別として扱われ,Vaultでは .os\windows\.appdata\ / .os\windows\.local\ セクションに入ります。Windows Terminalの設定を例にします。
rigo add "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"rigo add "%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"added .local/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe/LocalState/settings.json論理パスの先頭 .local/ が %LOCALAPPDATA% に対応するセクションです。以後この設定は,他のWindowsマシンでも同じ場所に展開されます。
Step 6 — マシンごとに展開を選ぶ
仕事用マシンには持ち込みたくないエントリなどの選択は rigo.toml で宣言します。rigo.toml 自身も管理対象なので,どのマシンで編集しても全マシンに行き渡ります。
[groups] # グループ → ホスト(Ansibleインベントリ流)
work = ["workpc", "buildbox"]
[exclude] # ホスト/グループ → これは展開しない
work = ["vim"]ホスト名は rigo status のヘッダに出る識別子(ホスト名の最初のドットまで・小文字)で,項目はタグ名でもパスでも構いません。対象外になったエントリは status で excluded と表示されます。詳細は仕組みを参照してください。
Step 7 — secretsを扱う
APIトークンのような機微情報は,Vaultに実体を置かずパスワードマネージャーから実体化します。参照だけを rigo.toml に書きます(現在のバックエンドは1Passwordの op:// 参照で,Windows版の op CLIが必要です)。
[secrets] # 書き出し先パス → パスワードマネージャー参照
".config/gh/token" = "op://Personal/GitHub/token"rigo secrets applyapplied .config/gh/token
1 secret(s) written論理パス .config/... は,Windowsでは(XDG_CONFIG_HOME 未設定なら)~\.config\... に解決されます。書き出されたファイルは実体で,Vaultには入りません(同期にも乗りません)。値を更新したら各マシンで rigo secrets apply を再実行します。
Step 8 — 名前付きボリュームと日々の運用
別ドライブのファイルを管理する
ホーム外の絶対パスも管理できます。システムドライブ(通常 C:)以外のドライブは,マシンによってレターが違うことがあるため,名前付きボリュームを経由します。初回は対話でボリューム名を決めるだけです。
rigo add D:\Tools\foo.inivolume name for drive D: [data]:
added data:/Tools/foo.ini
declared volume data = "d" in rigo.tomlエントリはVaultの .os\windows\.abs\data\ 配下に入り,論理パス data:/Tools/foo.ini で扱われます。同じ内容が E: ドライブにあるマシンでは,rigo.toml の宣言をホスト別に広げるだけです。
[volumes]
data = { default = "d", workpc = "e" } # 既定はD:\,workpcではE:\日々の運用
運用でよく使うコマンドはOS共通です。
rigo diff # ドリフトはないか(読み取り専用)
rigo apply # 同期ツールが新しいエントリを届けたら収束させる
rigo unlink .gitconfig # 一時的に実体化する
rigo forget .gitconfig # 管理をやめる(Vault側はトラッシュへ)
rigo trash ls # トラッシュはforgetのundo
rigo clean # 壊れたリンクを掃除する詳細はmacOS・Linux版のStep 8とコマンドリファレンスを参照してください。rigo.toml の全項目は設定リファレンスにまとめてあります。