Prometheus

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-project scans this directory recursively for stale git repos; the dev shell 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.local if it exists, else git 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.local if it exists, else git 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 n short-circuits the rest of the wizardHAS_TIMEMACHINE_NAS, ENABLE_SORT_DOWNLOADS, and ENABLE_ARCHIVE_PROJECT are all force-set to false and 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.template at 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-project write 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-monthly LaunchDaemon and tm-status / tm-backup helpers. 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.sh runs sudo tmutil disable and installs the monthly LaunchDaemon at /Library/LaunchDaemons/. When false, 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-downloads into ~/.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, the com.prometheus.sort-downloads LaunchAgent is installed and fires on every file change in ~/Downloads. When false, the script is on $PATH but nothing triggers it — run sort-downloads by 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-project and registers man/archive-project.1 so archive-project --man works. 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 with archive-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, ENABLE_SORT_DOWNLOADS, ENABLE_ARCHIVE_PROJECT are forced to false.

HAS_TIMEMACHINE_NAS=nNAS_SHARE_TM and TM_SCHEDULE_MONTHLY prompts.
ENABLE_SORT_DOWNLOADS=nSORT_DOWNLOADS_BACKGROUND prompt.
ENABLE_ARCHIVE_PROJECT=nARCHIVE_AFTER_MONTHS prompt.
Empty input on any text/int questionNothing — 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

On this page
Edit this page on GitHub Last updated

Built by rafay99-epic · MIT License

Tokyo Night · macOS · SketchyBar · AeroSpace · Ghostty · Zsh · Fish