Configuration — your local.env, customization, and per-feature settings
Every supported key in ~/.config/dotfiles/local.env, what it controls, how to change it, and where each value flows through the system.
This section is the runtime config layer of the dotfiles. After the installation lands the files on disk and the wizard writes your answers, everything else — sort-downloads, archive-project, Time Machine schedule, the SMB share auto-mount, your git identity — reads from one file: ~/.config/dotfiles/local.env.
For the inventory of what gets installed in the first place, see Installing.
All supported keys
Every key supported by local.env. Defaults kick in for anything not set — so a fresh-install user who skips the wizard entirely still gets a functioning (NAS-free) setup.
| Key | Default | Effect |
|---|---|---|
CODE_DIR | $HOME/Code | Where archive-project scans for repos; the dev alias jumps here. |
GIT_USER_NAME / GIT_USER_EMAIL | empty | Written to |
HAS_NAS | false | Master switch. |
NAS_HOST | empty | IP or hostname. Substituted into |
NAS_USER | empty | Your account on the NAS — appears in SMB URLs. |
NAS_SHARE_MEDIA | media | Share name for general file storage. |
NAS_MOUNT_MEDIA | /Volumes/media | Where it mounts on this Mac. |
HAS_TIMEMACHINE_NAS | false | Install the monthly Time Machine LaunchDaemon + helpers. |
NAS_SHARE_TM | timemachine | Separate share for Time Machine (needs exclusive use). |
TM_SCHEDULE_MONTHLY | true | Replace Apple’s hourly schedule with 1st-of-month-at-03:00. |
ENABLE_SORT_DOWNLOADS | false | Install bin/sort-downloads. |
SORT_DOWNLOADS_BACKGROUND | true | Run via LaunchAgent (vs. manual sort-downloads only). |
ENABLE_ARCHIVE_PROJECT | false | Install bin/archive-project + its man page. |
ARCHIVE_AFTER_MONTHS | 1 | Default “old enough to archive” threshold (months). |
How to change a value
Two paths, both supported:
./install.sh --reconfigure $EDITOR ~/.config/dotfiles/local.env If you flipped a feature on or off (e.g., switched ENABLE_SORT_DOWNLOADS from false to true), follow up with:
./install.sh --only=symlinks,launchd That’s because 60-symlinks.sh is what creates the ~/.local/bin/sort-downloads symlink and 70-launchd.sh is what installs the LaunchAgent — both gated on ENABLE_SORT_DOWNLOADS. The wizard updates local.env but doesn’t re-fire the install modules.
How it links to the rest of the docs
The runtime config wires into:
- NAS workflow — sort-downloads, screenshot direct-save, archive-project, the SMB auto-mount.
- Backup (Time Machine) — the monthly LaunchDaemon, share setup, helper scripts.
- macOS tweaks — the
defaults writeinvocations. - Maintenance —
bin/update,clean-node-modules,bigfiles. - Customize recipes — adding aliases, functions, brew packages, etc.
Where to go next
- Your local.env in detail — you’re here.
- Customize recipes — practical “I want to add X” walkthroughs.
- Or jump back to Installing for the inventory.