docs: Pillar 3 Phase A — script & menu audit inventory

bin/utils/nomarchy-docs-scripts walks features/scripts/utils,
core/system/scripts, and themes/engine/scripts; emits a populated
SCRIPTS.md with three tables:

- Scripts (136): location, top callers, status (kept / unused?).
- Missing references: tokens grepped from code with no script file
  (75 rows tagged missing).
- Menu items: every case arm in nomarchy-menu's show_*_menu
  functions, mapped to its target command and tagged.

Status histogram: 158 kept, 75 missing, 45 unused?. Phase B opens
per-batch PRs that refine missing → port-from-omarchy /
delete-dead / stub-with-notify, and unused? → kept / delete-dead.

Roadmap and AGENT.md updated to point at the generator and
explain the Phase B workflow. Now-column row replaced with the
Phase B handoff.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-04-25 21:59:06 +01:00
parent bf30cd07d8
commit 86bc0e570b
4 changed files with 536 additions and 76 deletions

View File

@@ -102,15 +102,13 @@ If the user asks "what's next?", reply with the Now column items in 23 senten
This is the **largest single open work item**. Phase A (inventory) hasn't run yet; `docs/SCRIPTS.md` is just scaffolding. The user explicitly flagged this pillar as important.
To pick it up:
Phase A shipped. The inventory lives at [`docs/SCRIPTS.md`](SCRIPTS.md) and is regenerated by:
1. Run the three generator commands at the top of `docs/SCRIPTS.md`.
2. Populate the **Scripts** table with one row per `nomarchy-*` file (location, callers, status `unknown` for now).
3. Populate the **Menu items** table by walking each `show_*_menu` function in `features/scripts/utils/nomarchy-menu`.
4. Tag every row with one of: `kept` / `port-from-omarchy` / `delete-dead` / `stub-with-notify` / `unknown`. Triage live, but leave anything ambiguous as `unknown`.
5. Land it as **one PR** (the inventory PR). Don't start porting in the same change.
```bash
./bin/utils/nomarchy-docs-scripts --out docs/SCRIPTS.md
```
Then Phase B is per-script: one PR per ~10 scripts, branch named `wave/audit-<batch>`. Each PR closes specific rows in `docs/SCRIPTS.md`.
It tags every row with one of `kept` / `unused?` / `missing`. Phase B is the per-batch porting/removal: pick ~10 rows tagged `missing` or `unused?`, decide one of `port-from-omarchy` / `delete-dead` / `stub-with-notify`, and ship as one PR per batch on a `wave/audit-<batch>` branch. Each PR description should reference the rows it closes; reviewers spot-check that every caller of a removed/renamed script is updated.
---

View File

@@ -20,7 +20,7 @@ Guardrails (apply when adding anything):
### Now (ready to pick up)
- **Software-profile multi-select in the installer.** Carryover from the old TODO. Add a `gum choose --no-limit` step in `installer/install.sh` (between hardware and impermanence) for opt-in profiles (Dev, Gaming, Office, Media, …). Each profile maps to a list of `home.packages` and optional `nomarchy.system.*` toggles emitted into the generated `home.nix`/`system.nix`.
- **Menu cleanup of orphaned references.** Walk `features/scripts/utils/nomarchy-menu` (379 lines, 23 submenus) and either wire each menu item to a real script or replace the `case` arm with a stubbed `notify-send` until the script is ported. See Pillar 3 below.
- **Audit Phase B (per-batch).** Phase A populated [`docs/SCRIPTS.md`](SCRIPTS.md) with 158 `kept`, 75 `missing`, and 45 `unused?` rows via the new `bin/utils/nomarchy-docs-scripts` generator. Phase B is the per-batch porting/removal: pick ~10 rows tagged `missing` or `unused?`, decide `port-from-omarchy` / `delete-dead` / `stub-with-notify`, and ship as one PR per batch.
- **Form-factor → laptop preset auto-enable.** When the installer writes `nomarchy.system.formFactor = "laptop"`, also flip on a yet-to-be-built laptop preset (TLP, brightness keys, lid handling). The option exists; the preset module doesn't.
### Next (bigger lifts that build on Now)
@@ -130,5 +130,6 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
- _2026-04-25_ — `docs/KEYBINDINGS.md` auto-generator. New repo-tooling script `bin/utils/nomarchy-docs-keybindings` parses every `bindd =` / `bindeld =` line into a Markdown doc; README's keybinding table slimmed to highlights + link.
- _2026-04-25_ — Installer disk picker shows NAME / SIZE / TYPE / VENDOR / MODEL / SERIAL columns instead of bare `lsblk`. Type derived from `ROTA` + `TRAN` (NVMe / USB / SSD / HDD). Filters loop, ram, zram, sr.
- _2026-04-25_ — Pillar 3 Phase A: script & menu audit. New `bin/utils/nomarchy-docs-scripts` generator produces `docs/SCRIPTS.md` with 136 scripts and the menu walk pre-tagged via heuristics (`kept` / `unused?` / `missing`). Phase B (per-batch porting / removal) opens.
- _2026-04-25_ — Installer prompts for keyboard layout + locale, applies live; new `nomarchy.{system,}.formFactor` option; waybar drops battery widget on desktop; nm-applet visibility fix in default theme; live-ISO baseline keymap/locale (`a7e7fa9`).
- _2026-04-25_ — `docs/OPTIONS.md` reference; `docs/MIGRATION.md` linked from `README.md` (`3cb012b`, `6ef28f0`).

