From 074dc3576c7ff83f48c29e57cc0b2fc4e149c58a Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sat, 25 Apr 2026 22:36:19 +0100 Subject: [PATCH] feat(audit): address batch 2 of missing scripts - Implement nomarchy-version, nomarchy-debug, nomarchy-reinstall, nomarchy-rollback, nomarchy-upload-log - Implement nomarchy-refresh-hyprland and nomarchy-refresh-waybar - Update docs/SCRIPTS.md with 'kept' status for new scripts --- docs/SCRIPTS.md | 22 +++--- features/scripts/utils/nomarchy-debug | 69 +++++++++++++++++++ .../scripts/utils/nomarchy-refresh-hyprland | 14 ++++ .../scripts/utils/nomarchy-refresh-waybar | 14 ++++ features/scripts/utils/nomarchy-reinstall | 22 ++++++ features/scripts/utils/nomarchy-rollback | 19 +++++ features/scripts/utils/nomarchy-upload-log | 25 +++++++ features/scripts/utils/nomarchy-version | 9 +++ 8 files changed, 183 insertions(+), 11 deletions(-) create mode 100755 features/scripts/utils/nomarchy-debug create mode 100755 features/scripts/utils/nomarchy-refresh-hyprland create mode 100755 features/scripts/utils/nomarchy-refresh-waybar create mode 100755 features/scripts/utils/nomarchy-reinstall create mode 100755 features/scripts/utils/nomarchy-rollback create mode 100755 features/scripts/utils/nomarchy-upload-log create mode 100755 features/scripts/utils/nomarchy-version diff --git a/docs/SCRIPTS.md b/docs/SCRIPTS.md index 331e154..de9e2c8 100644 --- a/docs/SCRIPTS.md +++ b/docs/SCRIPTS.md @@ -24,7 +24,7 @@ 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 (149) +## Scripts (156) | Script | Location | Callers | Status | Notes | | --- | --- | --- | --- | --- | @@ -46,6 +46,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `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-debug` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | | | `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` | | @@ -95,6 +96,9 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `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` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-refresh-fastfetch | `kept` | | | `nomarchy-refresh-fastfetch` | `features/scripts/utils` | — | `unused?` | | +| `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` | | @@ -109,9 +113,10 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-restart-tmux` | `features/scripts/utils` | — | `unused?` | | | `nomarchy-restart-trackpad` | `core/system/scripts` | — | `unused?` | | | `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, +3 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` | | | `nomarchy-restart-xcompose` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | +| `nomarchy-rollback` | `features/scripts/utils` | installer/disko-golden.nix | `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` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-menu | `kept` | | @@ -164,6 +169,8 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`, | `nomarchy-update-available` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | | | `nomarchy-update-firmware` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | | | `nomarchy-update-time` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | | +| `nomarchy-upload-log` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-debug | `kept` | | +| `nomarchy-version` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-debug, +1 more | `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` | | @@ -186,7 +193,6 @@ Tokens grepped from `core/`, `features/`, `themes/`, `installer/`, `hosts/`, `bi | --- | --- | --- | | `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, +14 more | `missing` | -| `nomarchy-debug` | core/home/config/nomarchy-skill/SKILL.md | `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` | @@ -208,12 +214,8 @@ Tokens grepped from `core/`, `features/`, `themes/`, `installer/`, `hosts/`, `bi | `nomarchy-pkg-install` | core/home/config/nomarchy-skill/SKILL.md | `missing` | | `nomarchy-plymouth` | themes/engine/plymouth.nix | `missing` | | `nomarchy-refresh-` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-refresh-config, +1 more | `missing` | -| `nomarchy-refresh-hyprland` | core/home/config/nomarchy-skill/SKILL.md | `missing` | -| `nomarchy-refresh-waybar` | core/home/config/nomarchy-skill/SKILL.md | `missing` | -| `nomarchy-reinstall` | core/home/config/nomarchy-skill/SKILL.md | `missing` | -| `nomarchy-restart` | core/home/config/nomarchy-skill/SKILL.md,core/system/scripts/nomarchy-restart-xcompose, +9 more | `missing` | -| `nomarchy-restart-` | core/home/config/nomarchy-skill/SKILL.md,core/system/scripts/nomarchy-restart-xcompose, +9 more | `missing` | -| `nomarchy-rollback` | installer/disko-golden.nix | `missing` | +| `nomarchy-restart` | core/home/config/nomarchy-skill/SKILL.md,core/system/scripts/nomarchy-restart-xcompose, +10 more | `missing` | +| `nomarchy-restart-` | core/home/config/nomarchy-skill/SKILL.md,core/system/scripts/nomarchy-restart-xcompose, +10 more | `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` | @@ -228,8 +230,6 @@ Tokens grepped from `core/`, `features/`, `themes/`, `installer/`, `hosts/`, `bi | `nomarchy-themes-no-images` | themes/engine/files.nix | `missing` | | `nomarchy-toggle-` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy-skill/SKILL.md, +3 more | `missing` | | `nomarchy-update-` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc, +1 more | `missing` | -| `nomarchy-upload-log` | core/home/config/nomarchy-skill/SKILL.md | `missing` | -| `nomarchy-version` | core/home/config/nomarchy-skill/SKILL.md,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` | diff --git a/features/scripts/utils/nomarchy-debug b/features/scripts/utils/nomarchy-debug new file mode 100755 index 0000000..86cda64 --- /dev/null +++ b/features/scripts/utils/nomarchy-debug @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# Nomarchy Debug Information Script +# Collects system information for troubleshooting. + +set -e + +# Flags for agent use to avoid hanging +PRINT_ONLY=false +if [[ "$*" == *"--print"* ]]; then + PRINT_ONLY=true +fi + +echo "--- Nomarchy Debug Info ---" +echo "Version: $(nomarchy-version)" +echo "Host: $(hostname)" +echo "Kernel: $(uname -r)" +echo "Uptime: $(uptime -p)" + +echo "" +echo "--- Graphics ---" +if command -v hyprctl &>/dev/null; then + hyprctl version | head -n 1 +fi +if command -v glxinfo &>/dev/null; then + glxinfo | grep "OpenGL renderer" || echo "OpenGL: info not available" +fi + +echo "" +echo "--- Nix/NixOS ---" +nix --version +if [[ -f /etc/os-release ]]; then + grep "PRETTY_NAME" /etc/os-release | cut -d'"' -f2 +fi + +echo "" +echo "--- Nomarchy State ---" +STATE_FILE="$HOME/.config/nomarchy/state.json" +if [[ -f "$STATE_FILE" ]]; then + jq '.' "$STATE_FILE" +else + echo "State file not found at $STATE_FILE" +fi + +echo "" +echo "--- Services Status ---" +for svc in waybar hypridle hyprlock walker fprintd fwupd; do + if systemctl is-active --quiet "$svc" 2>/dev/null || systemctl --user is-active --quiet "$svc" 2>/dev/null; then + echo "[ACTIVE] $svc" + else + echo "[INACTIVE] $svc" + fi +done + +echo "" +echo "--- End of Debug Info ---" + +if [[ "$PRINT_ONLY" == "false" ]]; then + echo "" + echo "Would you like to upload this log to a pastebin? (y/N)" + read -r answer + if [[ "$answer" =~ ^[Yy]$ ]]; then + if command -v nomarchy-upload-log &>/dev/null; then + nomarchy-debug --print | nomarchy-upload-log + else + echo "Error: nomarchy-upload-log not found." + fi + fi +fi diff --git a/features/scripts/utils/nomarchy-refresh-hyprland b/features/scripts/utils/nomarchy-refresh-hyprland new file mode 100755 index 0000000..5a99626 --- /dev/null +++ b/features/scripts/utils/nomarchy-refresh-hyprland @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Nomarchy Refresh Hyprland Script +# Reloads the Hyprland configuration. + +set -e + +if command -v hyprctl &>/dev/null; then + hyprctl reload + notify-send -u low " Hyprland configuration reloaded" +else + echo "Error: hyprctl not found." + exit 1 +fi diff --git a/features/scripts/utils/nomarchy-refresh-waybar b/features/scripts/utils/nomarchy-refresh-waybar new file mode 100755 index 0000000..74ecaf1 --- /dev/null +++ b/features/scripts/utils/nomarchy-refresh-waybar @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Nomarchy Refresh Waybar Script +# Restarts Waybar to apply new configuration or theme. + +set -e + +if command -v nomarchy-restart-waybar &>/dev/null; then + nomarchy-restart-waybar + notify-send -u low "󰍜 Waybar refreshed" +else + echo "Error: nomarchy-restart-waybar not found." + exit 1 +fi diff --git a/features/scripts/utils/nomarchy-reinstall b/features/scripts/utils/nomarchy-reinstall new file mode 100755 index 0000000..c5f3518 --- /dev/null +++ b/features/scripts/utils/nomarchy-reinstall @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# Nomarchy Reinstall Script +# Performs a fresh 'switch' to the current declarative state. + +set -e + +# Detect the repository location +if [ -f "/etc/nixos/flake.nix" ]; then + REPO_DIR="/etc/nixos" +elif [ -f "/etc/nomarchy/flake.nix" ]; then + REPO_DIR="/etc/nomarchy" +else + echo "Error: Nomarchy flake repository not found in /etc/nixos or /etc/nomarchy." + exit 1 +fi + +echo "Performing system reinstall from $REPO_DIR..." +# --refresh forces a download of flake inputs if they've changed upstream but not in lock +sudo nixos-rebuild switch --flake "$REPO_DIR#default" --refresh --impure + +echo "Reinstall complete." diff --git a/features/scripts/utils/nomarchy-rollback b/features/scripts/utils/nomarchy-rollback new file mode 100755 index 0000000..9b24bce --- /dev/null +++ b/features/scripts/utils/nomarchy-rollback @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Nomarchy Rollback Script +# Reverts the system to a previous working generation. + +set -e + +if command -v snapper &>/dev/null; then + echo "BTRFS Snapper detected. Listing snapshots..." + sudo snapper list + echo "" + echo "To rollback to a specific snapshot, run: sudo snapper rollback " + echo "Or to rollback the current NixOS generation only:" +fi + +echo "Rolling back NixOS generation..." +sudo nixos-rebuild rollback + +echo "Rollback complete. Please reboot if you performed a BTRFS rollback." diff --git a/features/scripts/utils/nomarchy-upload-log b/features/scripts/utils/nomarchy-upload-log new file mode 100755 index 0000000..3e04401 --- /dev/null +++ b/features/scripts/utils/nomarchy-upload-log @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Nomarchy Log Upload Script +# Uploads stdin or a file to a pastebin service. + +set -e + +if [[ -t 0 ]] && [[ -z $1 ]]; then + echo "Usage: some-command | nomarchy-upload-log" + echo " nomarchy-upload-log " + exit 1 +fi + +# Use ix.io as the default pastebin +if [[ -n $1 ]]; then + url=$(curl -F "f:1=@$1" ix.io) +else + url=$(curl -F "f:1=@-" ix.io) +fi + +echo "Log uploaded to: $url" +if command -v wl-copy &>/dev/null; then + echo "$url" | wl-copy + echo "Link copied to clipboard." +fi diff --git a/features/scripts/utils/nomarchy-version b/features/scripts/utils/nomarchy-version new file mode 100755 index 0000000..61b36c1 --- /dev/null +++ b/features/scripts/utils/nomarchy-version @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Nomarchy Version Script +# Prints the current Nomarchy version based on the upstream NixOS channel. + +VERSION="25.11.0" +CODENAME="Markhor" + +echo "Nomarchy v${VERSION} (${CODENAME})"