My dotfiles, managed with GNU Stow.
# Clone the repo (--recurse-submodules pulls in kitty-themes)
git clone --recurse-submodules https://github.com/klucar/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Install system packages (Linux apt or macOS Homebrew)
./bootstrap.sh
# Symlink dotfiles into ~
./install.sh| Package | Files | Description |
|---|---|---|
bash |
.bashrc, .bash_profile, .bash_aliases, .bash_logout, .inputrc |
Shell config with cross-platform support |
vim |
.vimrc |
Vim config with sane defaults |
tmux |
.tmux.conf |
Tmux with C-a prefix, vim keys, mouse support |
git |
.gitconfig, .gitignore_global |
Git config with aliases |
starship |
.config/starship.toml |
Starship cross-shell prompt |
kitty |
.config/kitty/kitty.conf, theme.conf, kitty-themes/ (submodule) |
Kitty terminal config; themes from dexpota/kitty-themes — swap by repointing theme.conf |
gh |
.config/gh/config.yml |
GitHub CLI config. hosts.yml (OAuth tokens) is gitignored and stays local. |
Each top-level directory is a stow "package" that mirrors your home directory structure. Running stow bash from the dotfiles directory creates symlinks:
~/dotfiles/bash/.bashrc --> ~/.bashrc
~/dotfiles/vim/.vimrc --> ~/.vimrc
# Install all packages
./install.sh
# Remove all symlinks
./uninstall.sh
# Stow a single package
cd ~/dotfiles && stow bash
# Unstow a single package
cd ~/dotfiles && stow -D bashMachine-specific config goes in ~/.bashrc.local (sourced at the end of .bashrc). This file is not tracked by git.
bootstrap.sh installs these tools via apt (Linux) or Homebrew (macOS):
git, vim, tmux, curl, wget, htop, tree, jq, stow, unzip, zip, make, ripgrep, fzf, bat, uv, ruff, silversearcher-ag, build-essential, openssh, bash-completion, and more.