fix(home): remove dead behavior options, reserve overrides API #4

Merged
bernardo merged 2 commits from wave/qa-core-home into main 2026-05-19 18:49:23 +01:00
Owner

Two declared-but-non-functional option subsystems in core/home were
documented in OPTIONS.md and actively misleading users.

  1. nomarchy.behavior.hyprland.{bindings,input,windowRules,autostart}
    were declared in core/home/behavior.nix with a behaviorConfigs
    mapping let-binding — both completely unread elsewhere in the tree.
    The actual hypr/*.conf files are deployed by
    features/desktop/hyprland/default.nix with lib.mkDefault,
    unconditionally. Setting behavior.hyprland.bindings = false had
    zero effect. OPTIONS.md's "Disable Nomarchy's default Hyprland
    keybindings" example was a lie. Removed the four dead options,
    deleted behavior.nix entirely, dropped the import from
    core/home/default.nix, and rewrote the OPTIONS.md example to use
    xdg.configFile."hypr/bindings.conf".source = ./mine (which
    actually works against the existing lib.mkDefault priority).

  2. nomarchy.overrides.{enable,paths} advertised a file-based override
    loader that doesn't exist. The module created
    ~/.config/nomarchy/overrides/{hypr,waybar,apps} directories and
    wrote a README claiming "place files here to override upstream
    defaults" — but getOverrideOrDefault was never called and paths
    was never populated. Rewrote core/home/overrides.nix to keep just
    the option declarations (so configs that already set these still
    evaluate) and marked them clearly as reserved/no-op in OPTIONS.md.
    Removed the misleading README write and dir-creation. Logged a
    Next-column roadmap row for implementing the loader properly.

While here:

  • Clarified nomarchy.configOverrides (the working bulk-redirect
    mechanism) vs nomarchy.overrides.* (the reserved one) in OPTIONS.md
    — they're different things and the "See Overrides below" link was
    pointing at the broken subsystem.
  • Fixed OPTIONS.md nomarchy.iconsTheme / nomarchy.isLightMode
    default text — both are derived from the active theme in
    core/home/state.nix, not the static literals the docs claimed.
  • Updated docs/AGENT.md §2 and docs/STRUCTURE.md to reflect the
    behavior.nix removal and the overrides.nix reservation.

Found during Pillar 8 audit of core/home modules.

Two declared-but-non-functional option subsystems in core/home were documented in OPTIONS.md and actively misleading users. 1. `nomarchy.behavior.hyprland.{bindings,input,windowRules,autostart}` were declared in core/home/behavior.nix with a `behaviorConfigs` mapping let-binding — both completely unread elsewhere in the tree. The actual hypr/*.conf files are deployed by features/desktop/hyprland/default.nix with `lib.mkDefault`, unconditionally. Setting `behavior.hyprland.bindings = false` had zero effect. OPTIONS.md's "Disable Nomarchy's default Hyprland keybindings" example was a lie. Removed the four dead options, deleted behavior.nix entirely, dropped the import from core/home/default.nix, and rewrote the OPTIONS.md example to use `xdg.configFile."hypr/bindings.conf".source = ./mine` (which actually works against the existing `lib.mkDefault` priority). 2. `nomarchy.overrides.{enable,paths}` advertised a file-based override loader that doesn't exist. The module created `~/.config/nomarchy/overrides/{hypr,waybar,apps}` directories and wrote a README claiming "place files here to override upstream defaults" — but `getOverrideOrDefault` was never called and `paths` was never populated. Rewrote core/home/overrides.nix to keep just the option declarations (so configs that already set these still evaluate) and marked them clearly as reserved/no-op in OPTIONS.md. Removed the misleading README write and dir-creation. Logged a Next-column roadmap row for implementing the loader properly. While here: - Clarified `nomarchy.configOverrides` (the *working* bulk-redirect mechanism) vs `nomarchy.overrides.*` (the reserved one) in OPTIONS.md — they're different things and the "See Overrides below" link was pointing at the broken subsystem. - Fixed OPTIONS.md `nomarchy.iconsTheme` / `nomarchy.isLightMode` default text — both are derived from the active theme in core/home/state.nix, not the static literals the docs claimed. - Updated docs/AGENT.md §2 and docs/STRUCTURE.md to reflect the behavior.nix removal and the overrides.nix reservation. Found during Pillar 8 audit of core/home modules.
bernardo added 1 commit 2026-05-19 18:49:07 +01:00
Two declared-but-non-functional option subsystems in core/home were
documented in OPTIONS.md and actively misleading users.

1. `nomarchy.behavior.hyprland.{bindings,input,windowRules,autostart}`
   were declared in core/home/behavior.nix with a `behaviorConfigs`
   mapping let-binding — both completely unread elsewhere in the tree.
   The actual hypr/*.conf files are deployed by
   features/desktop/hyprland/default.nix with `lib.mkDefault`,
   unconditionally. Setting `behavior.hyprland.bindings = false` had
   zero effect. OPTIONS.md's "Disable Nomarchy's default Hyprland
   keybindings" example was a lie. Removed the four dead options,
   deleted behavior.nix entirely, dropped the import from
   core/home/default.nix, and rewrote the OPTIONS.md example to use
   `xdg.configFile."hypr/bindings.conf".source = ./mine` (which
   actually works against the existing `lib.mkDefault` priority).

2. `nomarchy.overrides.{enable,paths}` advertised a file-based override
   loader that doesn't exist. The module created
   `~/.config/nomarchy/overrides/{hypr,waybar,apps}` directories and
   wrote a README claiming "place files here to override upstream
   defaults" — but `getOverrideOrDefault` was never called and `paths`
   was never populated. Rewrote core/home/overrides.nix to keep just
   the option declarations (so configs that already set these still
   evaluate) and marked them clearly as reserved/no-op in OPTIONS.md.
   Removed the misleading README write and dir-creation. Logged a
   Next-column roadmap row for implementing the loader properly.

While here:
- Clarified `nomarchy.configOverrides` (the *working* bulk-redirect
  mechanism) vs `nomarchy.overrides.*` (the reserved one) in OPTIONS.md
  — they're different things and the "See Overrides below" link was
  pointing at the broken subsystem.
- Fixed OPTIONS.md `nomarchy.iconsTheme` / `nomarchy.isLightMode`
  default text — both are derived from the active theme in
  core/home/state.nix, not the static literals the docs claimed.
- Updated docs/AGENT.md §2 and docs/STRUCTURE.md to reflect the
  behavior.nix removal and the overrides.nix reservation.

Found during Pillar 8 audit of core/home modules.
bernardo added 1 commit 2026-05-19 18:49:17 +01:00
bernardo merged commit 07e2d5c51c into main 2026-05-19 18:49:23 +01:00
bernardo deleted branch wave/qa-core-home 2026-05-19 18:49:26 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bernardo/Nomarchy#4