diff --git a/core/home/config/nomarchy-skill/SKILL.md b/core/home/config/nomarchy-skill/SKILL.md index d7f51a9..c55d0cd 100644 --- a/core/home/config/nomarchy-skill/SKILL.md +++ b/core/home/config/nomarchy-skill/SKILL.md @@ -244,6 +244,9 @@ nomarchy-theme-set # Apply theme (use "Tokyo Night" not "tokyo-nig nomarchy-theme-next # Cycle to next theme nomarchy-theme-bg-next # Cycle wallpaper nomarchy-theme-install # Install from git repo +nomarchy-theme-remove # Remove an installed extra theme +nomarchy-theme-refresh # Re-apply current theme from templates +nomarchy-theme-bg-install # Open backgrounds dir to drop in custom images ``` ### Keybindings @@ -311,6 +314,9 @@ nomarchy-debug --no-sudo --print # Debug info (ALWAYS use these flags) nomarchy-lock-screen # Lock screen nomarchy-system-shutdown # Shutdown nomarchy-system-reboot # Reboot +nomarchy-sudo-passwordless-toggle # Toggle 15-min passwordless sudo +nomarchy-sudo-reset # Clear sudo lockout / faillock +nomarchy-restart-trackpad # Reload intel_quicki2c (fixes dead THC trackpad) ``` **IMPORTANT:** Always run `nomarchy-debug` with `--no-sudo --print` flags to avoid interactive sudo prompts that will hang the terminal. @@ -338,6 +344,18 @@ nomarchy-voxtype-status # Running state (also shown in waybar) Toggle dictation with `SUPER+CTRL+X` after install. +### Virtualization + +```bash +nomarchy-windows-vm install # Provision a Windows VM via docker-compose +nomarchy-windows-vm launch # Connect to the VM (auto-stop on disconnect) +nomarchy-windows-vm launch -k # Connect, keep VM running after disconnect +nomarchy-windows-vm stop # Shut the VM down +nomarchy-windows-vm status # Show current state +``` + +Requires KVM (`/dev/kvm`) and Docker (enable via `nomarchy.system.virtualization.docker`). + ## Troubleshooting ```bash @@ -348,6 +366,7 @@ nomarchy-debug --no-sudo --print nomarchy-upload-log # Reset specific config to defaults +# Examples: nomarchy-refresh-fastfetch, nomarchy-refresh-hyprland, nomarchy-refresh-waybar nomarchy-refresh- # Refresh specific config file diff --git a/core/system/scripts/nomarchy-battery-present b/core/system/scripts/nomarchy-battery-present deleted file mode 100755 index fd8443f..0000000 --- a/core/system/scripts/nomarchy-battery-present +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -e - -# Returns true if a battery is present on the system. -# Used by the battery monitor and other battery-related checks. - -for bat in /sys/class/power_supply/BAT*; do - [[ -r $bat/present ]] && - [[ $(cat $bat/present) == "1" ]] && - [[ $(cat $bat/type) == "Battery" ]] && - exit 0 -done - -exit 1 diff --git a/core/system/scripts/nomarchy-sudo-keepalive b/core/system/scripts/nomarchy-sudo-keepalive deleted file mode 100755 index 06d3752..0000000 --- a/core/system/scripts/nomarchy-sudo-keepalive +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -e - -# Prompt for sudo once and keep the credential alive in the background. -# Source this script so the trap applies to the calling shell: -# source nomarchy-sudo-keepalive - -sudo -v -while true; do sudo -n true; sleep 60; done 2>/dev/null & -SUDO_KEEPALIVE_PID=$! -trap "kill $SUDO_KEEPALIVE_PID 2>/dev/null" EXIT diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 7cc3a0c..e0e9135 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -121,6 +121,7 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes, (Move items here when they land — keep them brief, link the commit/PR.) +- _2026-05-18_ — **Pillar 3 Phase B: complete.** Final batch (restart/sudo/theme/misc clusters) cleared the last 13 `unused?` rows. Deleted five truly dead scripts: `nomarchy-restart-{hyprctl,mako}` (theme switching calls `hyprctl reload`/`makoctl reload` directly now), `nomarchy-restart-tmux` (one-liner of marginal value), `nomarchy-battery-present` (battery monitor checks `/sys/class/power_supply/BAT*` inline), `nomarchy-sudo-keepalive` (intended-to-be-sourced building block with no users). Surfaced eight useful tools in `SKILL.md` so the audit catches them as `kept` and AI assistants can discover them: `nomarchy-restart-trackpad` (intel_quicki2c reload), `nomarchy-sudo-{passwordless-toggle,reset}`, `nomarchy-theme-{bg-install,refresh,remove}`, `nomarchy-refresh-fastfetch`, `nomarchy-windows-vm` (new Virtualization section). Final state: 159 scripts, all `kept`, `unused?` = 0, missing references = 0. - _2026-05-18_ — Pillar 3 Phase B: webapp/tui/voxtype install-remove pair triage. Deleted two dead webapp URI handlers (`nomarchy-webapp-handler-hey`, `nomarchy-webapp-handler-zoom`) — no `.desktop` MimeType registration anywhere routed `mailto:`/`zoom:` URIs to them, so the handlers could never fire. Surfaced six useful CLI tools in `SKILL.md` "Common Tasks" so they're discoverable by AI assistants and tagged `kept` by the audit: `nomarchy-webapp-{remove,remove-all}`, `nomarchy-tui-{remove,remove-all}`, `nomarchy-voxtype-{install,remove}`. Script count 166 → 164; `unused?` 21 → 13. - _2026-05-18_ — Pillar 3 Phase B: dead-code sweep (NixOS-irrelevant Omarchy ports). Deleted five scripts that duplicated NixOS-native facilities or referenced infrastructure Nomarchy doesn't ship: `nomarchy-rollback` (boot-menu generations + `nixos-rebuild rollback` already cover this), `nomarchy-snapshot` (used `snapper`; impermanence and BTRFS subvolumes are the Nomarchy answer), `nomarchy-migrate-state` (one-shot pre-unification migration, no current callers), `nomarchy-config-direct-boot` (added an EFI entry for a UKI we never build), and `nomarchy-npx-install` (Arch idiom — `nix-shell -p nodejs` is the NixOS path). Kept `nomarchy-build-iso` and `nomarchy-build-live-iso` and surfaced them in README §2 so the audit tags them `kept`. Script count 171 → 166. - _2026-05-18_ — Pillar 3 Phase B: missing-references triage. (1) Wrote `themes/engine/scripts/nomarchy-theme-next` so `SKILL.md`'s documented "cycle to next theme" command resolves; (2) scrubbed three stale `nomarchy-dev-*` references from `core/home/config/nomarchy-skill/SKILL.md`; (3) added a line-context filter to both `nomarchy-docs-scripts` generators that drops `nomarchy-*` tokens appearing in Nix `pname`/derivation idents, `/tmp/` & `/etc/sudoers.d/` paths, `nixosConfigurations.*` / `packages.*` flake outputs, `mktemp -t` prefixes, systemd unit vars, `./result/bin/run-` binaries, and `docker` container references; (4) added a small token-level denylist for five residual non-script identifiers (`nomarchy-plymouth`, `nomarchy-sddm-theme`, `nomarchy-live`, `nomarchy-rev`, `nomarchy-windows`) that survive line filtering. `docs/SCRIPTS.md` "Missing references" section is now empty (was 15). diff --git a/docs/SCRIPTS.md b/docs/SCRIPTS.md index 54e961a..07a811c 100644 --- a/docs/SCRIPTS.md +++ b/docs/SCRIPTS.md @@ -24,14 +24,13 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, - `delete-dead` — Phase B verdict: remove and update callers. - `stub-with-notify` — Phase B verdict: temporary `notify-send` stub. -## Scripts (164) +## Scripts (159) | Script | Location | Callers | Status | Notes | | --- | --- | --- | --- | --- | | `nomarchy-backup` | `features/scripts/utils` | features/scripts/utils/nomarchy-sync | `kept` | | | `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` | | @@ -103,23 +102,20 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-powerprofiles-list` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-preflight-migration` | `core/system/scripts` | core/system/scripts/nomarchy-env-update | `kept` | | | `nomarchy-refresh-config` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-refresh-fastfetch | `kept` | | -| `nomarchy-refresh-fastfetch` | `features/scripts/utils` | — | `unused?` | | +| `nomarchy-refresh-fastfetch` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-refresh-hyprland` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-refresh-waybar` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-reinstall` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-restart-app` | `features/scripts/utils` | core/system/scripts/nomarchy-restart-xcompose,features/scripts/utils/nomarchy-restart-hypridle, +3 more | `kept` | | | `nomarchy-restart-bluetooth` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-restart-btop` | `features/scripts/utils` | themes/engine/scripts/nomarchy-theme-set | `kept` | | -| `nomarchy-restart-hyprctl` | `features/scripts/utils` | — | `unused?` | | | `nomarchy-restart-hypridle` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-restart-hyprsunset` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | | -| `nomarchy-restart-mako` | `features/scripts/utils` | — | `unused?` | | | `nomarchy-restart-opencode` | `features/scripts/utils` | themes/engine/scripts/nomarchy-theme-set | `kept` | | | `nomarchy-restart-pipewire` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-restart-swayosd` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-restart-terminal` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | -| `nomarchy-restart-tmux` | `features/scripts/utils` | — | `unused?` | | -| `nomarchy-restart-trackpad` | `core/system/scripts` | — | `unused?` | | +| `nomarchy-restart-trackpad` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-restart-walker` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-menu, +1 more | `kept` | | | `nomarchy-restart-waybar` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-menu, +4 more | `kept` | | | `nomarchy-restart-wifi` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | @@ -132,9 +128,8 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-skill` | `features/scripts/utils` | core/home/configs.nix | `kept` | | | `nomarchy-state` | `features/scripts/utils` | core/system/scripts/nomarchy-system-reboot,core/system/scripts/nomarchy-system-shutdown, +2 more | `kept` | | | `nomarchy-state-write` | `features/scripts/utils` | features/scripts/utils/nomarchy-welcome | `kept` | | -| `nomarchy-sudo-keepalive` | `core/system/scripts` | — | `unused?` | | -| `nomarchy-sudo-passwordless-toggle` | `core/system/scripts` | — | `unused?` | | -| `nomarchy-sudo-reset` | `core/system/scripts` | — | `unused?` | | +| `nomarchy-sudo-passwordless-toggle` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | +| `nomarchy-sudo-reset` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-swayosd-brightness` | `core/system/scripts` | core/system/scripts/nomarchy-brightness-display,core/system/scripts/nomarchy-brightness-display-apple | `kept` | | | `nomarchy-swayosd-kbd-brightness` | `core/system/scripts` | core/system/scripts/nomarchy-brightness-keyboard | `kept` | | | `nomarchy-sync` | `features/scripts/utils` | features/scripts/utils/nomarchy-backup,README.md | `kept` | | @@ -146,15 +141,15 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-test-live-iso` | `features/scripts/utils` | hosts/nomarchy-live.nix | `kept` | | | `nomarchy-test-vm` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-live-iso | `kept` | | | `nomarchy-theme` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua, +17 more | `kept` | | -| `nomarchy-theme-bg-install` | `themes/engine/scripts` | — | `unused?` | | +| `nomarchy-theme-bg-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-theme-bg-next` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-wallpaper, +1 more | `kept` | | | `nomarchy-theme-bg-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua,features/scripts/utils/nomarchy-wallpaper | `kept` | | | `nomarchy-theme-current` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,themes/engine/scripts/nomarchy-theme-next | `kept` | | | `nomarchy-theme-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-theme-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-theme, +2 more | `kept` | | | `nomarchy-theme-next` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | -| `nomarchy-theme-refresh` | `themes/engine/scripts` | — | `unused?` | | -| `nomarchy-theme-remove` | `themes/engine/scripts` | — | `unused?` | | +| `nomarchy-theme-refresh` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | +| `nomarchy-theme-remove` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-theme-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_themes.lua,core/home/config/nomarchy-skill/SKILL.md, +9 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` | | @@ -191,7 +186,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-webapp-remove-all` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `nomarchy-welcome` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/autostart.conf | `kept` | | | `nomarchy-wifi-powersave` | `core/system/scripts` | features/scripts/utils/nomarchy-sys-update,installer/install.sh | `kept` | | -| `nomarchy-windows-vm` | `features/scripts/utils` | — | `unused?` | | +| `nomarchy-windows-vm` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | ## Missing references diff --git a/features/scripts/utils/nomarchy-restart-hyprctl b/features/scripts/utils/nomarchy-restart-hyprctl deleted file mode 100755 index 2fc9504..0000000 --- a/features/scripts/utils/nomarchy-restart-hyprctl +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -# Reload hyprland configuration (used by the Nomarchy theme switching). - -hyprctl reload >/dev/null diff --git a/features/scripts/utils/nomarchy-restart-mako b/features/scripts/utils/nomarchy-restart-mako deleted file mode 100755 index 6635cd2..0000000 --- a/features/scripts/utils/nomarchy-restart-mako +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -# Reload mako configuration (used by the Nomarchy theme switching). - -makoctl reload diff --git a/features/scripts/utils/nomarchy-restart-tmux b/features/scripts/utils/nomarchy-restart-tmux deleted file mode 100755 index e4adfc3..0000000 --- a/features/scripts/utils/nomarchy-restart-tmux +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -e - -# Restart tmux if running with the latest configuration - -if pgrep -x tmux; then - tmux source-file ~/.config/tmux/tmux.conf -fi