Personal configuration files managed with GNU Stow.
dotfiles/
├── bash/ # Bash config (.bashrc)
├── fish/ # Fish config (.config/fish/)
├── git/ # Git config (.gitconfig, .gitignore_global)
├── gpg/ # GPG config (.gnupg/)
├── nvim/ # Neovim config (.config/nvim/)
├── ssh/ # SSH config (.ssh/)
├── tmux/ # Tmux config (.tmux.conf)
├── zsh/ # Zsh config (.config/zsh/)
└── setup-system.sh # System provisioning script
git clone https://github.com/youruser/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup-system.shcd ~/dotfiles
stow fish git nvim tmux zsh bash ssh gpgRestow a single package:
stow -R fish- GNU Stow
- Fish shell (optional, but recommended)
- Neovim >= 0.9
The setup-system.sh script supports:
- Arch Linux (pacman + yay)
- Debian/Ubuntu (apt)
- Fedora/RHEL (dnf)
It installs:
- Core packages (git, zsh, tmux, neovim, etc.)
- Development toolchains (Rust, Node.js via fnm/nvm, Go, Bun)
- Shell enhancements (atuin, zoxide, fzf, delta)
- Python tools via pipx
- Then stows all dotfiles
| Tool | Config |
|---|---|
| Shell | Fish (primary), Zsh, Bash |
| Editor | Neovim (lazy.nvim, catppuccin, LSP) |
| Terminal | Tmux (prefix C-a) |
| Git | Delta pager, useful aliases |
| History | Atuin (syncable shell history) |
| Navigation | Zoxide (smart cd) |
| Node | fnm (fast node manager) |
Never commit secrets. The .gitignore excludes:
- SSH private keys
- GPG private keys
- Any
*.localfiles
Add machine-specific config in ~/.config/fish/config.fish.local or similar.