Prometheus

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 answerWhat runs / what doesn’t
HAS_NAS=true

Renders the .inetloc Login Item with your NAS values · symlinks the media shell alias · enables the NAS pre-flight checks in sort-downloads / archive-project.

HAS_TIMEMACHINE_NAS=true

Installs tm-monthly LaunchDaemon (with sudo tmutil disable) · symlinks tm-status + tm-backup helpers.

ENABLE_SORT_DOWNLOADS=true

Symlinks bin/sort-downloads. If SORT_DOWNLOADS_BACKGROUND=true, also installs the LaunchAgent that fires it on every ~/Downloads file change.

ENABLE_ARCHIVE_PROJECT=trueSymlinks 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.
On this page
Edit this page on GitHub Last updated

Built by rafay99-epic · MIT License

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