Skip to content

About

The user input flake and system profiler for NiXOA

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

NiXOA System (Host Configuration)

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.

Getting Started

Start with the ecosystem guide:

  • ../.profile/README.md

It walks through cloning this repo, editing config/, and applying changes.

Quick Links

Feature Sets

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.

Where to Edit Basics

  • config/settings.nix: hostname, timezone, stateVersion, username, sshKeys, enableExtras, boot, firewall
  • config/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.

Highlights

  • Version-controlled host configuration (git)
  • Home Manager integration for the admin user
  • Determinate Nix integration
  • Simple diff/commit/apply scripts for daily use

Full Tree (System)

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

Common Commands

./scripts/show-diff.sh
./scripts/commit-config.sh "Message"
./scripts/apply-config.sh "Message"

nix flake check .
sudo nixos-rebuild switch --flake .#HOSTNAME -L

If enableExtras = true, a dev shell is available:

nix develop

First Rebuild (Determinate Cache)

On 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=

Notes

  • config/ is the single source of truth for host settings.
  • hardware-configuration.nix must not be edited.
  • Core is not user-editable; treat it as a library input.

Important Notice

This project is designed for homelab/testing environments. For production use,\nconsider the official Xen Orchestra Appliance from Vates.

License

Apache-2.0

About

The user input flake and system profiler for NiXOA

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages