Prometheus

Manual install — git clone + ./install.sh

Clone the repo first, read what you're about to run, then drive the installer with --only, --skip, --dry-run, --modules, and --man.

If you’d rather see the code before running it, clone the repo, read what you want, then run the installer manually. Same end result as the one-liner — just without the curl-to-bash trust.

Clone and run
# Clone
git clone https://github.com/rafay99-epic/dotfiles.git ~/dotfiles
cd ~/dotfiles

# Run installer

chmod +x install.sh
./install.sh

The first run will drop you into the same first-run wizard as the curl path, then the module picker.

Flags worth knowing

FlagWhat it does
--dry-run

Preview every action without making any changes. Symlinks aren’t created, Homebrew isn’t invoked, no defaults write runs.

--yes / -yRun all modules, auto-confirm every sub-prompt. Skips the picker.
--only=symlinks,macosRun only these modules (skips the picker). Mutually exclusive with --skip.
--skip=wm,homebrewRun everything except these.
--reconfigure

Re-run the wizard, re-asking every question. Use this to change your NAS, fix a typo, flip a feature on/off.

--modulesPrint the available module list and exit.
--manOpen the full manpage.
--helpShort usage summary.

CI-friendly env-var equivalent of --only:

INSTALL_MODULES=symlinks,macos ./install.sh

The interactive picker

install.sh is a thin orchestrator. Each major step lives in its own install.d/<NN-name>.sh file that defines one function: module_<name>(). With no flags, the orchestrator builds a list of those modules and hands you an arrow-key picker.

The picker is pure bash — no whiptail / dialog dependency, so it works on a bare macOS install before Homebrew has installed anything else.

KeyAction

/ (or j / k)

Move the cursor
SpaceToggle the highlighted module
aSelect all
nClear all
rReset to defaults
EnterConfirm and run

q / Esc

Quit without running

The footer shows a live Selected: X/8 counter. The frame is redrawn flicker-free as a single printf per tick.

Selection precedence

When multiple selection inputs are present, the orchestrator resolves them in this order (highest first):

  1. --only=
  2. --skip=
  3. --yes
  4. $INSTALL_MODULES env var
  5. Interactive picker (default)

--only and --skip are mutually exclusive — the orchestrator errors out if both are given.

Examples

./install.sh                          # interactive arrow-key picker
./install.sh --dry-run                # preview every action, no changes
./install.sh --yes                    # run all modules, auto-Y every prompt
./install.sh --only=symlinks,macos    # run only these modules (skip picker)
./install.sh --skip=wm,homebrew       # run everything EXCEPT these
./install.sh --modules                # print available module list
./install.sh --man                    # open the man page
./install.sh --help

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