Replace the <your-org> placeholders with the actual public URL
(git+https://git.atitlan.io/aiolabs/omnixient, https so forkers need no
SSH), and switch the packs standalone-import example from git+ssh to the
same https URL.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Lead with consuming OmniXY as a flake input (omnixy.lib.mkSystem +
nixosModules.omnixy via `nix flake init -t`): tiny consumer repo,
conflict-free `nix flake update omnixy`. Add an 'Already on NixOS?'
section (reuse hardware scan + stateVersion, preview in VM, rollback),
a Secrets opt-in walkthrough, and keep forking as a documented
alternative.
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>
home.nix depends on nix-colors (colorScheme), lazyvim, and walker HM
modules; previously every host wired them by hand via `modules`, which
external consumers couldn't know to do. Inject them in mkSystem so any
host built through it gets them; re-importing from a host is a no-op.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Expose templates.default — a starter flake that consumes OmniXY as an
input (dependency model): omnixy.lib.mkSystem + nixosModules.omnixy +
a placeholder host. Lets adopters track OmniXY with `nix flake update`
instead of forking. See templates/default/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mkSystem resolved the user's home config only from this repo's
users/<user>/, so an external consumer's user got no home-manager setup.
Add a `home` param (a path) and resolve in priority order: caller `home`
-> internal users/<user>/home-manager.nix -> OmniXY's home.nix. Internal
hosts keep their shims (unchanged); consumers now get a working home by
default. Unblocks the consumer template.
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>
Surface mkSystem as a flake output and make its host resolution
non-throwing: internal hosts (this repo's hosts/<name>/) are still
imported automatically, but a consumer using OmniXY as a flake input
can now pass their own host via `modules` instead. First brick of the
dependency-model framework; the core module aggregate (nixosModules)
follows so a consumer's host can import OmniXY core.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The public template should ship the copy-me `example` host and the ISO,
not the maintainer's real machine. bohm's `omnixy` host enables MCP
servers that require secrets (absent in the public tree), so it broke
`nix flake check` on the public branch. It moves to the private
omnixy-private branch (which re-adds it with the real secrets). Forkers
define their own host modeled on `example`.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
configuration.nix is imported as the shared base by every host (incl.
hosts/example). It hardcoded bohm's lnbits/nextcloud MCP servers, which
declare sops secrets — so with secrets now opt-in (omnixy.secrets.enable),
a fork that imports the base but doesn't enable secrets failed to eval
(`sops.defaultSopsFile accessed but has no value`). Move the server
enablement into hosts/omnixy; the mcp module stays imported in the base
(inert until a host enables a server).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The installation-CD profile enables zfs so you can install onto it, but
the pinned nixpkgs ships a broken zfs-kernel that fails to evaluate,
breaking `nix flake check` and ISO builds. Force-disable zfs in the ISO
(a desktop installer doesn't need ZFS-root); use the official NixOS ISO
for ZFS installs.
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>