fix(home): remove dead behavior options, reserve overrides API
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.
This commit is contained in:
@@ -223,11 +223,11 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.iconsTheme`
|
||||
|
||||
`str`, default `"Yaru-blue"`. GTK/Qt icon theme name.
|
||||
`str`, default derived from the active theme (falls back to `"Yaru-blue"`). GTK/Qt icon theme name. `core/home/state.nix` computes this from the theme's palette metadata; override to pin a specific icon theme regardless of palette.
|
||||
|
||||
### `nomarchy.isLightMode`
|
||||
|
||||
`bool`, default `false`. Whether the active theme is a light theme. Affects nightlight defaults and a few app theme decisions.
|
||||
`bool`, default derived from the active theme. Whether the active theme is a light theme. `core/home/state.nix` computes this from the theme directory; affects nightlight defaults and a few app theme decisions. Override only if you need to force a specific value.
|
||||
|
||||
### `nomarchy.cursor.name`
|
||||
|
||||
@@ -239,23 +239,7 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.configOverrides`
|
||||
|
||||
`nullOr path`, default `null`. Path to a directory containing config overrides. See "Overrides" below.
|
||||
|
||||
### `nomarchy.behavior.hyprland.bindings`
|
||||
|
||||
`bool`, default `true`. Deploy the default Hyprland keybindings. Set to `false` if you want to write `bindings.conf` from scratch.
|
||||
|
||||
### `nomarchy.behavior.hyprland.input`
|
||||
|
||||
`bool`, default `true`. Deploy default input settings (kb_layout, mouse accel, etc).
|
||||
|
||||
### `nomarchy.behavior.hyprland.windowRules`
|
||||
|
||||
`bool`, default `true`. Deploy default window rules.
|
||||
|
||||
### `nomarchy.behavior.hyprland.autostart`
|
||||
|
||||
`bool`, default `true`. Deploy the default `autostart.conf` (hypridle, mako, swayosd, nm-applet, etc).
|
||||
`nullOr path`, default `null`. Path to a replacement config directory. When set, the items listed in `core/home/configs.nix` (`fastfetch`, `fcitx5`, `fontconfig`, `git`, `imv`, `nautilus-python`, `nomarchy`, `nomarchy-skill`, `uwsm`, `wiremix`, plus the loose files) are read from `<this-path>/<name>` instead of the bundled defaults. Distinct from `nomarchy.overrides.*` below — `configOverrides` is a working bulk redirect; `overrides.*` is a reserved option surface (currently a no-op).
|
||||
|
||||
### `nomarchy.apps.opencode.enable`
|
||||
|
||||
@@ -279,11 +263,11 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.overrides.enable`
|
||||
|
||||
`bool`, default `true`. Enable file-based overrides loaded from `~/.config/nomarchy/overrides/`. With this on, Nomarchy looks for matching files in that directory and substitutes them for the bundled defaults.
|
||||
`bool`, default `true`. **Reserved — currently a no-op.** Intended to gate a future file-based override loader (drop a file under `~/.config/nomarchy/overrides/`, have it substitute the bundled default for that path). The option exists so configs that set it don't fail to evaluate; setting it has no effect today. Use `nomarchy.configOverrides` for bulk redirection, or set `xdg.configFile.<path>.source` directly in your `home.nix` for per-file overrides — Nomarchy's defaults use `lib.mkDefault` and yield to higher-priority assignments. Tracked in `docs/ROADMAP.md`.
|
||||
|
||||
### `nomarchy.overrides.paths`
|
||||
|
||||
`attrsOf path`, default `{}`. Override paths discovered at build time. Populated by the override system — you don't normally set this directly.
|
||||
`attrsOf path`, default `{}`. **Reserved — currently unused.** Will be populated by the future override loader.
|
||||
|
||||
---
|
||||
|
||||
@@ -315,15 +299,17 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
}
|
||||
```
|
||||
|
||||
### Disable Nomarchy's default Hyprland keybindings to ship your own
|
||||
### Ship your own Hyprland keybindings instead of Nomarchy's defaults
|
||||
|
||||
Nomarchy deploys its `bindings.conf` with `lib.mkDefault`, so a higher-priority assignment from your own `home.nix` wins:
|
||||
|
||||
```nix
|
||||
{
|
||||
nomarchy.behavior.hyprland.bindings = false;
|
||||
xdg.configFile."hypr/bindings.conf".source = ./my-bindings.conf;
|
||||
}
|
||||
```
|
||||
|
||||
Then put your own `bindings.conf` at `~/.config/nomarchy/overrides/hypr/bindings.conf` (with `nomarchy.overrides.enable = true;`, which is the default).
|
||||
The same pattern works for any file Nomarchy deploys via `xdg.configFile.<path>.source = lib.mkDefault …` — point at your own file and skip the default.
|
||||
|
||||
---
|
||||
|
||||
@@ -333,7 +319,6 @@ Then put your own `bindings.conf` at `~/.config/nomarchy/overrides/hypr/bindings
|
||||
- `core/system/hardware.nix` — `nomarchy.hardware.*`
|
||||
- `core/system/impermanence.nix` — `impermanence.enable`
|
||||
- `core/home/options.nix` — most home-side `nomarchy.*` options
|
||||
- `core/home/behavior.nix` — `nomarchy.behavior.*`
|
||||
- `core/home/overrides.nix` — `nomarchy.overrides.*`
|
||||
- `core/home/overrides.nix` — `nomarchy.overrides.*` (reserved; currently no-op)
|
||||
- `themes/engine/loader.nix` — `nomarchy.themeLoader.*`
|
||||
- `features/apps/vscode.nix` — `nomarchy.vscode.*`
|
||||
|
||||
Reference in New Issue
Block a user