docs: STRUCTURE.md root listing + Pillar 6 reality-check
Two stale-doc cleanups in one commit. Both surfaced during the post-Phase-B audit pass. 1. `docs/STRUCTURE.md` "Root Directory" listed three files that don't exist anywhere in the tree: - `GEMINI.md` (replaced long ago by `docs/AGENT.md`) - root-level `STRUCTURE.md` (this file actually lives in `docs/`) - `TODO.md` (long since replaced by `docs/ROADMAP.md`) Replaced with the actual root layout (flake.nix, flake.lock, README.md, .forgejo/, .githooks/) plus a `docs/` sub-tree that names every doc in the directory — the missing pieces the deleted bullets were trying to point at, now correctly located. 2. `docs/ROADMAP.md` Pillar 6 had three "Next" bullets that already shipped on 2026-04-26 (the welcome wizard, TROUBLESHOOTING.md, and the docs-index goal — README.md now links every doc in `docs/`). Moved all three to `(Shipped)`. Also rewrote the `nomarchy-manual` bullet — "orphaned reference today" was stale (the script is called from nomarchy-menu and nomarchy-theme-install per docs/SCRIPTS.md). The real remaining issue is its hardcoded `xdg-open https://learn.omacom.io/...` — an Omarchy URL that opens an unrelated upstream page when a user triggers the menu's Help entry. The bullet now names that specifically. No code touched; doc-only. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -93,11 +93,11 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
|
|||||||
|
|
||||||
## 6. Pillar: Onboarding & docs
|
## 6. Pillar: Onboarding & docs
|
||||||
|
|
||||||
- `nomarchy-welcome` first-run wizard (Next).
|
- `nomarchy-welcome` first-run wizard (Shipped).
|
||||||
- `docs/KEYBINDINGS.md` auto-generator (Shipped).
|
- `docs/KEYBINDINGS.md` auto-generator (Shipped).
|
||||||
- `docs/TROUBLESHOOTING.md` (Next).
|
- `docs/TROUBLESHOOTING.md` (Shipped).
|
||||||
- `docs/index.md` (or just enrich `README.md`) so `OPTIONS.md`, `STRUCTURE.md`, `MIGRATION.md`, `ROADMAP.md`, `SCRIPTS.md`, and `creating-themes.md` are all one click from the front page.
|
- `docs/index.md` / README docs index (Shipped — `README.md` links every doc in `docs/`).
|
||||||
- `nomarchy-manual` — orphaned reference today; either implement as a curated `xdg-open` to the docs index, or delete.
|
- `nomarchy-manual` — currently `xdg-open`s `learn.omacom.io/2/the-nomarchy-manual` (an Omarchy URL). Re-target at a Nomarchy docs URL, or repurpose as a curated `xdg-open` to the local `docs/` index, or delete.
|
||||||
|
|
||||||
## 7. Pillar: Test, CI, release
|
## 7. Pillar: Test, CI, release
|
||||||
|
|
||||||
@@ -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.)
|
(Move items here when they land — keep them brief, link the commit/PR.)
|
||||||
|
|
||||||
|
- _2026-05-18_ — Docs hygiene: STRUCTURE.md "Root Directory" + Pillar 6 reality-check. `docs/STRUCTURE.md` listed three top-level files that don't exist (`GEMINI.md`, root-level `STRUCTURE.md`, `TODO.md`) — replaced with an accurate root listing plus a `docs/` sub-tree that names every doc. Pillar 6 in this file had `nomarchy-welcome`, `docs/TROUBLESHOOTING.md`, and the "docs index" bullet still marked Next despite all three shipping on 2026-04-26 — moved to `(Shipped)`. `nomarchy-manual` bullet's "orphaned reference today" claim was stale (the script is called from `nomarchy-menu` and `nomarchy-theme-install`); rewritten to reflect the real remaining issue — its hardcoded `xdg-open https://learn.omacom.io/2/the-nomarchy-manual` is an Omarchy URL.
|
||||||
- _2026-05-18_ — Installer state.json is now schema-driven. Replaced the heredoc in `installer/install.sh` that hardcoded the JSON literal (theme/dns/wifi/features/etc.) with a `nix eval` of `lib/state-schema.nix`'s `system` block, overlaid with the installer-chosen timezone. Closes the last source-of-truth split after the centralization batch — adding a new default in the schema now reaches the installer with no further plumbing. Output is identical modulo alphabetical key ordering (Nix's `builtins.toJSON` sorts keys; toggle scripts read/write via `jq` so it's invisible to them). Dry-run path unchanged (still bind-mounts a fake `/mnt` so the generator's absolute paths resolve correctly). `bash -n` + `shellcheck --severity=error` clean.
|
- _2026-05-18_ — Installer state.json is now schema-driven. Replaced the heredoc in `installer/install.sh` that hardcoded the JSON literal (theme/dns/wifi/features/etc.) with a `nix eval` of `lib/state-schema.nix`'s `system` block, overlaid with the installer-chosen timezone. Closes the last source-of-truth split after the centralization batch — adding a new default in the schema now reaches the installer with no further plumbing. Output is identical modulo alphabetical key ordering (Nix's `builtins.toJSON` sorts keys; toggle scripts read/write via `jq` so it's invisible to them). Dry-run path unchanged (still bind-mounts a fake `/mnt` so the generator's absolute paths resolve correctly). `bash -n` + `shellcheck --severity=error` clean.
|
||||||
- _2026-05-18_ — Complete the hybrid-GPU wiring + fix unoverridable state-derived options. Two related fixes shipped together. **(1)** `nomarchy.system.features.hybridGPU = true` now wires the full NVIDIA driver stack (`services.xserver.videoDrivers = ["nvidia"]`, `hardware.graphics.{enable,enable32Bit}`, `hardware.nvidia.{modesetting,powerManagement}.enable`, `package = nvidiaPackages.stable`, `boot.kernelParams += "nvidia-drm.modeset=1"`) — was previously enabling only `supergfxd` mode-switching while leaving the system with no NVIDIA driver loaded, so mode switches silently no-op'd. All knobs use `lib.mkDefault` so a downstream `system.nix` can pin a beta driver, flip to the open kernel module, etc. Bus-ID prime config (per-machine) stays user-supplied — `docs/OPTIONS.md` has the full recipe. **(2)** Both `core/system/state.nix` and `core/home/state.nix` now use `lib.mkDefault` on every state.json-derived assignment, fixing a class of "I set X in my system.nix but it doesn't take effect" bugs (the state-derived value was at default priority and conflicted with the user's same-priority override). Side-effect cleanup: `core/system/state.nix` now also reads from `lib/state-schema.nix` like `core/home/state.nix` does, completing the schema-centralization started two batches ago. Verified `nix flake check` + an override test that flips hybridGPU via an overlay and confirms the entire driver stack engages.
|
- _2026-05-18_ — Complete the hybrid-GPU wiring + fix unoverridable state-derived options. Two related fixes shipped together. **(1)** `nomarchy.system.features.hybridGPU = true` now wires the full NVIDIA driver stack (`services.xserver.videoDrivers = ["nvidia"]`, `hardware.graphics.{enable,enable32Bit}`, `hardware.nvidia.{modesetting,powerManagement}.enable`, `package = nvidiaPackages.stable`, `boot.kernelParams += "nvidia-drm.modeset=1"`) — was previously enabling only `supergfxd` mode-switching while leaving the system with no NVIDIA driver loaded, so mode switches silently no-op'd. All knobs use `lib.mkDefault` so a downstream `system.nix` can pin a beta driver, flip to the open kernel module, etc. Bus-ID prime config (per-machine) stays user-supplied — `docs/OPTIONS.md` has the full recipe. **(2)** Both `core/system/state.nix` and `core/home/state.nix` now use `lib.mkDefault` on every state.json-derived assignment, fixing a class of "I set X in my system.nix but it doesn't take effect" bugs (the state-derived value was at default priority and conflicted with the user's same-priority override). Side-effect cleanup: `core/system/state.nix` now also reads from `lib/state-schema.nix` like `core/home/state.nix` does, completing the schema-centralization started two batches ago. Verified `nix flake check` + an override test that flips hybridGPU via an overlay and confirms the entire driver stack engages.
|
||||||
- _2026-05-18_ — Pillar 4: pre-flight resume polish. Fixed four resume-flow gaps in `installer/install.sh`: (1) `--resume` with a missing state file now errors loudly with a tmpfs explanation instead of silently falling through to a fresh prompt cycle (the most common operator confusion was "rebooted, forgot tmpfs eats /tmp/, watched the installer start over without realising"); (2) on resume, the saved target drive is validated as a block device before any disk-phase step runs — catches the live-ISO USB-unplugged / non-deterministic /dev/sdX class of mid-install failures; (3) `save_state` now stamps an ISO-8601 timestamp and `load_state` shows a `(saved Xm ago)` banner plus a `Target: /dev/X → user @ host` summary line, so the user can `Ctrl-C` if they're resuming onto the wrong host before any destructive prompt fires; (4) `--help` now documents the tmpfs limitation. `shellcheck --severity=error` passes.
|
- _2026-05-18_ — Pillar 4: pre-flight resume polish. Fixed four resume-flow gaps in `installer/install.sh`: (1) `--resume` with a missing state file now errors loudly with a tmpfs explanation instead of silently falling through to a fresh prompt cycle (the most common operator confusion was "rebooted, forgot tmpfs eats /tmp/, watched the installer start over without realising"); (2) on resume, the saved target drive is validated as a block device before any disk-phase step runs — catches the live-ISO USB-unplugged / non-deterministic /dev/sdX class of mid-install failures; (3) `save_state` now stamps an ISO-8601 timestamp and `load_state` shows a `(saved Xm ago)` banner plus a `Target: /dev/X → user @ host` summary line, so the user can `Ctrl-C` if they're resuming onto the wrong host before any destructive prompt fires; (4) `--help` now documents the tmpfs limitation. `shellcheck --severity=error` passes.
|
||||||
|
|||||||
@@ -33,10 +33,17 @@ While the system is defined declaratively, Nomarchy uses a small, local state fi
|
|||||||
- `nixosModules.home`: Exports the application and desktop logic (`./features`).
|
- `nixosModules.home`: Exports the application and desktop logic (`./features`).
|
||||||
- `nixosConfigurations`: Defines pre-configured targets like `nomarchy-installer`, `nomarchy-live`, and a testing `vm`.
|
- `nixosConfigurations`: Defines pre-configured targets like `nomarchy-installer`, `nomarchy-live`, and a testing `vm`.
|
||||||
- **`flake.lock`**: Locks dependency versions for reproducible builds.
|
- **`flake.lock`**: Locks dependency versions for reproducible builds.
|
||||||
- **`GEMINI.md`**: Foundational mandates and architectural rules for the Nomarchy Agent.
|
|
||||||
- **`STRUCTURE.md`**: (This file) Detailed architectural documentation.
|
|
||||||
- **`README.md`**: Project overview, installation instructions, and basic usage.
|
- **`README.md`**: Project overview, installation instructions, and basic usage.
|
||||||
- **`TODO.md`**: Roadmap and pending tasks.
|
- **`docs/`**: All long-form documentation. Key entry points:
|
||||||
|
- **`AGENT.md`**: Onboarding for AI coding agents picking up Nomarchy.
|
||||||
|
- **`STRUCTURE.md`**: (This file) Detailed architectural documentation.
|
||||||
|
- **`OPTIONS.md`**: Reference for every `nomarchy.*` option.
|
||||||
|
- **`ROADMAP.md`**: Now / Next / Later board and the Shipped log.
|
||||||
|
- **`MIGRATION.md`**: Layering Nomarchy onto an existing NixOS install.
|
||||||
|
- **`KEYBINDINGS.md`**: Auto-generated keybinding reference.
|
||||||
|
- **`SCRIPTS.md`**: Auto-generated `nomarchy-*` script audit.
|
||||||
|
- **`TROUBLESHOOTING.md`**: Common rebuild errors and fixes.
|
||||||
|
- **`creating-themes.md`**: Theme palette authoring guide.
|
||||||
- **`.forgejo/workflows/`**: Forgejo Actions CI. Runs `nix flake check --no-build`, lints every `nomarchy-*` bash script with `bash -n` + `shellcheck --severity=error`, and verifies `docs/SCRIPTS.md` is up to date on every push to `main` and every PR. To activate: enable Actions on the repo in Forgejo and register a `forgejo-runner` (any Docker-capable Linux host works; the workflow uses `ubuntu-latest` and installs Nix itself).
|
- **`.forgejo/workflows/`**: Forgejo Actions CI. Runs `nix flake check --no-build`, lints every `nomarchy-*` bash script with `bash -n` + `shellcheck --severity=error`, and verifies `docs/SCRIPTS.md` is up to date on every push to `main` and every PR. To activate: enable Actions on the repo in Forgejo and register a `forgejo-runner` (any Docker-capable Linux host works; the workflow uses `ubuntu-latest` and installs Nix itself).
|
||||||
- **`.githooks/`**: Optional per-clone git hooks (`pre-commit` lints changed scripts and regenerates `docs/SCRIPTS.md`). Enable with `git config core.hooksPath .githooks`. CI enforces the same invariants tree-wide.
|
- **`.githooks/`**: Optional per-clone git hooks (`pre-commit` lints changed scripts and regenerates `docs/SCRIPTS.md`). Enable with `git config core.hooksPath .githooks`. CI enforces the same invariants tree-wide.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user