Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment variables

Complete reference for DF_* variables and the tool-standard ones this repo cares about. All DF_* flags are read in install/_lib.sh or bootstrap.sh. Set in your shell, prepend to a single command, or persist via chezmoi data.

Configuration

VarDefaultWhat it does
DF_NAME(prompts)Display name. Pre-seed to skip the chezmoi prompt on first run.
DF_EMAIL(prompts)Email. Pre-seed to skip the chezmoi prompt on first run.
DF_REPOcadebrown/dotfilesGitHub owner/repo slug used by curl-bootstrap. Override to fork.
DF_PATH(auto-detect)Where the dotfiles repo lives on disk. Defaults to the script’s parent dir.
DF_LINK$HOME/dotfilesSymlink in $HOME that points at DF_PATH.
DF_DIRSdev:bones:miscColon-separated list of subdirs created in $HOME by install/dirs.sh.

Behavior toggles

VarDefaultWhat it does
DF_USE_PLAT0Per-PLAT directory isolation. 1 enables $LOCAL_PLAT=$HOME/.local/$PLAT; 0 collapses to $HOME/.local. Accepts 1|true|yes|on (case-insensitive). See PLAT isolation.
DF_BREW_UPGRADE1 (macOS), 0 (Linux)Whether to run brew upgrade and brew upgrade --cask --greedy. Auto-set to 1 in upgrade mode.
DF_DEBUG0Set to 1 for verbose [dbug] output with timing info on every run_logged command.
DF_FORCE0Used by install/plat-decommission.sh to skip the deletion confirmation prompt.
DF_CARGO_STRATEGIES(unset)Override cargo binstall --strategies. E.g. compile to skip GitHub release fetchers (useful behind a VPN).

Scratch space

VarDefaultWhat it does
DF_SCRATCH(unset)Path to scratch root. Setting this enables scratch mode (symlinks heavy $HOME dirs).
DF_SCRATCH_LINK$HOME/scratchThe $HOME symlink that points at scratch. Bootstrap creates this if DF_SCRATCH is set.
DF_LINKS~/.local:~/.cache:~/.vscode:~/.vscode-server:~/.cursor:~/.cursor-server:~/.nv:~/.npm:~/.oh-my-zsh:~/.oh-my-zsh-customColon-separated dirs to redirect to scratch.

See Scratch space.

Skip flags

Each DF_DO_* flag defaults to 1 (run). Set to 0 to skip.

VarStepSkips
DF_DO_SCRATCH0Scratch space symlink setup (auto-0 in update/upgrade modes)
DF_DO_DIRS0.1~/dev, ~/bones, ~/misc creation
DF_DO_PACKAGES4Homebrew + brew bundle
DF_DO_MACOS_SERVICES5Colima service registration (macOS)
DF_DO_MACOS_SETTINGS5.5Dock/Finder/keyboard/etc. defaults (macOS)
DF_DO_MACOS_QUICK_ACTIONS5.6Finder Quick Actions install (macOS)
DF_DO_ZSH3oh-my-zsh + plugins
DF_DO_NODE6nvm + Node.js + global npm packages
DF_DO_RUST6rustup + cargo tools
DF_DO_PYTHON6uv + per-tool isolated venvs
DF_DO_CLAUDE6Claude Code binary + plugins + MCP servers + overlay skills
DF_DO_CODEX6Codex CLI binary + managed config + hooks
DF_DO_CURSOR6Cursor settings symlinks + extensions
DF_DO_VSCODE6VS Code extensions
DF_DO_CMAKE6CMake toolchain file deployment
DF_DO_LOCAL_LLM6.5Local LLM tooling (HuggingFace cache + binary checks)
DF_DO_MEMORY6.6Agent memory stack (cass + qmd + ~/kb + daemons)
DF_DO_BLENDER_MCP6.7Blender MCP addon install
DF_DO_AUTH7Default 0. Set to 1 to run interactive token setup.
DF_DO_OVERLAYS8Skip all overlay bootstrap scripts

Internal (set by _lib.sh, not user-facing)

These are exported by _lib.sh for install scripts to consume — don’t override unless you know why.

VarSourceValue
OS_lib.shdarwin or linux
ARCH_lib.shx86_64 or aarch64 (normalized)
PLAT_lib.shDetected platform name (e.g. plat_Darwin_arm64); empty if no spec matches
LOCAL_PLAT_lib.shInstall root: $HOME/.local (flat) or $HOME/.local/$PLAT (PLAT-on)
ARCH_BIN_lib.sh$LOCAL_PLAT/bin
RUSTUP_HOME_lib.sh$LOCAL_PLAT/rustup
CARGO_HOME_lib.sh$LOCAL_PLAT/cargo
CARGO_TARGET_DIR_lib.sh$LOCAL_PLAT/cargo-build (workaround for macOS Sequoia ar/ld in /var/folders/)
NVM_DIR_lib.sh$LOCAL_PLAT/nvm
UV_TOOL_BIN_DIR_lib.sh$ARCH_BIN (where uv tool entrypoints land)
UV_TOOL_DIR_lib.sh$LOCAL_PLAT/uv/tools (per-tool venvs)
UV_PYTHON_INSTALL_DIR_lib.sh$LOCAL_PLAT/uv/python (uv-managed Python)
CONAN_HOME_lib.sh$LOCAL_PLAT/conan2
DF_ROOT_lib.shThe dotfiles repo root (parent of install/)
DF_PACKAGES_lib.sh$DF_ROOT/packages
DF_OVERLAYS_lib.shBash array of discovered dotfiles-*/ overlay paths
DF_INSTALL_DIRbootstrap.sh$DF_ROOT/install
DF_MODEbootstrap.shinstall, update, or upgrade
GIT_CONFIG_GLOBAL_lib.shForced to /dev/null so install scripts aren’t affected by SSH-rewriting gitconfig

Pre-seeding chezmoi

These get cached in ~/.config/chezmoi/chezmoi.toml on first init and don’t re-prompt:

chezmoi data keySourceNotes
nameDF_NAME env or interactive promptUsed in templates as {{ .name }}
emailDF_EMAIL env or interactive promptUsed in templates as {{ .email }}
use_platDF_USE_PLAT env or false defaultUsed in templates as {{ .use_plat }} to gate PLAT-isolated paths

Edit ~/.config/chezmoi/chezmoi.toml directly to change these without re-running chezmoi init.