Loading repository data…
Loading repository data…
puneetkakkar / repository
This repository serves as a centralized hub for storing dotfiles, facilitating configuration management across multiple environments. Seamlessly sync settings for shell, editor, and various applications.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Personal dotfiles for macOS — zsh + tmux + Ghostty + Claude Code + neovim, plus a small set of custom helpers (claude-agent worktrees, tmux-thumbs hint-copy, focus-aware "Claude needs input" indicator).
Read tmux-cheatsheet.md and
shell-cheatsheet.md for the workflow guide (deployed
to ~/Documents/Cheatsheets/ on your Mac); this file is just install instructions.
git clone https://github.com/puneetkakkar/dotfiles.git ~/Github/dotfiles \
&& cd ~/Github/dotfiles \
&& ./bootstrap.sh
Then complete the manual steps — SSH keys,
gh auth login, claude /login, prefix I for tmux plugins.
bootstrap.sh does| Step | What |
|---|---|
| 1 | Sanity-check macOS + arch |
| 2 | Install Homebrew |
| 3 | brew bundle install — formulae and casks from Brewfile |
| 4 | Install Oh My Zsh |
| 5 | Install nvm |
| 6 | Install SDKMAN |
| 7 | Install TPM (tmux plugin manager) |
| 8 | Create ~/.config/dotfiles/local.env — prompts for REPOS_DIR (your git repos root) |
| 9 | Symlink dotfiles into $HOME (safe-override — backs up existing) |
| 10 | Download thumbs binary (no homebrew formula) |
| 11 | Install Rosetta 2 (Apple Silicon — thumbs is x86_64) |
| 12 | Configure per-repo git identity for this repo |
Everything is idempotent. Re-running bootstrap.sh is safe — it skips
what's already done.
For every file the script symlinks, three cases:
Existing target at $HOME/<path> | Action |
|---|---|
| Doesn't exist |
| Create symlink to repo |
| Already a symlink to the right repo path | No-op |
| Anything else (file, dir, wrong symlink) | Move to ~/.dotfiles-backup/<timestamp>/<path>, then symlink |
Nothing is ever deleted. If something breaks, the backup directory has a recoverable copy of every file replaced.
.zshrc, .tmux.conf, .gitconfig, .p10k.zsh~/Documents/Cheatsheets/: tmux-cheatsheet.md, shell-cheatsheet.md.config/: tmux/ (theme + start script), btop/, bat/, ccstatusline/.claude/: settings.json, statusline scripts, hooks (notification.sh,
stop.sh, block-dangerous-git.sh).local/bin/: claude-agent* trio, tmux-thumbs-pick.vimrc (Vundle-based vim config).config/nvim/ (Lua-based neovim config)These are in the repo for safekeeping but not symlinked into $HOME.
When you're ready to use them, uncomment their lines in bootstrap.sh
and re-run.
~/.config/dotfiles/local.env)bootstrap.sh creates this file from .config/dotfiles/local.env.template on first run (with a prompt). It holds settings that differ per machine and is not tracked in git.
Current knobs:
| Variable | Default | What it controls |
|---|---|---|
REPOS_DIR | $HOME/Github | Root directory scanned by prefix A (claude-agent-pick) when you're outside a git repo |
WORKTREES_DIR | $HOME/Worktrees | Root directory where prefix A (claude-agent) places git worktrees ($WORKTREES_DIR/<repo>/<label>/) |
To add a new knob: add it to .config/dotfiles/local.env.template with a default, read it in whatever script needs it (source the file at startup), and re-run bootstrap.sh — it will skip creation since the file exists, so copy the new line in manually or delete ~/.config/dotfiles/local.env to regenerate.
~/.config/dotfiles/local.env — machine-local overrides, generated by bootstrap (see above)~/.claude/projects/*/memory/ — auto-memory stays machine-localSee docs/manual-steps.md for what to do about each after running bootstrap.
The repo is the source of truth. After bootstrap, every file in $HOME
that's deployed is a symlink into this repo. Edit through the symlink
(or directly in the repo) and git commit && git push like any other
project. The other Mac picks it up via git pull && ./bootstrap.sh
(re-running bootstrap is fine; no-op for already-correct symlinks).