My centralized system and application configurations, managed with GNU Stow. Optimized for Vim-style (h,j,k,l) navigation across system tools and window management.
- Homebrew: For managing packages on macOS.
- Essential Tools:
stow,eza,fzf,bat,zoxide,starship,tmux,neovim,mise,k9s.
# Install core dependencies
brew install stow eza fzf bat zoxide starship tmux neovim mise k9sThe repository is organized into directories, each representing an application. Within these directories, the file structure mirrors the path from the home (~) directory.
Example:
~/dotfiles/zsh/.zshrc-> symlinked to~/.zshrc~/dotfiles/nvim/.config/nvim/init.lua-> symlinked to~/.config/nvim/init.lua
A sync.sh script is provided to automate management.
cd ~/dotfiles
./sync.sh install # Force-refresh all symlinks
./sync.sh save # Commit and push local changes
./sync.sh update # Pull remote changes and refresh linksTo deploy these dotfiles on a new system:
-
Clone the repository:
git clone <your-repo-url> ~/dotfiles cd ~/dotfiles
-
Remove existing default files: Caution: This will delete your current local configurations.
rm ~/.zshrc ~/.zprofile rm -rf ~/.config/nvim ~/.config/alacritty ~/.config/tmux # Add others as needed
-
Stow the configurations:
stow zsh git nvim alacritty tmux starship btop hammerspoon rectangle mise raycast opencode shell
Alternatively, stow everything:
stow *
To add a new application configuration (e.g., bash):
- Create the directory structure:
mkdir -p ~/dotfiles/bash mv ~/.bashrc ~/dotfiles/bash/
- Link it:
cd ~/dotfiles && stow bash
Since the files are symlinked, you can edit them directly in their normal locations (e.g., nvim ~/.zshrc). Changes are immediately reflected in the ~/dotfiles directory.
To back up your changes:
cd ~/dotfiles
git add .
git commit -m "Update configurations"
git push- Shell: zsh, starship, mise, shell
- Editors: nvim
- Terminals: alacritty
- Tools: git, tmux, btop, raycast, hammerspoon, rectangle, k9s, herdr
- Misc: opencode