Skip to content
Copied!
published on 2026-07-18

チュートリアル(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)。中身は空で構いません。

powershell
mkdir ~\Sync\Vault\.config\rigo
New-Item ~\Sync\Vault\.config\rigo\rigo.toml
sh
mkdir /p ~/Sync/Vault/.config/rigo
touch ~/Sync/Vault/.config/rigo/rigo.toml

初回だけ -f でこの rigo.toml を直接指定して apply を実行します。

powershell
rigo -f ~\Sync\Vault\.config\rigo\rigo.toml apply
linked    .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 が不要になります

powershell
rigo status
host: 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 から始めます。

powershell
rigo add ~\.gitconfig
added .gitconfig

なにが起きたか確認してみます。

powershell
Get-Item ~\.gitconfig | Format-List LinkType, Target
sh
ls -l ~/.gitconfig
LinkType : SymbolicLink
Target   : C:\Users\ada\Sync\Vault\.gitconfig

~\.gitconfig を今までどおりエディタで開いて編集すれば,実際に書き換わるのはVault側の実体です。変更はそのまま同期ツールに乗って他のマシンへ届きます。「編集 → applyで反映」のような追加操作はありません。

Step 3 — ディレクトリを管理する

ディレクトリを add するときは,2つの扱いから選びます。

  • --dir
    ディレクトリ全体を1本のsymlinkとして展開します。中に新しいファイルを作っても自動で管理下に入ります
  • --files
    ディレクトリ単位ではなく,中のファイルを個別に移動・リンクします
powershell
# vimのランタイムディレクトリ全体を1本のsymlinkとして管理し,タグにまとめる
rigo add --dir --tag vim ~\vimfiles
added vimfiles/ (directory unit)

フラグを付けずにディレクトリを add すると,対話でどちらかを選べます。--dir で追加したディレクトリは rigo.tomldirs--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を同期し終えるのを待ちます。あとは初回ブートストラップだけです。

powershell
rigo -f ~\Sync\Vault\.config\rigo\rigo.toml apply
linked    .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を黙って解決することはありません。指示どおり解決します。

powershell
rigo link .gitconfig
conflict: .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別レイヤーに置きます。

powershell
# WSLの設定はWindowsでしか意味を持たない
rigo add --os ~\.wslconfig
added .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の設定を例にします。

powershell
rigo add "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
sh
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 自身も管理対象なので,どのマシンで編集しても全マシンに行き渡ります。

toml
[groups]                     # グループ → ホスト(Ansibleインベントリ流)
work = ["workpc", "buildbox"]

[exclude]                    # ホスト/グループ → これは展開しない
work = ["vim"]

ホスト名は rigo status のヘッダに出る識別子(ホスト名の最初のドットまで・小文字)で,項目はタグ名でもパスでも構いません。対象外になったエントリは statusexcluded と表示されます。詳細は仕組みを参照してください。

Step 7 — secretsを扱う

APIトークンのような機微情報は,Vaultに実体を置かずパスワードマネージャーから実体化します。参照だけを rigo.toml に書きます(現在のバックエンドは1Passwordの op:// 参照で,Windows版の op CLIが必要です)。

toml
[secrets]                    # 書き出し先パス → パスワードマネージャー参照
".config/gh/token" = "op://Personal/GitHub/token"
powershell
rigo secrets apply
applied  .config/gh/token

1 secret(s) written

論理パス .config/... は,Windowsでは(XDG_CONFIG_HOME 未設定なら)~\.config\... に解決されます。書き出されたファイルは実体で,Vaultには入りません(同期にも乗りません)。値を更新したら各マシンで rigo secrets apply を再実行します。

Step 8 — 名前付きボリュームと日々の運用

別ドライブのファイルを管理する

ホーム外の絶対パスも管理できます。システムドライブ(通常 C:)以外のドライブは,マシンによってレターが違うことがあるため,名前付きボリュームを経由します。初回は対話でボリューム名を決めるだけです。

powershell
rigo add D:\Tools\foo.ini
volume 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 の宣言をホスト別に広げるだけです。

toml
[volumes]
data = { default = "d", workpc = "e" }   # 既定はD:\,workpcではE:\

日々の運用

運用でよく使うコマンドはOS共通です。

powershell
rigo diff                  # ドリフトはないか(読み取り専用)
rigo apply                 # 同期ツールが新しいエントリを届けたら収束させる
rigo unlink .gitconfig     # 一時的に実体化する
rigo forget .gitconfig     # 管理をやめる(Vault側はトラッシュへ)
rigo trash ls              # トラッシュはforgetのundo
rigo clean                 # 壊れたリンクを掃除する

詳細はmacOS・Linux版のStep 8コマンドリファレンスを参照してください。rigo.toml の全項目は設定リファレンスにまとめてあります。