Commit Graph

26 Commits

Author SHA1 Message Date
Bernardo Magri
6411395d9f fix(qa): comprehensive out-of-the-box audit and repair
- Fix critical bash dynamic scoping bug in install.sh (Impermanence/Form Factor).
- Polished Live ISO with auto-login and passwordless sudo.
- Repurposed nomarchy-toggle-suspend to directly execute systemctl suspend.
- Updated nomarchy-launch-wifi to use nmtui in alacritty.
- Optimized nomarchy-welcome to avoid redundant rebuilds via --no-update flag.
- Enabled nomarchy-welcome in Hyprland autostart.
- Wrapped Live ISO-modifying steps in welcome wizard to prevent failures.
- Removed obsolete hardware auto-detection from nomarchy-on-boot.
- Hardened script doc generator against false-positive wildcard tokens.
- Regenerated docs/SCRIPTS.md and updated docs/ROADMAP.md.
2026-05-01 20:03:04 +01:00
Bernardo Magri
5b014cfa29 chore(audit): refine docs-scripts detector and lock in via pre-commit
Two detector bugs fixed:

1. grep_includes missed *.lua, *.ini, *.desktop, *.json — so callers in
   elephant providers (lua), mako on-button-* hooks (ini), and any future
   MimeType-registered URL handlers (.desktop) were invisible. Adding them
   reclassifies nomarchy-notification-dismiss and nomarchy-theme-bg-set
   from `unused?` to `kept` (true callers in mako/core.ini and the
   elephant background_selector lua).

2. The all_refs regex `nomarchy-[a-z0-9][a-z0-9-]+` greedily captured
   trailing dashes, producing junk missing-tokens like `nomarchy-pkg-`,
   `nomarchy-cmd-`, `nomarchy-restart-`, etc. from glob references like
   `for c in nomarchy-pkg-*`. Tightened to require an alphanumeric end
   character. Also restricted to grep_includes so the binary tmpfile
   path `nomarchy-menu-rows` no longer leaks in.

New .githooks/pre-commit re-runs the generator and stages docs/SCRIPTS.md
whenever a nomarchy-* script changes. Enable per clone with
`git config core.hooksPath .githooks` (now mentioned in docs/AGENT.md).

Net audit shift after regen: unused? scripts 31→29, missing tokens 30→28,
no false-positive prefix tokens remain.
2026-04-26 08:44:13 +01:00
Bernardo Magri
aa20399210 docs(audit): generator discovers references in *.md, README, and txt
Scope: small Phase B improvement to the discovery heuristic so the
audit table stops false-flagging documented user-CLI tools as unused.

The generator now grep -r searches *.md, *.txt, *.sample alongside
*.nix / *.conf / *.sh, and explicitly walks README.md. SCRIPTS.md,
ROADMAP.md, and AGENT.md are excluded from the search (they document
the scripts but aren't callers — including them would promote every
script to `kept`).

