Personal development environment configuration, managed with GNU Stow and Homebrew.
| File/Directory | Purpose |
|---|---|
Brewfile |
All CLI tools and macOS apps (Homebrew) |
.zshrc |
Zsh shell config with aliases, functions, and plugins |
.gitconfig |
Git defaults, aliases, and delta diff viewer |
.gitignore_global |
Global gitignore for all repos |
.tmux.conf |
Tmux config with vim keybindings and Catppuccin theme |
.config/nvim/ |
NeoVim config with lazy.nvim, LSP, Treesitter, Telescope |
.config/starship.toml |
Starship prompt theme |
setup_env.sh |
Bootstrap script to set everything up |
# 1. Clone this repo
git clone https://github.com/<your-username>/dotfiles.git ~/dotfiles
cd ~/dotfiles
# 2. Make setup script executable
chmod +x setup_env.sh
# 3. Run the full setup
./setup_env.shThis will:
- Install Homebrew (if not present)
- Install all packages from
Brewfile - Install Oh My Zsh
- Symlink all dotfiles to
$HOMEusing GNU Stow - Set up NeoVim plugins
You can run individual steps:
./setup_env.sh -b # Only install Homebrew packages
./setup_env.sh -z # Only install Oh My Zsh + shell plugins
./setup_env.sh -s # Only symlink dotfiles (stow)
./setup_env.sh -n # Only setup NeoVim
./setup_env.sh -u # Remove all symlinks (unstow)
./setup_env.sh -h # Show help-
Update your git identity:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
-
Restart your terminal or run:
source ~/.zshrc
-
Open NeoVim to let plugins finish installing:
nvim
For settings that differ per machine (work vs personal), create these files (they are git-ignored):
~/.zshrc.local- Machine-specific shell config, env vars, secrets~/.gitconfig.local- Machine-specific git config
Example ~/.zshrc.local:
export COMPANY_API_KEY="..."
export AWS_PROFILE="work"| Alias | Command |
|---|---|
ll |
eza -la --icons --git |
cat |
bat |
gs |
git status |
lg |
lazygit |
k |
kubectl |
mvnci |
mvn clean install |
mvncs |
mvn clean install -DskipTests |
| Key | Action |
|---|---|
Ctrl+a |
Prefix (instead of Ctrl+b) |
Prefix + | |
Split pane vertically |
Prefix + - |
Split pane horizontally |
Prefix + h/j/k/l |
Navigate panes (vim-style) |
Prefix + r |
Reload tmux config |
| Key | Action |
|---|---|
Space + ff |
Find files (Telescope) |
Space + fg |
Live grep (Telescope) |
Space + fb |
Find buffers |
gd |
Go to definition |
gr |
Go to references |
K |
Hover documentation |
Space + rn |
Rename symbol |
Space + ca |
Code action |
After making changes to your dotfiles:
cd ~/dotfiles
git add -A
git commit -m "update: description of change"
git pushOn another machine, pull and re-stow:
cd ~/dotfiles
git pull
stow . --restow --target=$HOMETo cleanly remove all symlinks:
cd ~/dotfiles
./setup_env.sh --unstow