This repo is the user-editable, host-specific layer for NiXOA. You edit it
to define your machine, and it imports the immutable core/ library.
Start with the ecosystem guide:
../.profile/README.md
It walks through cloning this repo, editing config/, and applying changes.
The default stack is vm, composed from:
- foundation: overlays, Determinate Nix, Nix settings
- core: NiXOA appliance stack (from
core/) - host: hardware import, package list, firewall ports
- user: Home Manager configuration and optional tools
Edit parts/nix/registry/module-registry.nix to add/remove features or define new
stacks.
config/settings.nix: hostname, timezone, stateVersion, username, sshKeys, enableExtras, boot, firewallconfig/xo.nix: enableXO/enableXenGuest, xoUser/xoGroup, XO config
Important: add at least one SSH key in config/settings.nix before rebuilding,
or you may lock yourself out of the host.
- Version-controlled host configuration (git)
- Home Manager integration for the admin user
- Determinate Nix integration
- Simple diff/commit/apply scripts for daily use
system/
├── AGENTS.md # repo-specific guidance
├── CHANGELOG.md # release history
├── README.md # this file
├── flake.nix # generated entrypoint
├── flake.lock # pinned inputs
├── config.nixoa.toml # optional XO overrides
├── hardware-configuration.nix # generated by NixOS (do not edit)
├── config/ # host settings (edit these)
│ ├── settings.nix
│ ├── packages.nix
│ ├── storage.nix
│ └── xo.nix
├── docs/ # user docs
│ ├── common-tasks.md
│ ├── configuration.md
│ ├── getting-started.md
│ ├── how-it-works.md
│ ├── installation.md
│ ├── troubleshooting.md
│ └── workflow.md
├── modules/
│ ├── user-configuration.nix # aggregates config/*
│ ├── foundation/
│ │ ├── determinate.nix
│ │ ├── nix-settings.nix
│ │ └── overlays.nix
│ ├── core/
│ │ └── appliance.nix
│ ├── host/
│ │ ├── firewall.nix
│ │ ├── hardware.nix
│ │ └── packages.nix
│ └── user/
│ ├── home-manager.nix
│ ├── home.nix
│ ├── snitch.nix
│ └── home/
│ ├── base.nix
│ ├── packages.nix
│ ├── session.nix
│ ├── tools.nix
│ └── shell/
│ ├── default.nix
│ ├── bash.nix
│ ├── extras.nix
│ └── zsh.nix
├── parts/ # flake-parts wiring
│ ├── flake/
│ │ ├── exports.nix
│ │ ├── host-configurations.nix
│ │ └── per-system.nix
│ └── nix/
│ ├── flake-parts/
│ │ ├── dendritic-tools.nix
│ │ └── lib.nix
│ ├── inputs/
│ │ └── core.nix
│ └── registry/
│ ├── architecture.nix
│ ├── configuration-vars.nix
│ ├── module-args.nix
│ └── module-registry.nix
├── scripts/ # helpers (editable)
│ ├── apply-config.sh
│ ├── commit-config.sh
│ ├── history.sh
│ └── show-diff.sh
./scripts/show-diff.sh
./scripts/commit-config.sh "Message"
./scripts/apply-config.sh "Message"
nix flake check .
sudo nixos-rebuild switch --flake .#HOSTNAME -LIf enableExtras = true, a dev shell is available:
nix developOn a fresh host, use Determinate's install cache for the first switch:
sudo nixos-rebuild switch --flake .#HOSTNAME \
--option extra-substituters https://install.determinate.systems \
--option extra-trusted-public-keys cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM=config/is the single source of truth for host settings.hardware-configuration.nixmust not be edited.- Core is not user-editable; treat it as a library input.
This project is designed for homelab/testing environments. For production use,\nconsider the official Xen Orchestra Appliance from Vates.
Apache-2.0