A modern, XDG-compliant dotfiles setup for macOS with automated installation and management.
- XDG Base Directory compliant - Clean organization under
~/.config/ - Automated setup - One-command installation on vanilla macOS
- Modern tools - Includes
eza,bat,fzf,neovim, and more - Zsh configuration - Powerlevel10k theme, autosuggestions, syntax highlighting
- Git integration - Comprehensive aliases and conditional work/personal configs
- Homebrew management - Brewfile with all development tools
- Cron automation - Automated AWS credential refresh
# Clone dotfiles
git clone [email protected]:hermitmaster/dotfiles.git ~/.config
# Full installation (recommended)
cd ~/.config && make install
# Restart your terminal or source the configs
source ~/.zshenv && source ~/.zshrcIf you want to set up basics first and install packages later:
cd ~/.config && make bootstrap
# Then later: make install-packagesmake install- Full installation (Homebrew + packages + configs + cron)make bootstrap- Minimal setup (Homebrew + basic configs)make homebrew- Install Homebrew onlymake link-configs- Create symbolic links for config filesmake install-packages- Install all packages from Brewfilemake setup-cron- Install cron jobs
make update- Update all packages and tools (replaces olduattfunction)make setup-nvim- Update Neovim pluginsmake clean- Clean up broken symlinks and caches
make info- Show system and installation statusmake dev-check- Validate configuration filesmake help- Show all available commands
After installation, you can use these shortcuts:
uatt- Quick update (alias formake update)dotfiles- Access dotfiles management (alias formake -C ~/.config)
- Homebrew - Package manager
- Zsh - Modern shell with plugins
- Git - Version control with aliases
- Neovim - Modern text editor
- eza - Better
lswith icons and git integration - bat - Better
catwith syntax highlighting - fzf - Fuzzy finder for files and history
- zoxide - Smart directory jumping
- ripgrep - Fast text search
- Go, Node.js, Python - Programming languages
- Docker, Kubernetes tools - Container orchestration
- AWS CLI - Cloud tools
- Terraform - Infrastructure as code
- Windsurf - AI-powered IDE
- GoLand - Go IDE
- WezTerm - Modern terminal
- Rectangle - Window management
~/.config/
├── Makefile # Installation and management
├── README.md # This file
├── cron/
│ └── crontab # Scheduled tasks
├── git/
│ ├── config # Git configuration
│ └── ignore # Global gitignore
├── homebrew/
│ └── Brewfile # Package definitions
└── zsh/
├── .zshenv # Environment variables
├── .zshrc # Shell configuration
└── functions/ # Custom shell functions
The setup includes conditional git configuration for work environments:
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfigCreate ~/work/.gitconfig for work-specific settings.
- Add packages to
homebrew/Brewfile - Add configuration to
.zshrcif needed - Run
make updateto install
Add new shell functions to zsh/functions/ directory. They'll be auto-loaded.
make infomake dev-checkmake cleanmake uninstall # Remove dotfiles (keeps Homebrew)
make install # Reinstall everything- macOS (tested on Apple Silicon and Intel)
curlandgit(pre-installed on macOS)- Internet connection for downloading packages
Personal dotfiles configuration. Feel free to fork and adapt for your own use.