Mac Studio と MacBook Air で、設定ファイルと Homebrew のアプリを1つの定義で揃えるための repo です。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/schroneko/dotfiles/main/setup.sh)"Homebrew の導入、この repo の clone、設定ファイルのリンク、scripts/macos-defaults.sh の適用、同期用 LaunchAgent の登録をします。
次のファイルは ~ からこの repo へのシンボリックリンクです。編集したら commit して push し、もう片方の Mac は次の同期で取り込みます。リンクだけ作り直すときは ./setup.sh --link を使います。
.zshrc/.zshenv.gitconfig.ssh/config.config/nvim/init.lua.config/mise/config.tomlLibrary/KeyBindings/DefaultKeyBinding.dict
LaunchAgent com.schroneko.dotfiles-sync が、ログイン時と1時間ごとに scripts/sync.sh を実行します。
- この repo を
git pullします。 - 前回の同期から、この Mac で入れたアプリを
Brewfileに足し、消したアプリをBrewfileから外します。前回の状態は~/.local/state/dotfiles/brew-state.tsvにあります。 Brewfile通りに、足りないものを入れ、Brewfileにないものを消します。- formula と、
auto_updatesを持たない cask をbrew upgradeします。自分で更新するアプリはアプリ自身に任せます。バックグラウンドで更新すると空のアプリが残ることがあったためです。 scripts/homebrew-approve-nested-apps.shで、cask の中に入っているアプリの承認をします。mise installとmise upgradeをします。Brewfileに差分があれば commit して push します。
ghq の repo は Mac 間で同期しません。必要なときに ghq get で clone します。
Brewfile.ignore に書いた名前は、同期の対象から外れ、入れることも消すこともしません。一度に 10 個を超えて消えそうなときは、事故とみなして止まります。
実行前に何が起きるかを見るには ./scripts/sync.sh --dry-run を使います。ログは ~/Library/Logs/dotfiles-sync.log です。
scripts/macos-defaults.sh: Dock、Finder、キーボードなどの macOS 設定です。--dry-runで内容だけ確認できます。docs/: Mac Studio のリモートアクセスの手順です。- 1Password CLI は Homebrew の通常版 cask
1password-cliを使います。1Password Environment の ID はマシンごとに~/.config/op/environment-idに置き、.zshenvが読み込みます。