Skip to content

Repository files navigation

Dotfiles

Personal configuration for my macOS development environment. Managed with GNU Stow, bootstrapped with Homebrew. Arch Linux support is planned.

Theme across every tool: Tokyo Night.

Contents

Tool Module
Alacritty alacritty/
bat bat/
Ghostty ghostty/
Git git/
Lazygit lazygit/
Neovim (LazyVim) nvim/
Tmux tmux/
Wezterm wezterm/
Zsh zsh/
VS Code profile vscode/ (imported manually)

Package manifest lives in Brewfile — brews, casks, VS Code extensions, and npm globals.

Requirements

  • macOS on Apple Silicon
  • Internet access (setup.sh will install Homebrew and Xcode CLT if missing)

Install

git clone git@github.com:khrystuk/dotfiles.git ~/Documents/dotfiles
cd ~/Documents/dotfiles
./setup.sh

What setup.sh does, in order:

  1. Triggers the Xcode CLT installer if missing.
  2. Installs Homebrew if missing, then loads its environment.
  3. Runs brew bundle against Brewfile.
  4. Applies macOS defaults (disable press-and-hold, Dock tile size, Spaces ordering) and restarts the Dock.
  5. Stows every config module into $HOME.
  6. Prompts for git user.name / user.email on first run and writes them to ~/.gitconfig.local (untracked, never committed).
  7. Clones TPM into ~/.tmux/plugins/tpm.
  8. Builds bat's theme cache so the bundled tokyonight_night theme loads.

The script is idempotent — every step short-circuits when the work is already done, so re-running it on an existing setup is safe.

Post-install

A few things setup.sh can't do for you:

  • Tmux plugins — open tmux once and press Prefix + I to install the plugins declared in ~/.tmux.conf.
  • VS Code profile — in VS Code, run Profiles: Import Profile… and select vscode/Default.code-profile.

Layout

Each top-level directory is a Stow module. Stow mirrors the module's contents into $HOME as symlinks:

dotfiles/git/.gitconfig          →  ~/.gitconfig
dotfiles/zsh/.zshrc              →  ~/.zshrc
dotfiles/nvim/.config/nvim/      →  ~/.config/nvim/

Files at the repo root (Brewfile, setup.sh, README.md, .stow-local-ignore) are not deployed.

Git identity

The committed git config does not contain personal details. The [include] directive pulls them in from an untracked, machine-local file:

  • git/.gitconfig — shared config (delta, pager, merge style, theme).
  • ~/.gitconfig.local[user] block with name and email, generated by setup.sh.

To change identity later, edit ~/.gitconfig.local directly or delete it and re-run setup.sh.

Updating

cd ~/Documents/dotfiles
git pull
brew bundle --file=Brewfile

If a new stow module was added upstream, re-run ./setup.sh to link it.

Uninstall

cd ~/Documents/dotfiles
stow -d "$PWD" -t "$HOME" -D alacritty bat ghostty git lazygit nvim tmux wezterm zsh

This removes the symlinks. Installed Homebrew packages, the repo itself, and ~/.gitconfig.local are untouched.

About

My dotfiles

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages