Skip to content

Latest commit

 

History

152 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

These are Derrick Reimer's dotfiles. I'm using stow to manage symlinking.

Prerequisites

  • macOS or Linux (Debian/Ubuntu)
  • git
  • curl
  • sudo access

Note: Homebrew is automatically installed by bootstrap.sh on macOS.

Installation

Clone this repository to your home directory:

git clone https://github.com/derrickreimer/dotfiles.git ~/dotfiles
cd ~/dotfiles

macOS

Run the bootstrap script:

./bootstrap.sh

Preview changes without applying them:

./bootstrap.sh --dry-run

Linux (Cloud/VM)

For Debian/Ubuntu-based systems, run the Linux bootstrap script:

./bootstrap-linux.sh

Preview changes without applying them:

./bootstrap-linux.sh --dry-run

Manual Installation (macOS)

Alternatively, you can install manually:

Install Homebrew packages (including stow):

brew bundle --file=brew/Brewfile

Symlink configurations with stow:

# Symlink stow first to ensure .stow-global-ignore is applied
stow stow

# Symlink all packages
stow agents brew claude codex gemini ghostty git grok hunk kitty mise nvim opencode starship tmux vscode zsh

# Or symlink individual packages
stow zsh
stow nvim

Agent skills live in ~/.agents/skills (the agents package). Claude Code reads them via a symlink that stow can't fold on its own, so create it once:

mkdir -p ~/.claude ~/.agents/skills
ln -sfn ../.agents/skills ~/.claude/skills

Set up zsh as the default shell:

# Add Homebrew zsh to allowed shells
echo "$(brew --prefix)/bin/zsh" | sudo tee -a /etc/shells

# Change default shell
chsh -s "$(brew --prefix)/bin/zsh"

Structure

Each directory is a stow package that maps to $HOME:

Package Description
agents Shared agent skills (~/.agents/skills)
brew Homebrew Brewfile for packages and casks
claude Claude Code settings
codex Codex settings
gemini Gemini CLI settings
ghostty Ghostty terminal config (Carbonfox theme)
git Global gitignore
grok Grok CLI config (~/.grok/config.toml only)
hunk Hunk diff viewer (~/.config/hunk/config.toml)
kitty Kitty terminal config (Carbonfox theme)
mise mise runtime manager (Erlang, Elixir, Node.js)
nvim Neovim config (based on Kickstart)
opencode Opencode settings
starship Starship prompt configuration
stow Stow configuration
tmux tmux configuration with vim-style keybindings
vscode VS Code user settings
zsh Zsh configuration with modular setup

Managing dotfiles

Add a new config to an existing package:

# Example: add a new zsh config file
mv ~/.config/zsh/newconfig.zsh ~/dotfiles/zsh/.config/zsh/
stow -R zsh

Create a new stow package:

mkdir -p ~/dotfiles/newpackage/.config/newpackage
mv ~/.config/newpackage/config ~/dotfiles/newpackage/.config/newpackage/
stow newpackage

Unstow a package (remove symlinks):

stow -D zsh

Cheatsheets

  • nvim/.config/nvim/doc/cheatsheet.md - Neovim keybindings reference (accessible via <leader>? in nvim)
  • tmux-cheatsheet.md - tmux keybindings reference (accessible via prefix + ? in tmux)

Local overrides

Zsh supports local overrides that aren't tracked in git:

# Create local config for machine-specific settings
touch ~/.config/zsh/local.zsh

About

My personal dotfiles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages