Every question, in full
The verbatim prompts the first-run wizard asks, their defaults, the local.env key each one writes, and how no-answers cascade.
This page walks the wizard top-to-bottom, in the exact order install.d/05-configure.sh asks them. Every question is here, with its default and the key it writes to ~/.config/dotfiles/local.env.
Section 1 — Code projects
CODE_DIR — Where do you keep your code projects?
- Prompt:
Where do you keep your code projects? - Default:
$HOME/Code - Writes:
CODE_DIR="…" - Affects:
archive-projectscans this directory recursively for stale git repos; thedevshell alias jumps here.
Section 2 — Git identity
The wizard pre-fills these from your existing git config --global values if you’ve set them, otherwise from the loader (which leaves them empty). Both can be left blank to skip — git then falls back to whatever’s already in your global config.
GIT_USER_NAME — Your name
- Prompt:
Your name: - Default: value from
~/.gitconfig.localif it exists, elsegit config --global user.name, else empty - Writes:
GIT_USER_NAME="…"(and[user] name = …in~/.gitconfig.local) - Affects: Commit authorship across every repo on this machine.
GIT_USER_EMAIL — Your email
- Prompt:
Your email: - Default: value from
~/.gitconfig.localif it exists, elsegit config --global user.email, else empty - Writes:
GIT_USER_EMAIL="…"(and[user] email = …in~/.gitconfig.local) - Affects: Commit email — used for GitHub avatar matching and merge attribution.
Section 3 — NAS (the cascade gate)
HAS_NAS — Do you have a NAS to sync files to?
- Prompt:
Do you have a NAS to sync files to? [y/N] - Default:
no(first install) — any SMB share counts: TrueNAS, Synology, generic Samba - Writes:
HAS_NAS=true|false - Affects: Master switch for every NAS-dependent feature below. Answering
nshort-circuits the rest of the wizard —HAS_TIMEMACHINE_NAS,ENABLE_SORT_DOWNLOADS, andENABLE_ARCHIVE_PROJECTare all force-set tofalseand their questions are never asked. See NAS workflow for what gets installed when this is on.
Only if HAS_NAS=y the wizard continues with these four NAS-detail prompts:
NAS_HOST — NAS IP or hostname
- Prompt:
NAS IP or hostname: - Default: empty
- Writes:
NAS_HOST="…" - Affects: Substituted into
nas/truenas-media.inetloc.templateat install time and into the Time Machine destination URL.
NAS_USER — NAS username
- Prompt:
NAS username: - Default: empty
- Writes:
NAS_USER="…" - Affects: Your account on the NAS — appears in SMB URLs and the rendered
.inetloc.
NAS_SHARE_MEDIA — SMB share name for files
- Prompt:
SMB share name for files: - Default:
media - Writes:
NAS_SHARE_MEDIA="…" - Affects: The share that gets auto-mounted at login and that
sort-downloads/archive-projectwrite to.
NAS_MOUNT_MEDIA — Mount point on this Mac
- Prompt:
Mount point on this Mac: - Default:
/Volumes/media - Writes:
NAS_MOUNT_MEDIA="…" - Affects: Where the share lands on disk. Changing this means changing where every NAS-aware tool looks.
Section 4 — Time Machine on NAS (only if HAS_NAS=true)
HAS_TIMEMACHINE_NAS — Set up Time Machine backups to your NAS?
- Prompt:
Set up Time Machine backups to your NAS? [y/N] - Default:
no - Writes:
HAS_TIMEMACHINE_NAS=true|false - Affects: Installs the
tm-monthlyLaunchDaemon andtm-status/tm-backuphelpers. See Backup.
Only if HAS_TIMEMACHINE_NAS=y:
NAS_SHARE_TM — SMB share name for Time Machine
- Prompt:
SMB share name for Time Machine: - Default:
timemachine - Writes:
NAS_SHARE_TM="…" - Affects: A separate share from
NAS_SHARE_MEDIA— Time Machine wants exclusive use of its destination.
TM_SCHEDULE_MONTHLY — Replace Apple’s hourly schedule?
- Prompt:
Replace Apple's hourly schedule with monthly-on-the-1st-at-03:00? [Y/n] - Default:
yes - Writes:
TM_SCHEDULE_MONTHLY=true|false - Affects: When
true,install.shrunssudo tmutil disableand installs the monthly LaunchDaemon at/Library/LaunchDaemons/. Whenfalse, Apple’s hourly default stays — the dotfiles just point Time Machine at your NAS share.
Section 5 — Auto-sort Downloads (only if HAS_NAS=true)
ENABLE_SORT_DOWNLOADS — Watch ~/Downloads and auto-sort to your NAS?
- Prompt:
Watch ~/Downloads and auto-sort to your NAS? [y/N] - Default:
no - Writes:
ENABLE_SORT_DOWNLOADS=true|false - Affects: Symlinks
bin/sort-downloadsinto~/.local/bin/. See NAS workflow.
Only if ENABLE_SORT_DOWNLOADS=y:
SORT_DOWNLOADS_BACKGROUND — Run continuously in the background?
- Prompt:
Run continuously in the background (LaunchAgent)? [Y/n] - Default:
yes - Writes:
SORT_DOWNLOADS_BACKGROUND=true|false - Affects: When
true, thecom.prometheus.sort-downloadsLaunchAgent is installed and fires on every file change in~/Downloads. Whenfalse, the script is on$PATHbut nothing triggers it — runsort-downloadsby hand when you want a sweep.
Section 6 — archive-project (only if HAS_NAS=true)
ENABLE_ARCHIVE_PROJECT — Install archive-project?
- Prompt:
Install archive-project? [y/N] - Default:
no - Writes:
ENABLE_ARCHIVE_PROJECT=true|false - Affects: Symlinks
bin/archive-projectand registersman/archive-project.1soarchive-project --manworks. See NAS workflow.
Only if ENABLE_ARCHIVE_PROJECT=y:
ARCHIVE_AFTER_MONTHS — Default “old enough to archive” threshold
- Prompt:
Default 'old enough to archive' threshold (months): - Default:
1 - Writes:
ARCHIVE_AFTER_MONTHS=N(positive integer; wizard re-prompts on invalid input) - Affects: The default age cutoff for
archive-project. A repo is a candidate when its last commit is older than this AND its working tree is clean. Override per-run witharchive-project --months=N.
Quick reference — the cascade in one table
| If you answer… | The wizard skips… |
|---|---|
HAS_NAS=n | All 8 NAS-dependent prompts. |
HAS_TIMEMACHINE_NAS=n | NAS_SHARE_TM and TM_SCHEDULE_MONTHLY prompts. |
ENABLE_SORT_DOWNLOADS=n | SORT_DOWNLOADS_BACKGROUND prompt. |
ENABLE_ARCHIVE_PROJECT=n | ARCHIVE_AFTER_MONTHS prompt. |
| Empty input on any text/int question | Nothing — the current default is used. |
After the wizard
The captured values land in ~/.config/dotfiles/local.env (mode 0600), and ~/.gitconfig.local is written if you provided git identity. The remaining install modules read those values via bin/lib/dotfiles-config.sh and gate their own work accordingly.
Where to go next
- Reconfigure later — change any of these answers after first install.
- Configuration overview — every key in
local.envplus the editing flow. - NAS workflow · Backup — the features the NAS-side answers turn on.