Personal macOS development environment configurations managed with Git and GNU Stow
Keep your dotfiles, editor settings, and shell configurations organized, versioned, and easily deployable across machines.
- Shell Configuration: zsh with oh-my-zsh, custom aliases, and plugins
- Terminal Multiplexer: tmux configuration
- File Manager: ranger configuration
- Editor Settings: VS Code settings and keybindings
First, install Homebrew and oh-my-zsh:
# Install Homebrew (see https://brew.sh)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install oh-my-zsh (see https://ohmyz.sh)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"brew install zsh
brew install tmux
brew install ranger
brew install zsh-syntax-highlighting
brew install zsh-autosuggestions
brew install thefuck
brew install stow.zshenv for additional dependencies like nvm, node, etc. Adapt this file to your needs before using this configuration!
GNU Stow creates symlinks from this repository to their target locations, making it easy to manage your configs in one place.
macOS creates .DS_Store files that can interfere with stow. Create a global ignore file:
cd ~
touch .stow-local-ignore
echo "\.DS_Store" >> .stow-local-ignorecd /path/to/macos_configs/.dotfiles/.zsh
stow -v --target=$HOME .Expected output:
LINK: .zlogin => src/personal/macos_configs/.dotfiles/.zsh/.zlogin
LINK: .zprofile => src/personal/macos_configs/.dotfiles/.zsh/.zprofile
LINK: .zshenv => src/personal/macos_configs/.dotfiles/.zsh/.zshenv
LINK: .zshrc => src/personal/macos_configs/.dotfiles/.zsh/.zshrc
cd /path/to/macos_configs/settings/vscode
stow -v --target="$HOME/Library/Application Support/Code/User" .Expected output:
LINK: keybindings.json => ../../../../src/personal/macos_configs/settings/vscode/keybindings.json
LINK: settings.json => ../../../../src/personal/macos_configs/settings/vscode/settings.json
Note: Symlinks appear as normal files with
ls -a. In Finder, they're labeled as "alias" rather than "document".
Sets the environment for login shells. Based on Bash's .bash_profile. This is the recommended file to use since Bash was the default shell up to macOS Mojave.
Loaded after .zprofile for interactive shells. The primary location for $PATH, $PROMPT, aliases, and functions you want available in both login and interactive shells.
Read first and on every shell invocation. Use for environment variables needed by non-interactive shells (e.g., scripts called by launchd). Important for advanced users who need $PATH, $PAGER, or $EDITOR in all contexts.
Executed when logging out of a session. Useful for cleanup tasks like resetting the terminal window title.
- VS Code settings location:
~/Library/Application Support/Code/User - Custom aliases: Check
.zshenvfor useful zsh commands and aliases - Updating configs: Edit files in this repo, changes are reflected immediately via symlinks
- New machine setup: Clone this repo and run the stow commands above
This is a personal configuration repository, but feel free to fork it and adapt it to your needs!
Feel free to use these configurations however you like.