The dotfiles for fuckin' awesome development environment
- macOS 26 or later (Apple Silicon only)
Before anything else, open System Settings > General > Software Update and update macOS to the latest version. On a brand-new Mac (or one that was just reinstalled), the update catalog can be stale and block jumping straight to the latest version — if that happens, install the full installer or step through the intermediate versions it offers first.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/p-chan/dotfiles/main/scripts/install.sh)"By default the repo is cloned to ~/src/github.com/p-chan/dotfiles. To use
another location (CI, a temporary macOS environment, or an existing
checkout), set DOTFILES_DIR:
DOTFILES_DIR="$PWD" bash scripts/install.shinstall.sh records the location as mise's dotfiles.root setting in
home/.config/mise/conf.d/dotfiles-root.toml (machine-local, gitignored),
so plain mise bootstrap invocations need no environment setup afterwards.
To move the checkout later, move the directory and re-run install.sh with
DOTFILES_DIR pointing at the new path.
mise bootstrap installs the Herdr integration for Claude Code. Herdr requires
an absolute path for its hook, so Git keeps the portable $HOME form in the
index and restores the local path in the work tree. The generated hook remains
local.
The shared configuration is always active. Machine-specific behavior is added with one or both of these profiles:
| Profile | Purpose |
|---|---|
desktop |
GUI apps, Dock/Finder preferences, and editor settings |
server |
Always-on power settings for unattended remote operation |
The first install defaults to desktop. Select a headless server or compose
both roles with DOTFILES_PROFILES:
DOTFILES_PROFILES=server \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/p-chan/dotfiles/main/scripts/install.sh)"
DOTFILES_PROFILES=desktop,server \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/p-chan/dotfiles/main/scripts/install.sh)"The selection is persisted as machine-local symlinks under
home/.config/mise/conf.d/, so subsequent mise bootstrap and install.sh
runs preserve it. To change the selection later, run:
DOTFILES_PROFILES=desktop,server \
bash "$DOTFILES_DIR/scripts/configure-profiles.sh" "$DOTFILES_DIR"
mise bootstrapThe server profile disables idle system sleep on AC power, enables restart
after power loss, and waits for you to enable Remote Login in System Settings.
Its first convergence requires an administrator password; run mise run bootstrap-server to apply only those settings. Removing a profile stops
managing its settings but does not uninstall packages or restore previous macOS
settings automatically.
GUI applications installed by Homebrew. Dotfiles is the config path this repo symlinks into place, and Document links to the steps to follow by hand after install.
| App | Start at login | Dotfiles | Document |
|---|---|---|---|
| 1Password | ✅ | — | docs/apps/1password.md |
| Arc | ☐ | — | docs/apps/arc.md |
| ChatGPT | ☐ | — | — |
| Claude | ☐ | — | — |
| CleanShot X | ✅ | — | — |
| CodexBar | ✅ | — | — |
| Cyberduck | ☐ | — | — |
| Docker Desktop | ✅ | — | — |
| Fantastical | ✅ | — | docs/apps/fantastical.md |
| Figma | ☐ | — | docs/apps/figma.md |
| Ghostty | ☐ | ~/.config/ghostty |
— |
| Google Chrome | ☐ | — | docs/apps/chrome.md |
| Google Japanese IME | ☐ | — | docs/apps/google-japanese-ime.md |
| Handy | ✅ | — | docs/apps/handy.md |
| iStat Menus | ✅ | — | docs/apps/istat-menus.md |
| Karabiner-Elements | ✅ | ~/.config/karabiner |
— |
| Logi Options+ | ✅ | — | docs/apps/logi-options-plus.md |
| Mimestream | ☐ | — | — |
| Raycast | ✅ | — | — |
| Slack | ✅ | — | docs/apps/slack.md |
| Zed | ☐ | ~/.config/zed/settings.json |
— |
A fresh machine only needs a handful of these before it is workable: 1Password for the credentials and license keys the other documents link to, Arc as the main browser to sign in everywhere else, Karabiner-Elements, Google Japanese IME, and Logi Options+ for keyboard and mouse input, and Raycast as the launcher. The rest can wait until they are actually needed.
Upgrade Homebrew packages and mise tools.
dots up