Personal configuration files managed with GNU Stow.
| Tool | Description |
|---|---|
| zsh + zim | Shell and plugin framework |
| neovim + LazyVim | Editor |
| zellij | Terminal multiplexer |
| ghostty | Terminal emulator |
| starship | Shell prompt |
| git | Version control config |
| scripts | Reusable shell scripts (bookmarks, etc.) |
Install the tools:
brew install neovim zellij ghostty starship zsh stowInstall zim:
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zshClone and stow:
git clone https://github.com/<you>/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow zsh nvim zellij ghostty git scriptsThis creates symlinks from your home directory into the repo. For example, stow zsh symlinks ~/dotfiles/zsh/.zshrc to ~/.zshrc.
To remove symlinks for a package:
stow -D zshIf config files already exist as real files (not symlinks), remove or back them up before stowing — Stow won't overwrite existing files:
# back up, then stow
mv ~/.zshrc ~/.zshrc.bak
stow zshThe scripts stow package installs reusable shell functions to ~/.local/scripts/. All .zsh files in that directory are auto-sourced by .zshrc.
To add a new script, create a .zsh file in scripts/.local/scripts/ and re-stow.
Quickly save and jump to directories from anywhere:
mark proj # bookmark current directory as "proj"
jump proj # cd to it (or: j proj)
cd ~proj # also works via zsh named directories
marks # list all bookmarks
unmark proj # remove a bookmarkCreate ~/.zshrc.local for OS-specific aliases, work env vars, PATH overrides, secrets:
# Example: macOS
export PATH="/opt/homebrew/bin:$PATH"
# Example: Arch
alias pacman='sudo pacman'Create ~/.gitconfig.local for your git identity:
[user]
name = Your Name
email = you@example.comDownload the vim-zellij-navigator plugin:
mkdir -p ~/.config/zellij/plugins
curl -L https://github.com/hiasr/vim-zellij-navigator/releases/latest/download/vim-zellij-navigator.wasm \
-o ~/.config/zellij/plugins/vim-zellij-navigator.wasmEach top-level directory is a "package" that mirrors the target directory structure from $HOME. When you run stow <package>, it creates symlinks in $HOME pointing to the files in the package directory.
dotfiles/zsh/.zshrc --> ~/.zshrc (symlink)
dotfiles/nvim/.config/nvim/ --> ~/.config/nvim (symlink)
Stow is declarative and safe — it won't overwrite existing files and will warn about conflicts.