Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Personal config files managed with GNU Stow.

Quick Start

git clone <repo-url> ~/Documents/setup/dotfiles
cd ~/Documents/setup/dotfiles

# Setup secrets
cp secrets.env.example secrets.env
# Edit secrets.env with real values

# Bootstrap everything
./bootstrap.sh

Structure

dotfiles/
├── stow/               # Stow packages (each dir = one package)
│   ├── git/            # .gitconfig
│   ├── zsh/            # .zshrc (modular loader) + .zsh/ modules
│   ├── npm/            # .npmrc (token from secrets)
│   ├── claude/         # .claude/settings.json (token from secrets)
│   ├── xdg-config/     # ~/.config/* (zed, gh, raycast, opencode)
│   └── vscode/         # VS Code settings
├── scripts/            # link-secrets.sh, macos-defaults.sh
├── Brewfile            # Homebrew bundle
├── bootstrap.sh        # Full setup script
└── secrets.env.example # Secret template

Managing Configs

Add new config

mkdir -p stow/tmux
mv ~/.tmux.conf stow/tmux/.tmux.conf
cd stow && stow -t $HOME tmux

Update existing config

vim stow/zsh/.zshrc  # symlink auto-updates

Remove a package

cd stow && stow -t $HOME -D zsh  # unstow
rm -rf stow/zsh/

Secrets

  • Never commit secrets.env or any file with tokens/keys
  • zsh loads secrets via source ~/.secrets.env
  • npmrc gets NPM_TOKEN via scripts/link-secrets.sh
  • Claude Code settings.json gets model/compact-window env vars via scripts/link-secrets.sh (template stow/claude/.claude/settings.json holds ${VAR} placeholders; jq injects real values into ~/.claude/settings.json as a regular file). No proxy/auth-token injection — Claude Code uses the official Anthropic subscription.
  • On new machine: cp secrets.env.example secrets.env → fill values → ./scripts/link-secrets.sh

Restore on New Machine

  1. xcode-select --install
  2. Clone this repo
  3. cp secrets.env.example secrets.env → fill secrets
  4. ./bootstrap.sh
  5. gh auth login
  6. Restart terminal

Modular Zsh

.zshrc loads modules from ~/.zsh/ in order: envpathpluginsaliasesbindings → secrets → local.zsh

  • local.zsh is gitignored — machine-specific overrides without forking
  • ~/.secrets.env is gitignored — API keys, tokens

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages