Script to set up a macOS laptop for development.
It can be run multiple times on the same machine safely. It installs, upgrades, or skips packages based on what is already installed. If individual formulae or casks fail, the script logs a warning and continues with the rest of the setup.
Download, review, then execute the script:
curl --remote-name https://raw.githubusercontent.com/samcdavid/laptop/master/mac
less mac
sh mac 2>&1 | tee ~/laptop.logHomebrew formulae:
| Category | Packages |
|---|---|
| Unix | git, git-lfs, openssl@3, rcm, tmux, tmuxinator, tpm, watchman, zsh, fish |
| GitHub | gh |
| Image processing | imagemagick, vips |
| Languages / package managers | asdf, yarn |
| Databases | postgresql@17, redis |
| Cloud / infrastructure | awscli, circleci, nomad |
| Dev tools | chroma, cmake, colordiff, direnv, ffmpeg@6, fswatch, fzf, jq, libxslt, llvm@11, miller, mkcert, neovim, pipx, ripgrep, tree, unixodbc, websocat, wget, wxwidgets, yt-dlp, zq |
| Fun | cowsay, figlet, fortune, lolcat |
Homebrew casks:
1password, Altair GraphQL Client, Chromedriver, Claude, Docker Desktop, Font Hack, Font JetBrains Mono, Font JetBrains Mono Nerd Font, Font Menlo for Powerline, Font SF Mono for Powerline, gcloud CLI, Ghostty, GPG Suite, Insomnia, Linear, Loom, MacDown, Muzzle, ngrok, Notion, ProtonVPN, Rectangle, Session Manager Plugin, Tuple, Visual Studio Code
Dotfiles (samcdavid/dotfiles):
- Clones dotfiles repo and runs
rcupto create symlinks - Includes fish config, neovim (LazyVim), tmux, ghostty, git, psqlrc, tmuxinator sessions
Git:
- Configures git-lfs hooks
- Generates a GPG key for commit signing
- Authenticates with GitHub and uploads the GPG key
Shell:
- Sets fish as the default shell
- Installs Oh My Fish and all packages from the OMF bundle
Tmux:
- Installs TPM plugins automatically
Version management (asdf):
- Plugins: ruby, nodejs, erlang, elixir, python, golang, terraform
- Installs all language versions from
~/.tool-versions
The script will source ~/.laptop.local if it exists. Put any additional setup there.
After running the script:
- Setup 1Password
Originally based on thoughtbot's laptop script. See the LICENSE file for details.