This is a collection of scripts for setting up my personal development environment. It's meant to get a new environment completely configured as fast as possible on a clean install of macOS.
After running through the installation scripts and instructions, you'll have an environment configured with the following tools.
- Homebrew: The de facto package manager for macOS.
- Git: Everyone's favorite distributed version control system.
- Neovim: The world's best text editor. My Neovim configuration includes AstroNvim, a "distribution", as well as a ton of customization.
In addition, these dotfiles install a ton of small, useful utilities command-line utilities and system applications, which can be viewed in the Brewfile.
Before anything else, install any pending system updates.
softwareupdate -iaThen, install the Xcode's CLI tools and accept the license.
xcode-select --install
sudo xcodebuild -license acceptFirst, clone this repo.
git clone https://github.com/LandonSchropp/dotfiles.git $HOME/.dotfilesNext, you'll want to run each of the following scripts in-order. Over the years, I've found that something usually breaks every year or two, so it's best to run them individually and debug anything that pops up.
~/.dotfiles/bin/set-up-homebrew
~/.dotfiles/bin/set-up-zshell
~/.dotfiles/bin/set-up-rcup
~/.dotfiles/bin/set-up-bat
~/.dotfiles/bin/set-up-fzf
~/.dotfiles/bin/set-up-launchd
~/.dotfiles/bin/set-up-macos
~/.dotfiles/bin/set-up-mise-en-place
~/.dotfiles/bin/set-up-neovim
~/.dotfiles/bin/set-up-claude-code
~/.dotfiles/bin/set-up-herdrset-up-macos finishes by printing the one screenshot setting that can't be scripted. Shottr is
sandboxed, so its save folder has to be picked through its own file picker, on each machine.
In order to connect with GitHub, you'll need to generate an SSH key. Follow the instructions on GitHub.
Beyond the setup scripts, this repository includes a handful of small, purpose-built utilities.
These are too involved for a single script, but not substantial enough to warrant their own
repository. These live in local/share/<name> and are exposed as commands on PATH via
local/bin.
The window manager arranges windows into configurable per-workspace layouts, switches FlashSpace profiles based on the connected display, and toggles the focused window between fullscreen and its arranged layout. It's wired into Yabai, FlashSpace, and Karabiner and does not need to be run by hand.
stamp-screenshots points the images in ~/Screenshots at
Shottr, so opening one from Finder opens it for editing. macOS binds
applications to file types rather than to folders, so the binding is written per file as a
com.apple.LaunchServices.OpenWith extended attribute. Images outside that folder, and images
whose handler I've already set by hand, are left alone.
The update utilities keep my machines current and in sync. They include the following:
sync-repositories: Syncs the default branch of my active development repositories via git-town.sync-dictionaries: Merges the local, Neovim, and iCloud spelling dictionaries.back-up-preferences/restore-preferences: Backs up and restores a subset of app preferences to and from iCloud Drive. The list of apps is configured inconfig/preferences/apps.json. Runrestore-preferenceswhen setting up a new machine.daily-update: Runs the quick updates — the two syncs above, the tldr cache, and any missing mise tools.weekly-update: Upgrades the things that drift — Homebrew packages, mise tools, and Oh My Zsh — then reclaims the disk they leave behind.