Dev environment
Everything a Mac needs for development, kept in one repository.
The idea
The apps and tools I install, my shell and git settings, and my editor extensions all live in one repository. One command applies it and is safe to run again, so a new Mac can be set up from it and an existing one kept current.
The layers
| Layer | Applied by |
|---|---|
| Packages and apps | A Homebrew Brewfile |
| Shell: oh-my-zsh, Starship prompt, plugins | chezmoi |
| Dotfiles such as git and zsh settings | chezmoi |
| Runtimes: Node, Python, Java | Homebrew |
| VS Code extensions | A list installed with the code command |
Commands
- make update pulls the repository and applies everything.
- make check previews what an update would change.
- make doctor verifies every layer.
Settings that belong to one machine or one employer stay in a local file that the repository never touches.
Fast copies between Macs
A small script sends large files to another Mac over ssh using parallel streams. Over a Thunderbolt cable between two Macs it reached about 2.9 GB/s with eight streams, against 255 MB/s for rsync, roughly eleven times faster.
Why this way
Editing the source and then applying it keeps every change in version history and makes any machine rebuildable. The repository is private, so I describe it here instead of linking it.