Asking important questions — the first-run wizard
The questions the installer asks the first time you run it, what each one controls, how "no" answers cascade through the rest of the install, and how to re-ask them later.
The very first time install.sh runs on a machine, before any module fires, it asks seven questions and writes your answers to ~/.config/dotfiles/local.env. That file is mode 0600 (owner-only readable), lives outside the repo, and is gitignored — your values stay on your machine.
Every other script (and every install module) reads that file at runtime. So you enter your details once and they flow through the entire system.
How the questions flow
The wizard is cascading — saying no to a question can skip several follow-ups. The full decision tree:
1. Where do you keep your code projects? → CODE_DIR
2. Your name (for git commits) → GIT_USER_NAME
3. Your email → GIT_USER_EMAIL
4. Do you have a NAS? ─┬─ YES → ask NAS IP, user, share, mount point
└─ NO → skip everything below (no Time Machine,
no sort-downloads, no archive-project)
5. Set up Time Machine to NAS? (only if 4 = YES)
└─ if YES: ask share name, monthly schedule yes/no
6. Watch ~/Downloads + auto-sort? (only if 4 = YES)
└─ if YES: continuously in background (LaunchAgent) yes/no
7. Install archive-project? (only if 4 = YES)
└─ if YES: default threshold (months)
So someone who answers no to the NAS question only sees 4 prompts total — the wizard knows the remaining questions don’t apply.
How the answers connect to the rest of the install
Each answer becomes a variable in ~/.config/dotfiles/local.env. The install modules check those variables and either install something or skip silently:
| Wizard answer | What runs / what doesn’t |
|---|---|
HAS_NAS=true | Renders the |
HAS_TIMEMACHINE_NAS=true | Installs |
ENABLE_SORT_DOWNLOADS=true | Symlinks |
ENABLE_ARCHIVE_PROJECT=true | Symlinks bin/archive-project + the man page. |
| Anything left as default / “no” | The corresponding install module checks the flag and skips itself silently — no LaunchAgents installed, no Login Items registered, no PATH clutter. |
The detailed mechanic — which install.d/ module reads which variable — is documented under Configuration.
Where to go next
- Every question, in full — the verbatim prompts, defaults, and what each one writes to
local.env. - Reconfigure later — how to change your answers after the first install.
- Configuration — the per-feature settings the wizard writes, plus how to edit them by hand.