The mechanical omnixy->omni pass mangled README lines that refer to the
*upstream* OmniXY project (restored to OmniXY/omnixy), and replaced the
block-letter OMNIXY fastfetch logo with a clean Omnixient wordmark.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Same null-vs-missing bug as the fastfetch fix, across lib.nix (env var +
status echo), menus.nix, scripts.nix, and fastfetch's about screen:
`cfg.preset or "…"` returns null (not the fallback) because preset
defaults to null. Any consumer that doesn't set a preset hit 'cannot
coerce null to a string'. Replace with explicit null checks.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`${cfg.preset or "custom"}` only falls back when the attr is missing,
not when it's null — and omnixy.preset defaults to null. A host that
doesn't set a preset (any consumer of nixosModules.omnixy) hit 'cannot
coerce null to a string'. Use an explicit null check. Surfaced by the
dependency-model consumer test.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Extract the reusable core module list into modules/default.nix (single
source of truth) and expose it as nixosModules.omnixy / .default.
configuration.nix now imports ./modules instead of listing each module,
so this repo's hosts and external consumers share one definition. Theme
stays a settings.theme-driven import inside the aggregate. Packs,
dev-env, sops and home-manager remain injected by mkSystem.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Secrets were implicitly active whenever secrets/omnixy.yaml existed. Gate
them behind an explicit omnixy.secrets.enable (default false) so a fresh
fork builds and runs with zero secret setup, and derive age.keyFile from
omnixy.user instead of hardcoding padreug. bohm sets the flag in its host.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>