Skip to content

kcrlee/dots

Repository files navigation

dots

Dotfiles managed with GNU Stow. Works on macOS and Fedora Linux.

Structure

Each top-level directory is a stow package — its contents mirror your home directory:

dots/
├── bob/          → ~/.config/bob/
├── ghostty/      → ~/.config/ghostty/
├── nvim/         → ~/.config/nvim/
├── systemd/      → ~/.config/systemd/user/
├── tmux/         → ~/.config/tmux/
├── wezterm/      → ~/.config/wezterm/

A few bash files (.bashrc, .bash_profile, .blerc, .fzf.bash) live at the repo root and aren't managed by stow.

Quick Start

git clone https://github.com/kyle/dots ~/dots
cd ~/dots
./install.sh

The install script works on macOS and Fedora Linux. It will:

  1. Install system packages (stow, fzf, fd, tmux, direnv)
  2. Stow config packages (OS-appropriate selection)
  3. Set bash as your default shell

Manual Usage

Install a package

cd ~/dots
stow nvim       # creates ~/.config/nvim/ → dots/nvim/.config/nvim/
stow ghostty tmux wezterm   # multiple at once

Remove a package

stow -D nvim    # removes the symlinks, leaves the files in dots/ intact

Preview changes

stow -n -v nvim # dry run — shows what would be linked without doing it

Adding new configs

XDG configs (~/.config/...)

Most modern tools use ~/.config/<tool>/. Create a matching structure inside a new package directory:

# Example: adding Alacritty
mkdir -p alacritty/.config/alacritty
cp ~/.config/alacritty/alacritty.toml alacritty/.config/alacritty/
stow alacritty

The key idea: the path inside the package directory, relative to the package root, must match the path relative to $HOME.

Dotfiles in $HOME root

For tools that use ~/.<file> (no .config directory):

# Example: adding .gitconfig
mkdir git
cp ~/.gitconfig git/.gitconfig
stow git

Multiple files in one package

A single package can manage as many files as you want:

wezterm/
└── .config/
    └── wezterm/
        ├── wezterm.lua
        ├── fonts.lua
        ├── keybinds.lua
        └── utils.lua

stow wezterm symlinks the entire wezterm/ directory under ~/.config/.

Dependencies

All handled by install.sh, but for reference:

  • GNU Stow — symlink manager
  • fzf + fd — fuzzy finder
  • direnv — per-directory environment variables

About

Personal Config files

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors