Modern, XDG-compliant, modular configuration for macOS (Apple Silicon)
and Linux VMs. Built for speed, minimalism, and a clean $HOME.
📖 Full docs: https://dotfiles.nishanthgobi.com/
🧭 Editor spec:
docs/philosophy.md— portable source of truth fornvim+zedmodules.
Each tool is a GNU Stow package laid
out as <tool>/.config/<tool>/.... Running stow <tool> symlinks its
contents into $HOME, keeping $HOME tidy and configs colocated under
$XDG_CONFIG_HOME.
git clone --recursive git@github.com:Nishanth-Gobi/Dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shinstall.sh installs Homebrew (macOS), runs brew bundle, initializes
zsh-plugin submodules, then stows each module with dry-run conflict
detection. On Linux, package install is manual — see the
Linux setup page.
| Module | Purpose | Scope |
|---|---|---|
| home | $HOME entry points (.zshenv, etc.) |
both |
| zsh | Shell, aliases, prompt, plugins | both |
| git | Personal git config + includeIf work |
both |
| nvim | LazyVim-based editor | both |
| kitty | Terminal emulator | both |
| tmux | Terminal multiplexer | both |
| zed | Zed editor settings + keymaps | both |
| btop | System monitor | both |
| fastfetch | System info on shell startup | both |
| lazygit | Git TUI | both |
| aws | AWS CLI config (dummy creds) | both |
| claude | Global Claude Code config + skills | both |
| assets | Wallpapers, terminal art, ASCII | both |
| aerospace | Tiling window manager | macOS |
| raycast | Launcher config export | macOS |
Anything that varies per machine (API tokens, Java home, Android SDK):
~/.config/zsh/host.zsh. Sourced by .zshrc if present, silently
skipped otherwise. Gitignored, never tracked.
Work git identity: ~/.config/git/work.local. Auto-loaded by includeIf
for any repo under ~/work/. Also machine-local. See the
git module page
for the full pattern.
# Add a new module
mkdir -p mytool/.config/mytool
mv ~/.config/mytool/* mytool/.config/mytool/
stow -d ~/dotfiles -t ~ mytool
# then add `mytool` to COMMON_MODULES in install.sh
# Update zsh plugin submodules
git submodule update --remote --merge
# Refresh Brewfile from current state
brew bundle dump --force --file=~/dotfiles/Brewfile
# Re-link a module after editing the source
stow -d ~/dotfiles -t ~ --restow zshpython3 -m venv .venv-docs
.venv-docs/bin/pip install -r requirements-docs.txt
.venv-docs/bin/mkdocs serve # http://127.0.0.1:8000/