View File

@@ -1,84 +1,317 @@
# Nomarchy Script & Menu Audit
This is the working table for [Pillar 3 of the roadmap](ROADMAP.md#3-pillar-script--menu-audit). It catalogues every `nomarchy-*` script, its callers, and an action tag.
Auto-generated table for [Pillar 3 of the roadmap](ROADMAP.md#3-pillar-script--menu-audit).
**Do not edit by hand.** Regenerate after script or menu changes:
> **Status as of writing:** scaffolding only. Phase A (the inventory PR) has not yet populated this table — see the roadmap for the methodology. Add rows as you triage.
```bash
./bin/utils/nomarchy-docs-scripts --out docs/SCRIPTS.md
```
The status column uses a Phase A heuristic — `kept` / `unused?` / `missing`.
Phase B (per-batch PRs) refines those into `port-from-omarchy`,
`delete-dead`, or `stub-with-notify` and updates the rows.
## Status legend
- `kept`works on Nomarchy, no change needed.
- `port-from-omarchy` — exists upstream, needs adapting (drop pacman/yay/AUR, repath to NixOS, talk to `nomarchy.system.*` options).
- `delete-dead` — neither used nor needed; remove and update callers.
- `stub-with-notify` — temporarily replaced with a `notify-send "Not yet implemented in Nomarchy"` until real work is scheduled.
- `unknown` — needs a deeper look.
- `kept`script exists and is called from somewhere outside its own directory.
- `unused?` — script exists but no caller was found. Could be dead, could be
intentional public API. Phase B triage decides.
- `missing` — referenced from code but no script file exists. Phase B triage
decides whether to port from Omarchy upstream, delete the caller, or stub
with `notify-send`.
- `port-from-omarchy` — Phase B verdict: lift the upstream Omarchy script,
rewrite for NixOS paths.
- `delete-dead` — Phase B verdict: remove and update callers.
- `stub-with-notify` — Phase B verdict: temporary `notify-send` stub.
## Generating the inventory
## Scripts (136)
The triage PR should regenerate this table by running these commands in repo root:
```bash
# 1. all nomarchy-* scripts
find core/system/scripts features/scripts/utils themes/engine/scripts \
-type f -name 'nomarchy-*' -printf '%f\t%h\n' | sort
# 2. all nomarchy-* callers
grep -rohE 'nomarchy-[a-z][a-z0-9-]*' core/ features/ themes/ installer/ bin/ \
| sort -u
# 3. orphaned callers (in code but no script)
comm -23 <(grep -rohE 'nomarchy-[a-z][a-z0-9-]*' core/ features/ themes/ installer/ bin/ | sort -u) \
<(find core/system/scripts features/scripts/utils themes/engine/scripts \
-type f -name 'nomarchy-*' -printf '%f\n' | sort -u)
```
## Scripts
| Script | Location | Used by | Status | Notes |
| Script | Location | Callers | Status | Notes |
| --- | --- | --- | --- | --- |
| _(rows go here — Phase A populates this section)_ | | | `unknown` | |
| `nomarchy-battery-capacity` | `core/system/scripts` | core/system/scripts/nomarchy-battery-status | `kept` | |
| `nomarchy-battery-monitor` | `core/system/scripts` | features/scripts/battery-monitor.nix | `kept` | |
| `nomarchy-battery-present` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-battery-remaining` | `core/system/scripts` | core/system/scripts/nomarchy-battery-monitor,core/system/scripts/nomarchy-battery-status | `kept` | |
| `nomarchy-battery-remaining-time` | `core/system/scripts` | core/system/scripts/nomarchy-battery-status | `kept` | |
| `nomarchy-battery-status` | `core/system/scripts` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/system/scripts/nomarchy-battery-capacity, +1 more | `kept` | |
| `nomarchy-brightness-display` | `core/system/scripts` | core/home/config/nomarchy/default/hypr/bindings/media.conf,core/home/config/nomarchy/default/hypr/bindings/utilities.conf | `kept` | |
| `nomarchy-brightness-display-apple` | `core/system/scripts` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf | `kept` | |
| `nomarchy-brightness-keyboard` | `core/system/scripts` | core/home/config/nomarchy/default/hypr/bindings/media.conf | `kept` | |
| `nomarchy-build-iso` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-cmd-audio-switch` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/media.conf | `kept` | |
| `nomarchy-cmd-present` | `features/scripts/utils` | features/scripts/utils/nomarchy-launch-editor,features/scripts/utils/nomarchy-voxtype-remove, +3 more | `kept` | |
| `nomarchy-cmd-screenrecord` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc, +1 more | `kept` | |
| `nomarchy-cmd-screensaver` | `features/scripts/utils` | features/scripts/utils/nomarchy-launch-screensaver | `kept` | |
| `nomarchy-cmd-screenshot` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-cmd-share` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-cmd-terminal-cwd` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf | `kept` | |
| `nomarchy-config-direct-boot` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-drive-info` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select | `kept` | |
| `nomarchy-drive-select` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-info,features/scripts/utils/nomarchy-drive-set-password | `kept` | |
| `nomarchy-drive-set-password` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-env-update` | `features/scripts/utils` | core/home/bash.nix,core/system/scripts/nomarchy-pkg-add, +9 more | `kept` | |
| `nomarchy-font-current` | `themes/engine/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-font-list` | `themes/engine/scripts` | features/scripts/utils/nomarchy-menu,features/scripts/utils/nomarchy-welcome | `kept` | |
| `nomarchy-font-set` | `themes/engine/scripts` | features/scripts/utils/nomarchy-menu,features/scripts/utils/nomarchy-welcome, +2 more | `kept` | |
| `nomarchy-haptic-touchpad` | `core/system/scripts` | core/system/hardware.nix | `kept` | |
| `nomarchy-hibernation-available` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-hibernation-remove` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-hibernation-setup` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-hook` | `features/scripts/utils` | core/system/scripts/nomarchy-battery-monitor,themes/engine/scripts/nomarchy-font-set, +1 more | `kept` | |
| `nomarchy-hw-asus-rog` | `core/system/scripts` | features/scripts/utils/nomarchy-on-boot | `kept` | |
| `nomarchy-hw-framework16` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-hw-intel` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-hw-intel-ptl` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-hw-match` | `core/system/scripts` | core/system/scripts/nomarchy-hw-framework16,core/system/scripts/nomarchy-hw-surface, +1 more | `kept` | |
| `nomarchy-hw-surface` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-hw-vulkan` | `core/system/scripts` | features/scripts/utils/nomarchy-voxtype-install | `kept` | |
| `nomarchy-launch-about` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-launch-audio` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +2 more | `kept` | |
| `nomarchy-launch-bluetooth` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +1 more | `kept` | |
| `nomarchy-launch-browser` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf | `kept` | |
| `nomarchy-launch-editor` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf, +2 more | `kept` | |
| `nomarchy-launch-floating-terminal-with-presentation` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc, +2 more | `kept` | |
| `nomarchy-launch-or-focus` | `features/scripts/utils` | core/home/config/nomarchy/extensions/menu.sh,features/desktop/hyprland/config/bindings.conf, +7 more | `kept` | |
| `nomarchy-launch-or-focus-tui` | `features/scripts/utils` | core/home/config/nomarchy/extensions/menu.sh,features/desktop/waybar/config/config.jsonc, +4 more | `kept` | |
| `nomarchy-launch-or-focus-webapp` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf | `kept` | |
| `nomarchy-launch-screensaver` | `features/scripts/utils` | features/desktop/idle.nix,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-launch-tui` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/hyprland/config/bindings.conf, +2 more | `kept` | |
| `nomarchy-launch-walker` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/clipboard.conf,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +1 more | `kept` | |
| `nomarchy-launch-webapp` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf, +7 more | `kept` | |
| `nomarchy-launch-wifi` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +3 more | `kept` | |
| `nomarchy-lock-screen` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy/extensions/menu.sh, +2 more | `kept` | |
| `nomarchy-menu` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +6 more | `kept` | |
| `nomarchy-menu-keybindings` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-migrate-state` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-notification-dismiss` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-npx-install` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-on-boot` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/autostart.conf | `kept` | |
| `nomarchy-pkg-add` | `core/system/scripts` | features/scripts/utils/nomarchy-voxtype-install,features/scripts/utils/nomarchy-windows-vm | `kept` | |
| `nomarchy-pkg-remove` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-powerprofiles-list` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-preflight-migration` | `core/system/scripts` | features/scripts/utils/nomarchy-env-update,features/scripts/utils/nomarchy-migrate-state | `kept` | |
| `nomarchy-refresh-config` | `features/scripts/utils` | features/scripts/utils/nomarchy-refresh-fastfetch | `kept` | |
| `nomarchy-refresh-fastfetch` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-restart-app` | `features/scripts/utils` | core/system/scripts/nomarchy-restart-xcompose,features/desktop/scripts/nomarchy-restart-hypridle, +3 more | `kept` | |
| `nomarchy-restart-bluetooth` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-restart-btop` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-restart-opencode` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-restart-pipewire` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-restart-terminal` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-restart-tmux` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-restart-trackpad` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-restart-wifi` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-restart-xcompose` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-setup-dns` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-setup-fido2` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-setup-fingerprint` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-show-done` | `themes/engine/scripts` | features/scripts/utils/nomarchy-launch-floating-terminal-with-presentation | `kept` | |
| `nomarchy-show-logo` | `themes/engine/scripts` | features/scripts/utils/nomarchy-launch-floating-terminal-with-presentation | `kept` | |
| `nomarchy-snapshot` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-state` | `features/scripts/utils` | core/system/scripts/nomarchy-system-reboot,core/system/scripts/nomarchy-system-shutdown, +1 more | `kept` | |
| `nomarchy-state-write` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-sudo-keepalive` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-sudo-passwordless-toggle` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-sudo-reset` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-sync` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-system-logout` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-system-reboot` | `core/system/scripts` | core/system/scripts/nomarchy-hibernation-setup,core/system/scripts/nomarchy-toggle-hybrid-gpu, +1 more | `kept` | |
| `nomarchy-system-shutdown` | `core/system/scripts` | core/home/config/nomarchy/extensions/menu.sh,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-sys-update` | `features/scripts/utils` | core/home/bash.nix,core/system/scripts/nomarchy-setup-dns, +5 more | `kept` | |
| `nomarchy-test-installer` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-vm | `kept` | |
| `nomarchy-test-live-iso` | `features/scripts/utils` | hosts/live-iso.nix | `kept` | |
| `nomarchy-test-vm` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-live-iso | `kept` | |
| `nomarchy-theme-bg-install` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-bg-next` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-bg-set` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-current` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-install` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-list` | `themes/engine/scripts` | features/scripts/utils/nomarchy-welcome | `kept` | |
| `nomarchy-theme-refresh` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-remove` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-set` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,features/scripts/utils/nomarchy-welcome, +7 more | `kept` | |
| `nomarchy-theme-set-keyboard` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot | `kept` | |
| `nomarchy-theme-set-keyboard-asus-rog` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
| `nomarchy-theme-set-keyboard-f16` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
| `nomarchy-theme-set-obsidian` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-theme-set-templates` | `themes/engine/scripts` | themes/engine/scripts/nomarchy-theme-set | `kept` | |
| `nomarchy-theme-set-vscode` | `themes/engine/scripts` | — | `unused?` | |
| `nomarchy-themes-prebuild` | `themes/engine/scripts` | installer/install.sh | `kept` | |
| `nomarchy-theme-update` | `themes/engine/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-toggle-hybrid-gpu` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-toggle-idle` | `core/system/scripts` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +2 more | `kept` | |
| `nomarchy-toggle-nightlight` | `themes/engine/scripts` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-toggle-notification-silencing` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +1 more | `kept` | |
| `nomarchy-toggle-suspend` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-toggle-waybar` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-tui-install` | `features/scripts/utils` | features/scripts/utils/nomarchy-tui-remove-all | `kept` | |
| `nomarchy-tui-remove` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-tui-remove-all` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-tz-select` | `core/system/scripts` | features/desktop/waybar/config/config.jsonc,features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-update` | `core/system/scripts` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc, +2 more | `kept` | |
| `nomarchy-update-available` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
| `nomarchy-update-time` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
| `nomarchy-voxtype-config` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
| `nomarchy-voxtype-install` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-voxtype-model` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
| `nomarchy-voxtype-remove` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-voxtype-status` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
| `nomarchy-webapp-handler-hey` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-webapp-handler-zoom` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-webapp-install` | `features/scripts/utils` | features/scripts/utils/nomarchy-webapp-remove-all | `kept` | |
| `nomarchy-webapp-remove` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-webapp-remove-all` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-welcome` | `features/scripts/utils` | — | `unused?` | |
| `nomarchy-wifi-powersave` | `core/system/scripts` | — | `unused?` | |
| `nomarchy-windows-vm` | `features/scripts/utils` | — | `unused?` | |
## Menu items (`features/scripts/utils/nomarchy-menu`)
## Missing references
The menu has 23 `show_*_menu` functions. List each entry with its target script and tag whether it's wired, broken, or an Omarchy leftover.
Tokens grepped from `core/`, `features/`, `themes/`, `installer/`, `hosts/`, `bin/`, `lib/` that have no matching script file.
| Submenu | Entry | Calls | Status | Notes |
| --- | --- | --- | --- | --- |
| _(rows go here — Phase A populates this section)_ | | | `unknown` | |
| Token | Referenced in | Status |
| --- | --- | --- |
| `nomarchy-backup` | features/scripts/utils/nomarchy-sync | `missing` |
| `nomarchy-cmd-` | core/home/config/nomarchy/default/hypr/bindings/media.conf,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +12 more | `missing` |
| `nomarchy-docs-keybindings` | bin/utils/nomarchy-docs-keybindings | `missing` |
| `nomarchy-docs-scripts` | bin/utils/nomarchy-docs-scripts | `missing` |
| `nomarchy-dryrun` | installer/install.sh | `missing` |
| `nomarchy-font` | core/system/fonts.nix,features/scripts/utils/nomarchy-menu, +5 more | `missing` |
| `nomarchy-font-selector` | themes/engine/switcher.nix | `missing` |
| `nomarchy-hyprland-active-window-transparency-toggle` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf | `missing` |
| `nomarchy-hyprland-monitor-scaling-cycle` | core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf,features/scripts/utils/nomarchy-menu, +1 more | `missing` |
| `nomarchy-hyprland-window-close-all` | core/home/config/nomarchy/default/hypr/bindings/tiling.conf,core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf, +3 more | `missing` |
| `nomarchy-hyprland-window-gaps-toggle` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-hyprland-window-pop` | core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf,features/desktop/scripts/nomarchy-hyprland-window-pop | `missing` |
| `nomarchy-hyprland-window-single-square-aspect-toggle` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-hyprland-workspace-layout-toggle` | core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf,features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-install` | hosts/installer-iso.nix,installer/install.sh | `missing` |
| `nomarchy-installer-vm` | features/scripts/utils/nomarchy-test-installer | `missing` |
| `nomarchy-launch-` | core/home/config/nomarchy/default/hypr/bindings/clipboard.conf,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +22 more | `missing` |
| `nomarchy-luks` | installer/disko-golden.nix,installer/install.sh | `missing` |
| `nomarchy-manual` | features/scripts/utils/nomarchy-menu,themes/engine/scripts/nomarchy-theme-install | `missing` |
| `nomarchy-menu-rows` | bin/utils/nomarchy-docs-scripts | `missing` |
| `nomarchy-nopasswd-` | core/system/scripts/nomarchy-sudo-passwordless-toggle | `missing` |
| `nomarchy-pkg` | core/system/scripts/nomarchy-pkg-add,core/system/scripts/nomarchy-pkg-remove, +3 more | `missing` |
| `nomarchy-pkg-` | core/system/scripts/nomarchy-pkg-add,core/system/scripts/nomarchy-pkg-remove, +3 more | `missing` |
| `nomarchy-pkg-drop` | features/scripts/utils/nomarchy-voxtype-remove | `missing` |
| `nomarchy-plymouth` | themes/engine/plymouth.nix | `missing` |
| `nomarchy-refresh-` | features/scripts/utils/nomarchy-refresh-config,features/scripts/utils/nomarchy-refresh-fastfetch | `missing` |
| `nomarchy-restart` | core/system/scripts/nomarchy-restart-xcompose,features/desktop/scripts/nomarchy-restart-hypridle, +8 more | `missing` |
| `nomarchy-restart-` | core/system/scripts/nomarchy-restart-xcompose,features/desktop/scripts/nomarchy-restart-hypridle, +8 more | `missing` |
| `nomarchy-restart-hypridle` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-restart-hyprsunset` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-restart-swayosd` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-restart-walker` | features/scripts/utils/nomarchy-menu,themes/engine/scripts/nomarchy-theme-set | `missing` |
| `nomarchy-restart-waybar` | features/scripts/utils/nomarchy-menu,features/scripts/utils/nomarchy-voxtype-install, +2 more | `missing` |
| `nomarchy-rollback` | installer/disko-golden.nix | `missing` |
| `nomarchy-screenrecord-filename` | features/scripts/utils/nomarchy-cmd-screenrecord | `missing` |
| `nomarchy-scripts` | core/system/scripts/nomarchy-preflight-migration,features/scripts/battery-monitor.nix, +1 more | `missing` |
| `nomarchy-sddm-theme` | themes/engine/sddm.nix | `missing` |
| `nomarchy-setup-` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-skill` | core/home/configs.nix | `missing` |
| `nomarchy-swayosd-brightness` | core/system/scripts/nomarchy-brightness-display,core/system/scripts/nomarchy-brightness-display-apple, +1 more | `missing` |
| `nomarchy-swayosd-kbd-brightness` | core/system/scripts/nomarchy-brightness-keyboard,features/desktop/scripts/nomarchy-swayosd-kbd-brightness | `missing` |
| `nomarchy-system-scripts` | core/system/hardware.nix,core/system/scripts-derivation.nix, +1 more | `missing` |
| `nomarchy-theme` | features/scripts/utils/nomarchy-menu,features/scripts/utils/nomarchy-on-boot, +12 more | `missing` |
| `nomarchy-theme-` | features/scripts/utils/nomarchy-menu,features/scripts/utils/nomarchy-on-boot, +12 more | `missing` |
| `nomarchy-theme-engine-scripts` | themes/engine/scripts.nix | `missing` |
| `nomarchy-theme-selector` | themes/engine/switcher.nix | `missing` |
| `nomarchy-themes-no-images` | themes/engine/files.nix | `missing` |
| `nomarchy-toggle-` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +3 more | `missing` |
| `nomarchy-toggle-screensaver` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-update-` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc, +1 more | `missing` |
| `nomarchy-update-firmware` | features/scripts/utils/nomarchy-menu | `missing` |
| `nomarchy-version` | features/scripts/utils/nomarchy-snapshot | `missing` |
| `nomarchy-vm` | features/scripts/utils/nomarchy-test-vm | `missing` |
| `nomarchy-wallpaper` | core/home/config/nomarchy/default/hypr/autostart.conf,features/desktop/hyprland/default.nix, +2 more | `missing` |
| `nomarchy-wallpaper-selector` | themes/engine/switcher.nix | `missing` |
| `nomarchy-webapp-handler` | features/scripts/utils/nomarchy-webapp-remove,features/scripts/utils/nomarchy-webapp-remove-all | `missing` |
| `nomarchy-windows` | features/scripts/utils/nomarchy-windows-vm | `missing` |
## Known orphans (snapshot at audit kickoff)
## Menu items
These appear as callers in code but have no matching script today. Each needs triage:
Walked from `features/scripts/utils/nomarchy-menu`. Each `case` arm in a `show_*_menu` function becomes one row.
- `nomarchy-backup`
- `nomarchy-debug`
- `nomarchy-dryrun`
- `nomarchy-font`
- `nomarchy-font-selector`
- `nomarchy-install`
- `nomarchy-install-docker-dbs`
- `nomarchy-installer-vm`
- `nomarchy-luks`
- `nomarchy-manual`
- `nomarchy-pkg`
- `nomarchy-pkg-aur-add`
- `nomarchy-pkg-drop`
- `nomarchy-pkg-install`
- `nomarchy-plymouth`
- `nomarchy-refresh-hyprland`
- `nomarchy-refresh-waybar`
- `nomarchy-reinstall`
- `nomarchy-rollback`
- `nomarchy-screenrecord-filename`
- `nomarchy-sddm-theme`
- `nomarchy-skill`
- `nomarchy-theme`
- `nomarchy-theme-next`
- `nomarchy-theme-selector`
- `nomarchy-themes-no-images`
- `nomarchy-update-firmware`
- `nomarchy-upload-log`
- `nomarchy-version`
- `nomarchy-vm`
- `nomarchy-wallpaper`
| Submenu | Entry | Calls | Status |
| --- | --- | --- | --- |
| `show_learn_menu` | Keybindings | `nomarchy-menu-keybindings` | `kept` |
| `show_learn_menu` | Nomarchy | `nomarchy-launch-webapp` | `kept` |
| `show_learn_menu` | Hyprland | `nomarchy-launch-webapp` | `kept` |
| `show_learn_menu` | Arch | `nomarchy-launch-webapp` | `kept` |
| `show_learn_menu` | Bash | `nomarchy-launch-webapp` | `kept` |
| `show_learn_menu` | Neovim | `nomarchy-launch-webapp` | `kept` |
| `show_trigger_menu` | Capture | `_(inline)_` | `kept` |
| `show_trigger_menu` | Share | `_(inline)_` | `kept` |
| `show_trigger_menu` | Toggle | `_(inline)_` | `kept` |
| `show_trigger_menu` | Hardware | `_(inline)_` | `kept` |
| `show_capture_menu` | Screenshot | `nomarchy-cmd-screenshot` | `kept` |
| `show_capture_menu` | Screenrecord | `_(inline)_` | `kept` |
| `show_capture_menu` | Color | `_(inline)_` | `kept` |
| `show_share_menu` | Clipboard | `nomarchy-cmd-share` | `kept` |
| `show_share_menu` | File | `nomarchy-cmd-share` | `kept` |
| `show_share_menu` | Folder | `nomarchy-cmd-share` | `kept` |
| `show_toggle_menu` | Screensaver | `nomarchy-toggle-screensaver` | `missing` |
| `show_toggle_menu` | Nightlight | `nomarchy-toggle-nightlight` | `kept` |
| `show_toggle_menu` | Idle | `nomarchy-toggle-idle` | `kept` |
| `show_toggle_menu` | Bar | `nomarchy-toggle-waybar` | `kept` |
| `show_toggle_menu` | Layout | `nomarchy-hyprland-workspace-layout-toggle` | `missing` |
| `show_toggle_menu` | Ratio | `nomarchy-hyprland-window-single-square-aspect-toggle` | `missing` |
| `show_toggle_menu` | Gaps | `nomarchy-hyprland-window-gaps-toggle` | `missing` |
| `show_toggle_menu` | Scaling | `nomarchy-hyprland-monitor-scaling-cycle` | `missing` |
| `show_style_menu` | Theme | `_(inline)_` | `kept` |
| `show_style_menu` | Font | `_(inline)_` | `kept` |
| `show_style_menu` | Background | `_(inline)_` | `kept` |
| `show_style_menu` | Hyprland | `_(inline)_` | `kept` |
| `show_style_menu` | Screensaver | `_(inline)_` | `kept` |
| `show_style_menu` | About | `_(inline)_` | `kept` |
| `show_setup_menu` | Audio | `nomarchy-launch-audio` | `kept` |
| `show_setup_menu` | Wifi | `nomarchy-launch-wifi` | `kept` |
| `show_setup_menu` | Bluetooth | `nomarchy-launch-bluetooth` | `kept` |
| `show_setup_menu` | Power | `_(inline)_` | `kept` |
| `show_setup_menu` | System | `_(inline)_` | `kept` |
| `show_setup_menu` | Monitors | `_(inline)_` | `kept` |
| `show_setup_menu` | Keybindings | `_(inline)_` | `kept` |
| `show_setup_menu` | Input | `_(inline)_` | `kept` |
| `show_setup_menu` | DNS | `nomarchy-setup-dns` | `kept` |
| `show_setup_menu` | Security | `_(inline)_` | `kept` |
| `show_setup_menu` | Config | `_(inline)_` | `kept` |
| `show_setup_security_menu` | Fingerprint | `nomarchy-setup-fingerprint` | `kept` |
| `show_setup_security_menu` | Fido2 | `nomarchy-setup-fido2` | `kept` |
| `show_setup_config_menu` | Defaults | `_(inline)_` | `kept` |
| `show_setup_config_menu` | Hyprland | `_(inline)_` | `kept` |
| `show_setup_config_menu` | Hypridle | `nomarchy-restart-hypridle` | `missing` |
| `show_setup_config_menu` | Hyprlock | `_(inline)_` | `kept` |
| `show_setup_config_menu` | Hyprsunset | `nomarchy-restart-hyprsunset` | `missing` |
| `show_setup_config_menu` | Swayosd | `nomarchy-restart-swayosd` | `missing` |
| `show_setup_config_menu` | Walker | `nomarchy-restart-walker` | `missing` |
| `show_setup_config_menu` | Waybar | `nomarchy-restart-waybar` | `missing` |
| `show_setup_config_menu` | XCompose | `nomarchy-restart-xcompose` | `kept` |
| `show_setup_config_menu` | Overrides | `_(inline)_` | `kept` |
| `show_setup_system_menu` | Suspend | `nomarchy-toggle-suspend` | `kept` |
| `show_update_menu` | Nomarchy | `nomarchy-update` | `kept` |
| `show_update_menu` | Themes | `nomarchy-theme-update` | `kept` |
| `show_update_menu` | Process | `_(inline)_` | `kept` |
| `show_update_menu` | Hardware | `_(inline)_` | `kept` |
| `show_update_menu` | Firmware | `nomarchy-update-firmware` | `missing` |
| `show_update_menu` | Timezone | `nomarchy-tz-select` | `kept` |
| `show_update_menu` | Time | `nomarchy-update-time` | `kept` |
| `show_update_menu` | Password | `_(inline)_` | `kept` |
| `show_update_process_menu` | Hypridle | `nomarchy-restart-hypridle` | `missing` |
| `show_update_process_menu` | Hyprsunset | `nomarchy-restart-hyprsunset` | `missing` |
| `show_update_process_menu` | Swayosd | `nomarchy-restart-swayosd` | `missing` |
| `show_update_process_menu` | Walker | `nomarchy-restart-walker` | `missing` |
| `show_update_process_menu` | Waybar | `nomarchy-restart-waybar` | `missing` |
| `show_update_hardware_menu` | Audio | `nomarchy-restart-pipewire` | `kept` |
| `show_update_hardware_menu` | Wi-Fi | `nomarchy-restart-wifi` | `kept` |
| `show_update_hardware_menu` | Bluetooth | `nomarchy-restart-bluetooth` | `kept` |
| `show_update_password_menu` | Drive | `nomarchy-drive-set-password` | `kept` |
| `show_update_password_menu` | User | `_(inline)_` | `kept` |
| `show_system_menu` | Screensaver | `nomarchy-launch-screensaver` | `kept` |
| `show_system_menu` | Lock | `nomarchy-lock-screen` | `kept` |
| `show_system_menu` | Suspend | `_(inline)_` | `kept` |
| `show_system_menu` | Hibernate | `_(inline)_` | `kept` |
| `show_system_menu` | Logout | `nomarchy-system-logout` | `kept` |
| `show_system_menu` | Restart | `nomarchy-system-reboot` | `kept` |
| `show_system_menu` | Shutdown | `nomarchy-system-shutdown` | `kept` |
(Re-run the generator to refresh this list before each audit batch — the snapshot above is from `2026-04-25`.)