This repo is now structured as a chezmoi source tree for a modern zsh
workflow shared across:
- a personal macOS machine
- a work machine with light customization
- disposable remote coding servers after user-level bootstrap
The stack this repo is designed for:
chezmoifor user-level dotfileszshas the base shell everywheremisefor runtimes and project tool versionstmuxonly on remote coding hostsNeovimremotely andVS Codelocally- separate private bootstrap for provisioning disposable Linux dev servers
home/: the chezmoi source state rootdocs/: rollout notes and migration planningscripts/: local and Linux bootstrap helpers
home/ currently manages:
.gitconfig,.gitconfig.local,.gitignore.zshenv,.zprofile,.zshrc~/.config/zsh/*~/.config/tmux/tmux.conf~/.config/nvim/init.lua~/.config/mise/config.toml~/.config/ghostty/config~/.config/starship.toml~/.ssh/config
./scripts/bootstrap-macos.sh
chezmoi init --apply https://github.com/adamcooper/dotfiles.gitThen edit ~/.config/chezmoi/chezmoi.toml and set:
role = "personal"on your personal machinerole = "work"on your work machine
The macOS bootstrap also installs the Ghostty font used by the default config
and pre-installs starship and atuin so those feature flags work if you
enable them later.
./scripts/bootstrap-linux.sh
chezmoi init --apply https://github.com/adamcooper/dotfiles.gitThen set role = "remote" in ~/.config/chezmoi/chezmoi.toml.
If you enable use_starship or use_atuin on Linux, install the matching
binary first.
The generated ~/.config/chezmoi/chezmoi.toml contains a small amount of
machine-local data:
role = "personal"for your main macOS machinerole = "work"for your work machinerole = "remote"for disposable Linux coding boxesuse_starship = trueif you want a Starship promptuse_atuin = trueif you want Atuin on that specific machine
This keeps one shared repo while allowing small per-machine differences. The default prompt stays simple and built-in unless you explicitly enable Starship on a machine. If a flag is enabled without the corresponding tool installed, the shell falls back cleanly and prints a warning.
Keep machine bootstrap details in a separate private repo or notes. This public repo should be applied only after the remote machine already exists and has the base packages installed.
The intended remote user-space stack is:
zshtmuxnvimmisedirenvzoxidefzf
Inside a repo, run dev-session to attach or create a tmux session named
after the current directory.
- This repo does not assume Nix.
misehandles runtimes and project tools; keep global tools minimal.- Keep shell history separate per machine.
- Keep bootstrap and deployment concerns (
cloud-init,Docker,Kamal) separate from user dotfiles. home/is the only source of truth.- The rollout/consolidation plan lives in
docs/migration-plan.md. - The per-machine rollout checklist lives in
docs/first-run-checklist.md.