- Shell 78.6%
- Nix 21.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Wire flake/fleet-diff from the allod-tools input into the host home composition, alongside flake-status and flake-update-cascade. fleet-diff calls none of lib/workspace.sh's helpers, so prepending that library unconditionally trips shellcheck SC2329 on all four unused function definitions and writeShellApplication fails the build. workspaceTool therefore gains a useWorkspaceLib argument, default true, which fleet-diff sets to false. The other four tools' derivation paths are unchanged. flake/fleet-diff does not exist on allod/tools master yet, so this cannot build until allod/tools PR 136 merges and the allod-tools lock advances in allod/archetypes. Refs allod/nexus#37 |
||
| checks/microvm | ||
| docs | ||
| hooks | ||
| nix | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| setup.sh | ||
nexus
NixOS host framework for an Allod nexus: a libvirt/QEMU VM host with agenix secrets and the provisioning/rotation script toolchain.
The flake exports:
nixosModules.host: virtualization, networking, security defaults, provisioning tools, and host utilities.nixosModules.microvmHost: the microvm.nix host runtime, added alongsidenixosModules.hostby a deployment that runs microvm guests. Both runtimes coexist; libvirt stays first-class.homeModules.host: Allod operator commands and the provisioning scripts.
This repository contains no machine identity, disk UUIDs, credentials, or
personal packages. It is designed to be consumed alongside a private
profiles fork.
Flake input
Add the framework to the consumer flake and follow its shared dependencies:
nexus = {
url = "git+ssh://git@forge.example.org:2222/owner/nexus.git";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
inputs.agenix.follows = "agenix";
};
Import nexus.nixosModules.host into the host's NixOS module list and
nexus.homeModules.host into the host user's Home Manager imports.
Host System Support
nexus exposes packages and checks for these Linux host systems:
| System | Status |
|---|---|
x86_64-linux |
Tested development target. |
aarch64-linux |
Exposed Tier 1 target, not yet validated on project hardware. |
The flake system list controls where the framework can evaluate its packages and checks. It is separate from deployment inventory: consumers still define VM target systems, machine data, and credentials in their own inventory and secrets inputs.
ARM users should be able to evaluate the framework without patching the flake. Provisioning on ARM still needs hardware validation because QEMU machine types, KVM availability, and UEFI firmware packages differ from the tested x86_64 path.
Documentation
- Integration: module arguments and consumer-owned configuration.
- microVM host runtime: the microvm.nix host module, its options, the generated runtime layout, and per-VM isolation.
- Credentials: authentication paths for private inputs.
- Host key rotation: Nexus host key rotation, external SSH trust gates, and operator validation points.
- Provisioning scripts: commands, development,
deployment, and stale
PATHrecovery. - VM provisioning test plan: planned regression coverage and rollout phases.