Status histogram: 158 → 163 kept, 45 → 40 unused?, 75 → 85 missing
(the missing bump comes from grepping aspirational scripts named in
ROADMAP — wait, that doc is excluded — so the new missing rows are
references in MIGRATION/STRUCTURE/creating-themes that name scripts
which don't exist).

Per-script triage of the remaining 40 unused? rows is the next Phase
B batch.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 22:02:45 +01:00
Bernardo Magri
86bc0e570b 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>
2026-04-25 21:59:06 +01:00
Bernardo Magri
c9ff6f26f3 docs: add KEYBINDINGS.md generated from Hyprland bindings
bin/utils/nomarchy-docs-keybindings parses every bindd= / bindeld=
line in the core + feature binding files into a six-section Markdown
table (Utilities, Tiling, Tiling v2, Clipboard, Media keys, Apps).
233 bindings rendered. code:NN keycodes and XF86* media keys are
prettified.

README's keybinding table is slimmed to five highlights and now
links the generated doc; the roadmap's Now-column row moves to
Shipped.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 21:47:15 +01:00
Bernardo Magri
bbdf34ced8 refactor: implement component-based architecture for enhanced maintainability
- Reorganize directory structure into core/, features/, and themes/
- Colocate application Nix logic, configs, scripts, and theme overrides
- Implement 'Inversion of Control' for theming: apps now pull theme-specific layouts
- Update flake.nix and shared library paths to match the new structure
- Document the new Feature-Centric architecture in README.md
2026-04-12 14:51:15 +01:00
Bernardo Magri
b27fc5aee8 refactor: major architectural restructure for theme-centric organization
Theme System:
- Move all theme app configs to apps/ subdirectory (20 themes)
- Add theme-loader.nix for dynamic theme config deployment
- Simplify stylix.nix to focus on base theming only

Override System:
- Add overrides.nix for file-based config overrides
- Add behavior-configs.nix for non-visual configuration
- Split hypr/nomarchy.conf into behavior vs visual sections

Module Improvements:
- Add lib.mkDefault to all customizable settings
- Add modules/lib/ with shared utilities and state schema
- Update all home and system modules for downstream overridability

Installer:
- New minimal TTY installer (installer/install.sh)
- Golden path: BTRFS + LUKS2 (disko-golden.nix)
- New installer-iso.nix for TTY-only installation
- Keep graphical installer as installerIsoGraphical option

Cleanup:
- Remove obsolete install.sh, disko-ext4.nix, install-nomarchy.sh
- Update live-iso.nix references
- Add .claude/ to .gitignore for local IDE settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-11 19:38:27 +01:00
Bernardo Magri
0ce8602384 refactor: final architecture audit and hardening 2026-04-06 21:49:34 +01:00
Bernardo Magri
db6bdd8495 refactor: move state migration to pre-flight, fix XDG hardcoding, and prevent Nix store bloat 2026-04-06 21:37:24 +01:00
Bernardo Magri
8a72a09bd8 fix(system): enable uwsm and fix session detection to allow VM login
- Enable programs.uwsm for session management.
- Improve SDDM theme session detection logic to be case-insensitive and more robust.
- Perform a global cleanup of 'Nnomarchy' and 'org.nnomarchy' typos across all scripts and configurations.
2026-04-05 11:18:41 +01:00
Bernardo Magri
854f429360 fix(bin): correct VM runner binary names and fix typos in test scripts 2026-04-05 11:10:57 +01:00
Bernardo Magri
64c1dc937d chore(branding): update fastfetch ASCII icon and fix branding typos
- Optimized assets/branding/icon.txt with multi-color placeholders for fastfetch.
- Updated config/fastfetch/config.jsonc to use the new multi-colored icon.
- Added icon and svg branding assets to modules/home/theme-files.nix.
- Fixed 'Nnomarchy' typo to 'Nomarchy' and updated branding paths in several scripts.
- Corrected screensaver and welcome scripts to use the centralized branding assets.
2026-04-05 11:06:42 +01:00
Bernardo Magri
514b305713 feat(system): comprehensive branding, styling, and system feature update
- Relocate themes to assets/themes/ and update all references.
- Implement custom SDDM theme and Plymouth theme enhancements.
- Add themed templates for Alacritty, Hyprland, Waybar, and other apps.
- Introduce Makima key remapper module and configuration.
- Add Voxtype and Walker configurations.
- Implement systemd power management and timeout optimizations.
- Add Nautilus-python extensions for LocalSend.
- Update branding assets and ASCII art integration.
2026-04-05 10:52:41 +01:00
Bernardo Magri
9d5049aed5 chore(hygiene): final script cleanup and plymouth optimization
- Remove unused pkg and cmd helper scripts
- Optimize Plymouth settings for cleaner boot in all environments
- Skip hardware auto-detection logic in Live ISO environment
2026-04-04 21:34:02 +01:00
Bernardo Magri
e3d8c9ca75 feat(branding): professionalize installer and system branding
- Refactor installer with Gum for a professional interactive experience
- Create custom Nomarchy Plymouth theme with centered logo
- Establish assets/branding directory for official logos and ASCII art
- Update Fastfetch config with official ASCII art and declarative stats
- Declaratively link branding assets via Home Manager
2026-04-04 20:34:32 +01:00
Bernardo Magri
09377e37ea chore(hygiene): final script cleanup and persistence fixes
- Remove remaining obsolete Arch-era scripts (branch-set, debug, upload-log, etc.)
- Add /var/lib/fprint to impermanence persistence for fingerprint survival
- Add /etc/supergfxd.conf to impermanence persistence for GPU mode survival
2026-04-04 19:54:01 +01:00
Bernardo Magri
08e2b4e248 feat(system): professionalize system configurations
- Consolidate imperative system settings into /etc/nixos/state.json
- Implement nomarchy.system options for DNS, Wifi powersave, Timezone, and hardware features
- Add declarative browser policies for Chromium/Brave based on theme
- Update toggles scripts to mutate system JSON and run sys-update --impure
- Remove obsolete imperative browser theme and redundant system modules
2026-04-04 19:22:47 +01:00
Bernardo Magri
42f515f4a9 feat(themes): declaratively manage icons, cursors, and dark/light modes
- Automatically detect light mode via 'light.mode' file in theme folder
- Read icon theme name from 'icons.theme' file in theme folder
- Switch Stylix polarity and iconTheme based on theme selection
- Add yaru-theme and bibata-cursors to default packages
- Remove obsolete imperative nomarchy-theme-set-gnome script
2026-04-04 18:33:00 +01:00
Bernardo Magri
8775c6a4bf feat(upstream): switch to remote git repository for engine
- Update installer to use git+https://git.bemagri.xyz/bernardo/Nomarchy.git
- Remove redundant bundling/copying of the engine to /etc/nixos/nomarchy
- Expose all themes via xdg.dataFile for script accessibility
- Update theme scripts to resolve directories via local share instead of hardcoded system paths
- Update documentation to reflect the new remote-first architecture
2026-04-04 17:35:37 +01:00
Bernardo Magri
4020ad5878 feat(core): professionalize state migration via Nix activation
- Move state migration logic from shell scripts to Home Manager activation
- Ensure migrations run automatically during rebuilds
- Delete obsolete bin/nomarchy-migrate and migrations/ directory
2026-04-04 10:35:02 +01:00
Bernardo Magri
b03196514a chore(hygiene): remove legacy Arch Linux and imperative scripts
- Delete obsolete pacman, AUR, and shell-based update scripts
- Remove imperative configuration refresh scripts replaced by Home Manager
- Overhaul nomarchy-menu to remove Install/Remove submenus and legacy options
- Clean up unused assets including applications/ directory and icons
- Enforce strict upstream/downstream separation
2026-04-04 10:13:32 +01:00
Bernardo Magri
b86c2bad43 feat(themes): implement declarative theme file management
- Link active theme files from themes/ directly via Home Manager
- Use 'recursive = true' to allow dynamic templating inside linked directories
- Simplify nomarchy-theme-set to rely on declarative links
- Update template generator to point to the unified theme directory
2026-04-04 10:13:12 +01:00
Bernardo Magri
cfd5e4bb65 feat(core): migrate system state to unified declarative JSON
- Consolidate all configuration toggles (suspend, idle, waybar, etc.) into ~/.config/home-manager/state.json
- Introduce nomarchy.toggles and nomarchy.hyprland options in Nix
- Inject toggle states into all bin/ scripts via environment variables
- Update toggle scripts to mutate JSON and trigger background rebuilds
- Add a migration script to transition legacy flag files to the new format
2026-04-04 10:11:09 +01:00
Bernardo Magri
2821d30858 feat(scripts): add nomarchy-sync and improve theme scripts
- Create nomarchy-sync for backing up declarative config and dynamic state
- Update theme scripts with improved IPC feedback (swww img transition)
2026-04-03 21:07:15 +01:00
Bernardo Magri
29cc0d2547 feat: implement modular foundation and core system services
- Update flake.nix with 25.11 release and core inputs
- Add dedicated modules for audio (Pipewire), bluetooth, and networking
- Update GEMINI.md with the new Modular Merging Architecture blueprint
- Configure graphical installer ISO and test VM outputs
2026-04-03 21:06:42 +01:00
Bernardo Magri
33deeb494b initial commit 2026-04-01 17:06:01 +01:00