Personal dotfiles managed with GNU Stow.
git clone https://github.com/paulyeo21/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./setup.shsetup.sh handles both macOS and Linux:
- Installs Homebrew (macOS) or apt packages (Linux)
- Installs all required tools:
vim,tmux,fzf,ag,go,pure - Removes old symlinks and stows all packages
- Installs zsh-autosuggestions, fzf shell integration, vim-plug, vim plugins, gopls
After setup, verify everything is working:
./validate.shcd ~/.dotfiles
stow --target="$HOME" zsh git vim tmux binEach top-level directory is a Stow package mirroring $HOME:
| Package | Installs |
|---|---|
zsh/ |
.zshrc, .zshenv, .zsh/config/*.zsh |
git/ |
.gitconfig, .gitignore_global, .git_template/ |
vim/ |
.vimrc, .vim/{rcfiles,rcplugins,functions}/ |
tmux/ |
.tmux.conf |
bin/ |
bin/{git-pr,git-publish,tat} |
Shell
- Pure prompt — directory + git branch, async
- zsh-autosuggestions — command suggestions from history
- fzf — fuzzy finder wired to
Ctrl+r(history),Space+f(files),Space+a(search) - Vim keybindings in zsh (
bindkey -v) tm— fzf session switcher for tmux;tat— create/attach session by directory namenote/notes— open today's Obsidian daily note in vim
Vim
- vim-go with gopls —
Space+gd(definition),Space+gr(references),Space+gi(implements) - vim-fugitive + vim-rhubarb —
Space+gb(blame),Space+go(open on GitHub) - vim-tmux-navigator —
Ctrl+h/j/k/lacross vim splits and tmux panes - fzf.vim, vim-surround, vim-commentary
Tmux
Ctrl+sprefixCtrl+s Ctrl+t— fzf session pickerCtrl+s Space— toggle last session