From 8678f637dbd6dcb06ab623c10063b320b450fab3 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:15:52 +0200 Subject: [PATCH 01/10] feat(flake): expose lib.mkSystem for external consumers Surface mkSystem as a flake output and make its host resolution non-throwing: internal hosts (this repo's hosts//) 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 --- flake.nix | 13 +++++++++++++ lib/mksystem.nix | 19 ++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index 50dabdb..a16e708 100644 --- a/flake.nix +++ b/flake.nix @@ -218,6 +218,19 @@ }; in { + # Reusable library for external consumers. Use this flake as an + # input and build a host with the Omnixient conventions from your own + # repo, without forking: + # + # omni.lib.mkSystem "myhost" { + # settings = { ... }; # your identity (see settings.nix) + # modules = [ ./hosts/myhost ]; + # }; + # + # mkSystem bakes in Omnixient's nixpkgs, overlays, and inputs + # (home-manager, sops-nix, …), so you don't redeclare them. + lib.mkSystem = mkSystem; + # NixOS configurations. # # This public template ships the `example` host (copy-me starter) and diff --git a/lib/mksystem.nix b/lib/mksystem.nix index e2a0042..851e365 100644 --- a/lib/mksystem.nix +++ b/lib/mksystem.nix @@ -70,13 +70,18 @@ let # fall back to a flat `hosts/.nix`. hostDir = ../hosts/${name}; hostFile = ../hosts + "/${name}.nix"; - hostConfig = + # Internal hosts (this repo's hosts//) are imported automatically. + # External consumers using this flake as an input have no host dir here, + # so they pass their host config through `modules` and we add nothing. + hostConfigModules = if builtins.pathExists hostDir then - hostDir + [ hostDir ] else if builtins.pathExists hostFile then - hostFile + [ hostFile ] + else if modules != [ ] then + [ ] else - throw "mksystem: no host config for '${name}' (looked at ${toString hostDir} and ${toString hostFile})"; + throw "mksystem: no host config for '${name}' — add hosts/${name}/ or pass one via `modules` (looked at ${toString hostDir} and ${toString hostFile})"; userNixosConfig = ../users/${user}/nixos.nix; userHMConfig = ../users/${user}/home-manager.nix; @@ -101,10 +106,10 @@ nixpkgs.lib.nixosSystem { { nixpkgs.hostPlatform = system; } { nixpkgs.overlays = overlays; } { nixpkgs.config.allowUnfree = true; } - - # Per-host configuration. - hostConfig ] + # Per-host configuration: this repo's hosts// when present; + # external consumers supply their host through `modules`. + ++ hostConfigModules # Per-user system-level config (account, shell, sudo) — only if the # user file exists. Skipping silently is fine; some hosts share users # defined elsewhere (e.g. omni's users.nix). From 1e2677c5439701335bc7860c9923100b3a2551bf Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:22:37 +0200 Subject: [PATCH 02/10] feat(flake): expose nixosModules.omnixy core aggregate 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 --- configuration.nix | 30 ++++++++-------------------- flake.nix | 12 ++++++++++++ modules/default.nix | 48 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 22 deletions(-) create mode 100644 modules/default.nix diff --git a/configuration.nix b/configuration.nix index 7b72523..65768b1 100644 --- a/configuration.nix +++ b/configuration.nix @@ -15,28 +15,14 @@ let in { imports = [ - # NOTE: hardware-configuration.nix is imported per-host from - # hosts//default.nix (it's machine-specific), not here. - - # Omnixient modules - ./modules/lib.nix - ./modules/core.nix - ./modules/colors.nix - ./modules/boot.nix - ./modules/security.nix - ./modules/secrets.nix - ./modules/fastfetch.nix - ./modules/walker.nix - ./modules/scripts.nix - ./modules/menus.nix - ./modules/desktop/hyprland.nix - ./modules/packages.nix - ./modules/development.nix - ./modules/mcp.nix - ./modules/themes/${currentTheme}.nix - ./modules/users.nix - ./modules/services.nix - ./modules/hardware + # Omnixient core module aggregate (modules/default.nix) — the same set + # exposed as nixosModules.omni for external consumers, so there's a + # single source of truth for the core module list. The active theme + # is selected inside it from settings.theme. + # + # hardware-configuration.nix is imported per-host from + # hosts//default.nix (machine-specific), not here. + ./modules ]; # --- Per-host settings (edit these) --- diff --git a/flake.nix b/flake.nix index a16e708..15a05df 100644 --- a/flake.nix +++ b/flake.nix @@ -311,6 +311,18 @@ # / bitcoin packs are standalone-importable — usable on a non-omni # NixOS without enabling omni core. nixosModules = { + # Omnixient core, as a single importable module. A consumer using + # this flake as an input builds a host with: + # omni.lib.mkSystem "myhost" { + # settings = { ... }; + # modules = [ omni.nixosModules.omni ./hosts/myhost ]; + # }; + # mkSystem also injects packs + home-manager; this provides the + # desktop/system core (option namespace + behavior). Theme is + # chosen from settings.theme. + omni = import ./modules; + default = import ./modules; + lnbits = import ./modules/packs/lnbits.nix; aiolabs = import ./modules/packs/aiolabs.nix; bitcoin = import ./modules/packs/bitcoin.nix; diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..c05a6ed --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,48 @@ +# Omnixient core module aggregate. +# +# The reusable Omnixient module set as a single importable module, used from +# one source of truth in two places: +# - configuration.nix imports it for this repo's own hosts; +# - it's exposed as `nixosModules.omni` (flake.nix) so an external +# consumer can `imports = [ omni.nixosModules.omni ]` from their +# own flake without forking. +# +# Deliberately NOT here: +# - modules/packs and modules/dev-env — injected separately by +# lib/mksystem.nix (packs unconditionally, dev-env opt-in); +# - hardware-configuration.nix — per-host; +# - the sops-nix / home-manager modules — injected by mkSystem. +# +# The active theme is selected from `settings.theme` (a specialArg +# provided by mkSystem), matching the prior configuration.nix behavior. +{ + imports = [ + ./lib.nix + ./core.nix + ./colors.nix + ./boot.nix + ./security.nix + ./secrets.nix + ./fastfetch.nix + ./walker.nix + ./scripts.nix + ./menus.nix + ./desktop/hyprland.nix + ./packages.nix + ./development.nix + ./mcp.nix + ./users.nix + ./services.nix + ./hardware + + # Theme: import the colorscheme module named by settings.theme. Kept + # as a settings-driven dynamic import (rather than importing all 12 + # and guarding each) so the closure stays minimal. + ( + { settings, ... }: + { + imports = [ ./themes/${settings.theme}.nix ]; + } + ) + ]; +} From 08c2a1a46ca1c9dc83dd525823d840bacaac0320 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:34:42 +0200 Subject: [PATCH 03/10] feat(mksystem): consumer-friendly home-manager resolution mkSystem resolved the user's home config only from this repo's users//, 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//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 --- lib/mksystem.nix | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/mksystem.nix b/lib/mksystem.nix index 851e365..477d4c4 100644 --- a/lib/mksystem.nix +++ b/lib/mksystem.nix @@ -56,6 +56,10 @@ name: user, devEnv ? false, modules ? [ ], + # Home-manager config for `user`, as a PATH. External consumers pass + # their own (e.g. `home = ./home.nix`). When null, fall back to this + # repo's users//home-manager.nix, then to Omnixient's home.nix. + home ? null, # Extra args merged into the system-level specialArgs. Used by hosts # whose configuration.nix expects values beyond the defaults (e.g. # omni's configuration.nix takes `settings` from settings.nix). @@ -84,10 +88,21 @@ let throw "mksystem: no host config for '${name}' — add hosts/${name}/ or pass one via `modules` (looked at ${toString hostDir} and ${toString hostFile})"; userNixosConfig = ../users/${user}/nixos.nix; - userHMConfig = ../users/${user}/home-manager.nix; - hasUserNixosConfig = builtins.pathExists userNixosConfig; - hasUserHMConfig = builtins.pathExists userHMConfig; + + # Home-manager config for `user`, resolved in priority order so both + # internal hosts and external consumers get a working home: + # 1. caller-supplied `home` (consumer override), else + # 2. this repo's users//home-manager.nix (internal hosts), else + # 3. Omnixient's default home.nix (consumer whose user isn't in this tree). + internalUserHM = ../users/${user}/home-manager.nix; + userHMConfig = + if home != null then + home + else if builtins.pathExists internalUserHM then + internalUserHM + else + ../home.nix; in nixpkgs.lib.nixosSystem { @@ -149,9 +164,11 @@ nixpkgs.lib.nixosSystem { # bootstrap. ../modules/home-manager-bootstrap.nix ] - ++ nixpkgs.lib.optional hasUserHMConfig { - home-manager.users.${user} = import userHMConfig; - } + ++ [ + # Home config for `user` — always wired now that userHMConfig always + # resolves (caller `home`, internal shim, or Omnixient's home.nix). + { home-manager.users.${user} = import userHMConfig; } + ] # dev-env is opt-in. ++ nixpkgs.lib.optional devEnv ../modules/dev-env # Caller-supplied extras. From f6b8ddf598a21dea3865298499842b1f7dc5109f Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:38:14 +0200 Subject: [PATCH 04/10] feat(flake): add consumer template (nix flake init -t) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- flake.nix | 9 ++++ templates/default/README.md | 41 ++++++++++++++++++ templates/default/flake.nix | 41 ++++++++++++++++++ templates/default/hosts/myhost/default.nix | 33 ++++++++++++++ .../hosts/myhost/hardware-configuration.nix | 43 +++++++++++++++++++ 5 files changed, 167 insertions(+) create mode 100644 templates/default/README.md create mode 100644 templates/default/flake.nix create mode 100644 templates/default/hosts/myhost/default.nix create mode 100644 templates/default/hosts/myhost/hardware-configuration.nix diff --git a/flake.nix b/flake.nix index 15a05df..93d2ef2 100644 --- a/flake.nix +++ b/flake.nix @@ -333,6 +333,15 @@ containers = import ./modules/packs/containers.nix; }; + # Starter config for adopters: `nix flake init -t github:/omni` + # scaffolds a consumer flake that uses Omnixient as an input (dependency + # model) — see templates/default/README.md. + templates.default = { + path = ./templates/default; + description = "Starter Omnixient consumer config (Omnixient as a flake input)"; + }; + templates.omni = self.templates.default; + # Flake checks — run by `nix flake check`. Lightweight targets # that exercise the dev-env module schema end-to-end without # loading the full omni system. Each check renders a small diff --git a/templates/default/README.md b/templates/default/README.md new file mode 100644 index 0000000..0911b43 --- /dev/null +++ b/templates/default/README.md @@ -0,0 +1,41 @@ +# My Omnixient config + +Generated from Omnixient's starter template (`nix flake init -t github:/omnixient`). +You consume Omnixient as a flake **input** — you do not fork it — so +`nix flake update omni` pulls upstream changes without ever touching +your files. + +## Setup + +1. **Edit `flake.nix`** — set the `omni.url` to the real repo, and fill + in the `settings` block (user, hostName, timeZone, theme, stateVersion). +2. **Generate your hardware scan:** + ```bash + sudo nixos-generate-config --show-hardware-config \ + > hosts/myhost/hardware-configuration.nix + ``` + (Rename `hosts/myhost` to your hostname if you like; keep `flake.nix` in sync.) +3. **Pick packs / options** in `hosts/myhost/default.nix`. +4. **`git add` everything** — flakes only see git-tracked files. +5. **Build & switch** (first build on a flakes-disabled system needs the flag): + ```bash + sudo nixos-rebuild switch --flake .#myhost \ + --extra-experimental-features "nix-command flakes" + ``` + +## Updating + +```bash +nix flake update omni # pull latest Omnixient (a pinned dependency) +sudo nixos-rebuild switch --flake .#myhost +``` + +This can't conflict with your config — Omnixient is an input, not a checkout. +Roll back by reverting `flake.lock`. Pin a release with +`omni.url = "github:/omnixient/v1.0.0"`. + +## Secrets (optional) + +Off by default. To enable, set `omni.secrets.enable = true` and provide +your own age key + `secrets/omni.yaml` — see Omnixient's +`docs/getting-started.md`. diff --git a/templates/default/flake.nix b/templates/default/flake.nix new file mode 100644 index 0000000..19d5232 --- /dev/null +++ b/templates/default/flake.nix @@ -0,0 +1,41 @@ +{ + description = "My NixOS machine(s), built on Omnixient"; + + inputs = { + # Pin Omnixient. Point this at the canonical repo or your own fork, and + # ideally pin a release tag (…/omni/v1.0.0) for reproducible updates: + # nix flake update omni # pull the latest Omnixient, never touches your config + omni.url = "github:/omnixient"; + # Reuse Omnixient's nixpkgs so you evaluate a single package set. + nixpkgs.follows = "omni/nixpkgs"; + }; + + outputs = + { omni, ... }: + let + # Your identity + machine settings. Omnixient core reads `settings.theme`; + # the home config reads the rest. Edit these. + settings = { + user = "alice"; + gitName = "Alice Example"; + gitEmail = "alice@example.com"; + hostName = "myhost"; + timeZone = "America/New_York"; + theme = "tokyo-night"; # any module under Omnixient's modules/themes/ + sshKeys = [ ]; # e.g. [ "ssh-ed25519 AAAA… alice@myhost" ] + stateVersion = "24.11"; # release you first installed — never change + }; + in + { + nixosConfigurations.${settings.hostName} = omni.lib.mkSystem settings.hostName { + system = "x86_64-linux"; + user = settings.user; + extraSpecialArgs = { inherit settings; }; + extraHmArgs = { inherit settings; }; + modules = [ + omni.nixosModules.omni # Omnixient desktop/system core + ./hosts/myhost # your hardware + option choices + ]; + }; + }; +} diff --git a/templates/default/hosts/myhost/default.nix b/templates/default/hosts/myhost/default.nix new file mode 100644 index 0000000..3680728 --- /dev/null +++ b/templates/default/hosts/myhost/default.nix @@ -0,0 +1,33 @@ +# Your host. Replace hardware-configuration.nix with your real scan: +# sudo nixos-generate-config --show-hardware-config \ +# > hosts/myhost/hardware-configuration.nix +{ settings, ... }: +{ + imports = [ ./hardware-configuration.nix ]; + + # Omnixient behavior. See Omnixient's docs/packs.md for the full pack catalog. + omni = { + enable = true; + desktop.enable = true; + user = settings.user; + theme = settings.theme; + + packs.development.enable = true; + packs.media.enable = true; + # packs.gaming.enable = true; + # packs.office.enable = true; + + # Opt into sops-nix secrets only if you need them (see Omnixient's + # docs/getting-started.md "Enabling secrets"). Off by default. + # secrets.enable = true; + }; + + # System basics Omnixient core leaves to you: + networking.hostName = settings.hostName; + time.timeZone = settings.timeZone; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + system.stateVersion = settings.stateVersion; +} diff --git a/templates/default/hosts/myhost/hardware-configuration.nix b/templates/default/hosts/myhost/hardware-configuration.nix new file mode 100644 index 0000000..37df4ba --- /dev/null +++ b/templates/default/hosts/myhost/hardware-configuration.nix @@ -0,0 +1,43 @@ +# PLACEHOLDER hardware scan — REPLACE before building on real hardware: +# sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix +# +# This generic stub only lets the template evaluate. The by-label devices +# below will NOT match your machine — a real scan captures your actual +# disks, filesystems, kernel modules, and CPU microcode. +# +# hostPlatform is set by Omnixient's mkSystem; the bootloader (systemd-boot) +# by Omnixient core — so this file only needs filesystems. +{ + config, + lib, + modulesPath, + ... +}: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "ahci" + "usbhid" + "sd_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-label/boot"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + networking.useDHCP = lib.mkDefault true; +} From fa467a346ae31338f76a3b381030fca27c44e228 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:39:39 +0200 Subject: [PATCH 05/10] feat(mksystem): inject home-manager sharedModules OmniXY home needs 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 --- flake.nix | 11 ++--------- lib/mksystem.nix | 9 +++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index 93d2ef2..c99a506 100644 --- a/flake.nix +++ b/flake.nix @@ -245,20 +245,13 @@ # that won't match real hardware, so don't `switch` to it. Adopters # copy hosts/example → hosts/ and rename this block. See # hosts/example/default.nix and docs/getting-started.md. + # nix-colors/lazyvim/walker home-manager modules are injected by + # mkSystem now, so hosts no longer wire them by hand. example = mkSystem "example" { inherit system; user = settings.user; extraSpecialArgs = { inherit settings; }; extraHmArgs = { inherit settings; }; - modules = [ - { - home-manager.sharedModules = [ - inputs.nix-colors.homeManagerModules.default - inputs.lazyvim.homeManagerModules.default - inputs.walker.homeManagerModules.default - ]; - } - ]; }; # ISO image for live USB/DVD. This is a variant rather than a diff --git a/lib/mksystem.nix b/lib/mksystem.nix index 477d4c4..068d5ec 100644 --- a/lib/mksystem.nix +++ b/lib/mksystem.nix @@ -155,6 +155,15 @@ nixpkgs.lib.nixosSystem { currentSystemUser = user; } // extraHmArgs; + # Omnixient's home.nix depends on these home-manager modules + # (colorScheme via nix-colors, programs.lazyvim, programs.walker). + # Inject them for every host so consumers don't wire them by hand; + # re-importing the same module from a host's `modules` is a no-op. + home-manager.sharedModules = [ + inputs.nix-colors.homeManagerModules.default + inputs.lazyvim.homeManagerModules.default + inputs.walker.homeManagerModules.default + ]; } # Pre-create the home-manager activation script's expected # directory tree. See modules/home-manager-bootstrap.nix for From f42d4482ff453e30e9658a77f78318c52307bd49 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:43:53 +0200 Subject: [PATCH 06/10] fix(fastfetch): handle null omnixy.preset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `${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 --- modules/fastfetch.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/fastfetch.nix b/modules/fastfetch.nix index 02549e1..4b4ec8b 100644 --- a/modules/fastfetch.nix +++ b/modules/fastfetch.nix @@ -165,7 +165,7 @@ in }, { "type": "custom", - "format": " 󰣇 Preset: ${cfg.preset or "custom"}", + "format": " 󰣇 Preset: ${if cfg.preset == null then "custom" else cfg.preset}", "keyColor": "magenta" }, { From 80111632930ead7048dd2701f47eda2798275c34 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:45:21 +0200 Subject: [PATCH 07/10] fix(core): handle null omnixy.preset everywhere it's interpolated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- modules/fastfetch.nix | 2 +- modules/lib.nix | 4 ++-- modules/menus.nix | 2 +- modules/scripts.nix | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/fastfetch.nix b/modules/fastfetch.nix index 4b4ec8b..c35dd17 100644 --- a/modules/fastfetch.nix +++ b/modules/fastfetch.nix @@ -31,7 +31,7 @@ in cat /etc/omni/branding/about.txt echo echo "Theme: ${cfg.theme}" - echo "Preset: ${cfg.preset or "custom"}" + echo "Preset: ${if cfg.preset == null then "custom" else cfg.preset}" echo "User: ${cfg.user}" echo "NixOS Version: $(nixos-version)" echo diff --git a/modules/lib.nix b/modules/lib.nix index e3b9a45..bcb0364 100644 --- a/modules/lib.nix +++ b/modules/lib.nix @@ -148,7 +148,7 @@ in environment.variables = { OMNI_USER = cfg.user; OMNI_THEME = cfg.theme; - OMNI_PRESET = cfg.preset or "custom"; + OMNI_PRESET = if cfg.preset == null then "custom" else cfg.preset; OMNI_CONFIG_DIR = helpers.paths.config; OMNI_CACHE_DIR = helpers.paths.cache; }; @@ -174,7 +174,7 @@ in echo "Configuration:" echo " User: ${cfg.user}" echo " Theme: ${cfg.theme}" - echo " Preset: ${cfg.preset or "none"}" + echo " Preset: ${if cfg.preset == null then "none" else cfg.preset}" echo "" echo "Colors (base16 scheme):" echo " Background: ${helpers.colors.bg}" diff --git a/modules/menus.nix b/modules/menus.nix index 8f3b94c..4d2c0fd 100644 --- a/modules/menus.nix +++ b/modules/menus.nix @@ -44,7 +44,7 @@ in echo -e "''${WHITE} 🚀 Declarative • 🎨 Beautiful • ⚡ Fast''${NC}" echo echo -e "''${BLUE}═══════════════════════════════════════════════════════''${NC}" - echo -e "''${WHITE} Theme: ''${YELLOW}${cfg.theme}''${WHITE} │ User: ''${GREEN}${cfg.user}''${WHITE} │ Preset: ''${PURPLE}${cfg.preset or "custom"}''${NC}" + echo -e "''${WHITE} Theme: ''${YELLOW}${cfg.theme}''${WHITE} │ User: ''${GREEN}${cfg.user}''${WHITE} │ Preset: ''${PURPLE}${if cfg.preset == null then "custom" else cfg.preset}''${NC}" echo -e "''${BLUE}═══════════════════════════════════════════════════════''${NC}" echo } diff --git a/modules/scripts.nix b/modules/scripts.nix index d235439..39fdcdf 100644 --- a/modules/scripts.nix +++ b/modules/scripts.nix @@ -25,7 +25,7 @@ in echo "│ 🐧 OS: NixOS $(nixos-version)" echo "│ 🎨 Theme: ${cfg.theme}" echo "│ 👤 User: ${cfg.user}" - echo "│ 🏠 Preset: ${cfg.preset or "custom"}" + echo "│ 🏠 Preset: ${if cfg.preset == null then "custom" else cfg.preset}" echo "│" echo "│ 🔧 Uptime: $(uptime -p)" echo "│ 💾 Memory: $(free -h | awk 'NR==2{printf "%.1f/%.1fGB (%.0f%%)", $3/1024/1024, $2/1024/1024, $3*100/$2}')" From a054bfaa384ae9bab9dd1f0c99a4cb25b4557ea6 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 10:51:12 +0200 Subject: [PATCH 08/10] docs(getting-started): rewrite for the dependency model 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 --- docs/getting-started.md | 318 +++++++++++++++++++++++----------------- 1 file changed, 180 insertions(+), 138 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 7eabcbe..360c8e3 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,201 +1,243 @@ -# Getting Started — adopting Omnixient on your machine +# Getting Started — adopting Omnixient -Omnixient is a personal NixOS config published as a starting point, not a -turnkey distro installer. Adopting it means **forking it and making it -yours**. Almost everything you need to change is funnelled through one -file (`settings.nix`) plus your machine's hardware scan. +Omnixient is a Hyprland desktop you build on top of, not a turnkey installer. +There are **two ways to adopt it**: -This guide assumes you already have a working NixOS install (or are -installing from the official NixOS ISO). If you don't know NixOS at all, -read [the NixOS manual](https://nixos.org/manual/nixos/stable/) and -[NixOS & Flakes Book](https://nixos-and-flakes.thiscute.world/) first. +1. **As a flake input (recommended)** — your own small repo pins Omnixient as + a dependency. You never edit Omnixient's files, so `nix flake update omni` + pulls upstream changes with zero merge conflicts. This is the path below. +2. **By forking** — clone Omnixient and edit it directly. More control over + Omnixient internals, but you maintain a fork. See + [Forking instead](#forking-instead) at the end. -> **Heads-up:** the `omni` host (`hosts/omni/`) is the maintainer's -> actual machine — a Framework Desktop with WireGuard, the aiolabs dev -> environment, and a Bitcoin/Lightning workflow. You'll want your own -> host directory rather than inheriting all of that. See -> [Step 4](#4-make-it-your-host). +This guide assumes a working NixOS install (or the official NixOS ISO). New +to NixOS? Read the [NixOS manual](https://nixos.org/manual/nixos/stable/) +and the [NixOS & Flakes Book](https://nixos-and-flakes.thiscute.world/) +first. --- -## The two things that are truly yours +## What's yours vs. what's Omnixient's -1. **`settings.nix`** — identity, hostname, timezone, theme, SSH keys, and - the all-important `stateVersion`. One file, fully commented. -2. **`hosts//hardware-configuration.nix`** — the scan of your - actual hardware. Generated by `nixos-generate-config`; never copy - someone else's. +In the dependency model your repo is tiny and owns only **your** stuff: -Everything else (the desktop, theming, packs) is shared and opt-in. +- `flake.nix` — pins Omnixient + your `settings` (identity, hostname, theme…). +- `hosts//default.nix` — which packs/options you want. +- `hosts//hardware-configuration.nix` — your real hardware scan. + +Omnixient (the desktop, theming, packs, modules) comes from the pinned input. +You update it like any dependency; it never touches your files. --- -## 1. Get the repo +## 1. Scaffold your config ```bash -git clone https://git.atitlan.io/aiolabs/omnixient.git ~/omni -cd ~/omni +nix flake init -t github:/omnixient # writes flake.nix + hosts/myhost/ +cd ``` -You can put it anywhere; `/etc/nixos` and `~/omni` both work. Rebuild -commands below use `--flake .#` from inside the clone. +This drops a starter that already wires `omni.lib.mkSystem` + +`omni.nixosModules.omni`. Open `flake.nix` and: + +- set `omni.url` to the real repo (pin a tag for reproducibility, e.g. + `github:/omnixient/v1.0.0`); +- fill in the `settings` block: + +```nix +settings = { + user = "alice"; + gitName = "Alice Example"; + gitEmail = "alice@example.com"; + hostName = "myhost"; + timeZone = "America/New_York"; + theme = "tokyo-night"; # any module under Omnixient's modules/themes/ + sshKeys = [ ]; # e.g. [ "ssh-ed25519 AAAA… alice@myhost" ] + stateVersion = "24.11"; # ⚠ the release you FIRST installed — never change +}; +``` + +> **`stateVersion`** is the field that bites people: it is *not* your +> current NixOS version. It pins stateful defaults from your original +> install; changing it on a live system can break data. ## 2. Generate your hardware scan ```bash -sudo nixos-generate-config --show-hardware-config > /tmp/hardware-configuration.nix +sudo nixos-generate-config --show-hardware-config \ + > hosts/myhost/hardware-configuration.nix ``` -Review it (it captures your disks, filesystems, kernel modules, CPU -microcode). You'll place it into your host directory in step 4. +This captures your disks, filesystems, kernel modules, and CPU microcode. +The template ships a placeholder — replace it before building on real +hardware. -> A stray `hardware-configuration.nix` at the repo root is gitignored on -> purpose — the tracked copy belongs in your host directory. +## 3. Choose packs and options -## 3. Fill in `settings.nix` - -Open `settings.nix` and set every field for your machine: +Edit `hosts/myhost/default.nix`. Core (base system + Hyprland desktop + +theming) is always on; everything else is opt-in: ```nix -{ - user = "alice"; # your Linux username - gitName = "Alice Example"; - gitEmail = "alice@example.com"; - hostName = "nimbus"; # your machine's hostname - timeZone = "America/New_York"; - theme = "tokyo-night"; # any of modules/themes/*.nix - sshKeys = [ - "ssh-ed25519 AAAAC3Nza... alice@nimbus" - ]; - stateVersion = "24.05"; # ⚠ the release you FIRST installed — never change later -} -``` +omni = { + enable = true; + desktop.enable = true; + user = settings.user; + theme = settings.theme; -The comments in the file explain each field. The **`stateVersion`** -warning is the one that bites people: it is *not* your current NixOS -version — it pins stateful defaults from your original install, and -changing it on a live system can break data. - -## 4. Make it your host - -The cleanest path is your own host directory, and there's a ready-made -template to copy — **`hosts/example/`** (a minimal, generic host, kept -build-checked in `flake.nix` so it never rots): - -```bash -cp -r hosts/example hosts/nimbus # name it your host -cp /tmp/hardware-configuration.nix \ - hosts/nimbus/hardware-configuration.nix # your real scan (step 2) -``` - -`hosts/example/default.nix` imports your hardware scan + the shared Omnixient -base and enables a sensible starter set of packs — edit it to taste (it's -fully commented). Then register the host in `flake.nix` (copy the -`example` block, rename it): - -```nix -# flake.nix → nixosConfigurations -nimbus = mkSystem "nimbus" { - inherit system; - user = settings.user; # add `devEnv = true;` if you want the dev-env - extraSpecialArgs = { inherit settings; }; - extraHmArgs = { inherit settings; }; - modules = [ - { home-manager.sharedModules = [ - inputs.nix-colors.homeManagerModules.default - inputs.lazyvim.homeManagerModules.default - inputs.walker.homeManagerModules.default - ]; - } - ]; + packs.development.enable = true; # editors, LSPs, compilers, container CLIs + packs.media.enable = true; # gimp, inkscape, mpv, obs, … + # packs.gaming.enable = true; # Steam, Lutris, Wine + # packs.bitcoin.enable = true; # a real bitcoind + lightning node }; ``` -If your username differs from the template's, also create -`users//home-manager.nix` — copy `users/user/home-manager.nix`, -a one-line shim to the shared `home.nix`. +The full catalog is in **[docs/packs.md](packs.md)**. -**What's maintainer-specific in `hosts/omni/` — leave it out of yours:** -the `framework-desktop-*` hardware module, `wireguard.nix` (a private -tunnel), `omni.packs.aiolabs.enable` and the whole `dev-env { … }` block -(the aiolabs Lightning workflow), and the Framework `fwupd`/polkit rule. +## 4. Track your files, then build -> Prefer the absolute-minimum change? You *can* skip renaming: replace -> `hosts/omni/hardware-configuration.nix` with your scan, strip the -> maintainer-specific lines from `hosts/omni/default.nix`, set -> `settings.hostName`, and build `.#omni`. The flake attribute name and -> your machine's hostname are independent. A dedicated host dir is just -> tidier once you have more than one machine. - -## 5. Choose your packs - -Core (base system + Hyprland desktop + theming) is always on. Everything -else is opt-in via `omni.packs..enable`. The full catalog and the -standalone-import story are in **[docs/packs.md](packs.md)**. - -```nix -omni.packs.media.enable = true; # gimp, inkscape, mpv, obs, … -omni.packs.development.enable = true; # editors, LSPs, compilers, container CLIs -omni.packs.gaming.enable = true; # Steam, Lutris, Wine -# omni.packs.bitcoin.enable = true; # a real bitcoind + lightning node (opt-in import) -``` - -## 6. Build and switch +Flakes only see **git-tracked** files, so stage everything first: ```bash -sudo nixos-rebuild switch --flake .# +git init && git add . +sudo nixos-rebuild switch --flake .#myhost ``` -> **Flakes not enabled yet?** If your existing NixOS install hasn't -> turned on flakes, this first command fails with something like -> `experimental Nix feature 'nix-command' is disabled` — flakes are -> opt-in on stock NixOS. Bootstrap the first build with a one-shot flag: +> **Flakes not enabled yet?** On a stock NixOS install the first command +> fails with `experimental Nix feature 'nix-command' is disabled` — flakes +> are opt-in. Bootstrap the first build with a one-shot flag: > > ```bash -> sudo nixos-rebuild switch --flake .# \ +> sudo nixos-rebuild switch --flake .#myhost \ > --extra-experimental-features "nix-command flakes" > ``` > -> You only need this **once** — Omnixient's own config enables -> `nix-command` and `flakes` (`configuration.nix`), so every later -> `nixos-rebuild` / `omni-rebuild` works without the flag. -> (Alternatively, add -> `nix.settings.experimental-features = [ "nix-command" "flakes" ];` -> to your *current* `/etc/nixos/configuration.nix`, run -> `sudo nixos-rebuild switch`, then come back to this step.) +> Your `hosts/myhost/default.nix` enables flakes permanently, so later +> rebuilds don't need the flag. -On the next boot you'll have the Omnixient desktop. After that, the bundled -helpers take over (`omni-rebuild`, `omni-update`, `omni-theme`, -`omni-help` lists them all — note they're individual `omni-*` -commands, not a single dispatcher). +On the next boot you'll have the Omnixient desktop, plus the bundled helpers +(`omni-rebuild`, `omni-update`, `omni-theme`; `omni-help` lists them). -## 7. Set your password +## 5. Set your password -The template ships `initialPassword = "omni"` (`modules/users.nix`). -Change it immediately after first login: +The default is `initialPassword = "omni"`. Change it after first login: ```bash passwd ``` -For a permanent declarative password, switch to -`hashedPasswordFile` with a sops-managed secret (see -`modules/secrets.nix` and `.sops.yaml`). +For a declarative password, use `hashedPasswordFile` with a sops secret +(see [Secrets](#secrets-optional)). + +--- + +## Already on NixOS? + +Adopting Omnixient on a machine you already run is the same flow, with three +differences — because you're protecting a working system: + +1. **Enable flakes first** (if you're on channels): add + `nix.settings.experimental-features = [ "nix-command" "flakes" ];` to your + current `/etc/nixos/configuration.nix` and `sudo nixos-rebuild switch`. +2. **Reuse what you have** — copy your existing + `hardware-configuration.nix` into `hosts/myhost/`, and carry your + **existing `stateVersion` across verbatim** (never bump it). +3. **Preview before you switch** — Omnixient is a full opinionated desktop + (Hyprland + greetd login manager + services), so it *will* change your + desktop: + ```bash + sudo nixos-rebuild build --flake .#myhost # build only, catch errors + sudo nixos-rebuild build-vm --flake .#myhost && ./result/bin/run-*-vm # try it in a VM + ``` + When happy, `switch`. If it's not what you want, roll back instantly from + the boot menu or `sudo nixos-rebuild switch --rollback` — your old + generation is untouched. + +> If you currently run GNOME/KDE/another login manager, expect overlap with +> greetd + Hyprland; preview in the VM first and disable the old desktop in +> the same switch. + +--- + +## Updating + +```bash +nix flake update omni # pull the latest Omnixient +sudo nixos-rebuild switch --flake .#myhost +``` + +This **can't** conflict with your config — Omnixient is a pinned dependency, +not a checkout. Roll back by reverting `flake.lock`; pin a release with +`omni.url = "github:/omnixient/v1.0.0"`. + +--- + +## Secrets (optional) + +Secrets are **off by default** — a fresh config builds with zero secret +setup. Enable them only if you turn on something that needs one (e.g. an +MCP server) or add your own. Omnixient ships the sops-nix *module*; you supply +the *data*, with **your own** age key: + +```bash +# 1. your master key (back this up!) +nix-shell -p age --run 'age-keygen -o ~/.config/sops/age/keys.txt' # prints age1… + +# 2. declare yourself the recipient (copy Omnixient's .sops.yaml.example) +$EDITOR .sops.yaml # paste your age1… public key + +# 3. create + encrypt your secrets (copy secrets/omni.yaml.example) +nix-shell -p sops --run 'sops secrets/omni.yaml' + +# 4. TRACK the encrypted file — flakes only see git-tracked files +git add .sops.yaml secrets/omni.yaml +``` + +Then enable it in `hosts/myhost/default.nix` and rebuild: + +```nix +omni.secrets.enable = true; +``` + +`modules/secrets.nix` reads `/home//.config/sops/age/keys.txt`, and +only activates when the flag is set *and* `secrets/omni.yaml` exists — so +it never gets in your way until you ask for it. --- ## Building a custom ISO (optional) +From an Omnixient checkout (or `nix build github:/omnixient#omni-iso`): + ```bash -nix build .#omni-iso # → result/iso/nixos-*.iso +nix build .#omni-iso # → result/iso/nixos-*.iso ``` -The ISO is a live Omnixient environment for installing onto new hardware. +A live Omnixient environment for installing onto new hardware. + +--- + +## Forking instead + +If you want to modify Omnixient's own modules/themes rather than just consume +them, fork the repo and edit in place: + +```bash +git clone https://github.com//omnixient.git ~/omni && cd ~/omni +``` + +Then model a host on **`hosts/example/`** (copy it to `hosts//`, +drop in your hardware scan, register it in `flake.nix`), and edit +`settings.nix`. The trade-off is the usual fork one: to get upstream +changes you `git pull` / rebase and resolve conflicts in any files you've +edited. The dependency model above avoids that entirely, which is why it's +recommended for most adopters. + +--- ## Where to go next - **[docs/packs.md](packs.md)** — the pack catalog, enabling/disabling, and reusing packs on a non-Omnixient NixOS. -- **[docs/ARCHITECTURE.md](ARCHITECTURE.md)** — how the flake, `mksystem`, +- **[docs/ARCHITECTURE.md](ARCHITECTURE.md)** — how the flake, `mkSystem`, modules, and theming fit together. - **[docs/system-map.md](system-map.md)** — a file-by-file map of the repo. From 78fb9b4b302c10bc832bdc2bf8d3854c3e91e63e Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 11:23:49 +0200 Subject: [PATCH 09/10] rebrand: fix upstream attribution in README + Omnixient wordmark 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 --- README.md | 8 ++++---- modules/fastfetch.nix | 27 ++++++++------------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 8abb95c..a3c666e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Transform your NixOS installation into a fully-configured, beautiful, and modern ## 🌀 aiolabs/omnixient -This repository is **derived from** [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) and **evolves independently** at [git.atitlan.io/aiolabs/omnixient](https://git.atitlan.io/aiolabs/omnixient). It keeps the desktop layer that omni ships (Hyprland, themes, ISO builder, dev shells) and adds infrastructure for managing a multi-project Bitcoin/Lightning development workflow on top of it. +This repository is **derived from** [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) and **evolves independently** at [git.atitlan.io/aiolabs/omnixient](https://git.atitlan.io/aiolabs/omnixient). It keeps the desktop layer that OmniXY ships (Hyprland, themes, ISO builder, dev shells) and adds infrastructure for managing a multi-project Bitcoin/Lightning development workflow on top of it. We're not actively syncing changes from TheArctesian/omnixy — the diff has grown large enough that the two projects serve different audiences now. If you only want the polished desktop, the original is the right place. If you want the dev environment, fleet deploy story, and aiolabs-specific tooling, this is. @@ -418,7 +418,7 @@ The ISO includes: Issues + PRs at [git.atitlan.io/aiolabs/omnixient/issues](https://git.atitlan.io/aiolabs/omnixient/issues). -This repo evolves independently of TheArctesian/omnixy — we don't sync changes upstream and you don't need to send the same fix to two places. If you want to contribute to the original omni desktop project instead, head to [github.com/TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) directly; the two are now separate projects sharing common ancestry. +This repo evolves independently of TheArctesian/omnixy — we don't sync changes upstream and you don't need to send the same fix to two places. If you want to contribute to the original OmniXY desktop project instead, head to [github.com/TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) directly; the two are now separate projects sharing common ancestry. For aiolabs/omnixient contributions, the dev-env module ships an upstream-PR helper for sending PRs to OUR upstream OSS dependencies (lnbits, lamassu, nix-bitcoin, etc.) — see [`modules/dev-env/docs/upstream-prs.md`](modules/dev-env/docs/upstream-prs.md). @@ -428,7 +428,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file ## 🙏 Acknowledgments -- [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) — the original Omnixient project this is derived from. Desktop, themes, ISO, hyprland config all originate there. We've evolved independently since. +- [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) — the original OmniXY project this is derived from. Desktop, themes, ISO, hyprland config all originate there. We've evolved independently since. - Inspired by [Omakub](https://omakub.org/) and [Omarchy](https://omarchy.org/) by DHH — the original opinionated desktop setups - The dev-env mksystem pattern is adapted from [mitchellh/nixos-config](https://github.com/mitchellh/nixos-config) — see `lib/mksystem.nix` - The dev-env cross-level option forwarding pattern is inspired by [henrysipp/omarchy-nix](https://github.com/henrysipp/omarchy-nix), another NixOS port of omarchy @@ -479,7 +479,7 @@ per-author characterizations as summary, not gospel.)* - [Hyprland Wiki](https://wiki.hyprland.org/) - Hyprland configuration reference - [Nix Package Search](https://search.nixos.org/) - Search available packages - [aiolabs/omnixient issues](https://git.atitlan.io/aiolabs/omnixient/issues) — issues + PRs for this repo -- [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) — the original omni project (separate, no longer tracked for syncing) +- [TheArctesian/omnixy](https://github.com/TheArctesian/omnixy) — the original OmniXY project (separate, no longer tracked for syncing) ## 📚 Learning Resources diff --git a/modules/fastfetch.nix b/modules/fastfetch.nix index c35dd17..34987e2 100644 --- a/modules/fastfetch.nix +++ b/modules/fastfetch.nix @@ -42,29 +42,18 @@ in # Create Omnixient branding directory environment.etc."omni/branding/logo.txt".text = '' - ███████╗███╗ ███╗███╗ ██╗██╗██╗ ██╗██╗ ██╗ - ██╔════╝████╗ ████║████╗ ██║██║╚██╗██╔╝╚██╗ ██╔╝ - ██║ ██╔████╔██║██╔██╗ ██║██║ ╚███╔╝ ╚████╔╝ - ██║ ██║╚██╔╝██║██║╚██╗██║██║ ██╔██╗ ╚██╔╝ - ███████╗██║ ╚═╝ ██║██║ ╚████║██║██╔╝ ██╗ ██║ - ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═╝ + ▟▛ omnixient - Declarative NixOS Configuration + Declarative NixOS Configuration ''; environment.etc."omni/branding/about.txt".text = '' - ╭─────────────────────────────────────────────────────╮ - │ │ - │ ██████╗ ███╗ ███╗███╗ ██╗██╗██╗ ██╗██╗ ██╗│ - │ ██╔═══██╗████╗ ████║████╗ ██║██║╚██╗██╔╝╚██╗ ██╔╝│ - │ ██║ ██║██╔████╔██║██╔██╗ ██║██║ ╚███╔╝ ╚████╔╝ │ - │ ██║ ██║██║╚██╔╝██║██║╚██╗██║██║ ██╔██╗ ╚██╔╝ │ - │ ╚██████╔╝██║ ╚═╝ ██║██║ ╚████║██║██╔╝ ██╗ ██║ │ - │ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═╝ │ - │ │ - │ 🚀 Declarative • 🎨 Beautiful • ⚡ Fast │ - │ │ - ╰─────────────────────────────────────────────────────╯ + ╭───────────────────────────────────────────╮ + │ │ + │ omnixient │ + │ 🚀 Declarative • 🎨 Beautiful • ⚡ Fast │ + │ │ + ╰───────────────────────────────────────────╯ ''; # Create fastfetch configuration From a31369fea86aae4024f144cdd614b16059384532 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 28 Jun 2026 11:45:27 +0200 Subject: [PATCH 10/10] docs: point template + install docs at the real Omnixient repo Replace the 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 --- docs/getting-started.md | 10 +++++----- docs/packs.md | 2 +- templates/default/README.md | 4 ++-- templates/default/flake.nix | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 360c8e3..f747b3e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -33,7 +33,7 @@ You update it like any dependency; it never touches your files. ## 1. Scaffold your config ```bash -nix flake init -t github:/omnixient # writes flake.nix + hosts/myhost/ +nix flake init -t git+https://git.atitlan.io/aiolabs/omnixient # writes flake.nix + hosts/myhost/ cd ``` @@ -41,7 +41,7 @@ This drops a starter that already wires `omni.lib.mkSystem` + `omni.nixosModules.omni`. Open `flake.nix` and: - set `omni.url` to the real repo (pin a tag for reproducibility, e.g. - `github:/omnixient/v1.0.0`); + `git+https://git.atitlan.io/aiolabs/omnixient?ref=v1.0.0`); - fill in the `settings` block: ```nix @@ -167,7 +167,7 @@ sudo nixos-rebuild switch --flake .#myhost This **can't** conflict with your config — Omnixient is a pinned dependency, not a checkout. Roll back by reverting `flake.lock`; pin a release with -`omni.url = "github:/omnixient/v1.0.0"`. +`omni.url = "git+https://git.atitlan.io/aiolabs/omnixient?ref=v1.0.0"`. --- @@ -206,7 +206,7 @@ it never gets in your way until you ask for it. ## Building a custom ISO (optional) -From an Omnixient checkout (or `nix build github:/omnixient#omni-iso`): +From an Omnixient checkout (or `nix build git+https://git.atitlan.io/aiolabs/omnixient#omni-iso`): ```bash nix build .#omni-iso # → result/iso/nixos-*.iso @@ -222,7 +222,7 @@ If you want to modify Omnixient's own modules/themes rather than just consume them, fork the repo and edit in place: ```bash -git clone https://github.com//omnixient.git ~/omni && cd ~/omni +git clone https://git.atitlan.io/aiolabs/omnixient.git ~/omni && cd ~/omni ``` Then model a host on **`hosts/example/`** (copy it to `hosts//`, diff --git a/docs/packs.md b/docs/packs.md index 6d3fdbd..7885e9c 100644 --- a/docs/packs.md +++ b/docs/packs.md @@ -93,7 +93,7 @@ flake as an input and import just the pack you want: ```nix # your own flake.nix -inputs.omni.url = "git+ssh://forgejo@git.atitlan.io/aiolabs/omnixient"; +inputs.omni.url = "git+https://git.atitlan.io/aiolabs/omnixient"; # your host's modules { diff --git a/templates/default/README.md b/templates/default/README.md index 0911b43..a489726 100644 --- a/templates/default/README.md +++ b/templates/default/README.md @@ -1,6 +1,6 @@ # My Omnixient config -Generated from Omnixient's starter template (`nix flake init -t github:/omnixient`). +Generated from Omnixient's starter template (`nix flake init -t git+https://git.atitlan.io/aiolabs/omnixient`). You consume Omnixient as a flake **input** — you do not fork it — so `nix flake update omni` pulls upstream changes without ever touching your files. @@ -32,7 +32,7 @@ sudo nixos-rebuild switch --flake .#myhost This can't conflict with your config — Omnixient is an input, not a checkout. Roll back by reverting `flake.lock`. Pin a release with -`omni.url = "github:/omnixient/v1.0.0"`. +`omni.url = "git+https://git.atitlan.io/aiolabs/omnixient?ref=v1.0.0"`. ## Secrets (optional) diff --git a/templates/default/flake.nix b/templates/default/flake.nix index 19d5232..d8e0c28 100644 --- a/templates/default/flake.nix +++ b/templates/default/flake.nix @@ -5,7 +5,7 @@ # Pin Omnixient. Point this at the canonical repo or your own fork, and # ideally pin a release tag (…/omni/v1.0.0) for reproducible updates: # nix flake update omni # pull the latest Omnixient, never touches your config - omni.url = "github:/omnixient"; + omni.url = "git+https://git.atitlan.io/aiolabs/omnixient"; # Reuse Omnixient's nixpkgs so you evaluate a single package set. nixpkgs.follows = "omni/nixpkgs"; };