A minimal, carefully maintained collection of dotfiles for macOS. My philosophy is to delete unnecessary configurations as often as possible to keep things simple and maintainable.
These dotfiles help configure:
- zsh with plugins (via antidote)
- git configuration
- Homebrew packages and applications
- macOS preferences
- vim, SSH, Docker, and other development tools
- Ghostty terminal and Visual Studio Code settings
- direnv for environment management
- 1Password SSH agent integration for SSH and git commit signing
git clone https://github.com/lox/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./bootstrap.shThe installation process:
- Creates symlinks for all
*.symlinkfiles into your home directory - Installs Homebrew packages defined in the Brewfile
- Runs topic-specific installers for additional setup
The repository follows a modular approach:
bootstrap.sh: Main entry point that runsinstall.shwithcaffeinateto prevent sleepinstall.sh: Creates symlinks and runs all topic-specific installersBrewfile: Defines all Homebrew packages, casks, and fonts to installtopic/: Directories for each tool or area of configurationtopic/*.zsh: Files loaded into your zsh environment- Private overrides: files matching
zsh/*.private.zshare sourced if present and are gitignored topic/path.zsh: Loaded first to set up $PATHtopic/completion.zsh: Loaded last to set up autocompletiontopic/*.symlink: Files that get symlinked to your $HOME (e.g.,git/gitconfig.symlink→~/.gitconfig)- zsh note:
~/.zshrcis a small wrapper that sources${HOME}/.dotfiles/zsh/main.zsh. You can add host- or user-specific overrides in~/.dotfiles/zsh/*.private.zsh. topic/install.sh: Topic-specific installation scripts
- Private overrides: files matching
bin/: Executables that are added to your $PATH
- SSH agent configuration uses the 1Password SSH agent for secure key management
- Git commit signing is configured to use 1Password's SSH signing capabilities
- Multiple git identities can be managed with the
git-assumefunction
For detailed documentation on the Git identity management system, see git/README.md.
To add your own configurations:
- Create a new directory for your topic
- Add
.zshfiles for zsh configuration - Add
.symlinkfiles that should be linked to your home directory - Create an
install.shscript if additional setup is needed
cd ~/.dotfiles
git pull
./bootstrap.sh