Configuration and generations
Rust definitions, NixOS modules, and whole-machine generations.
Airlock's machine configuration combines Rust definitions with ordinary NixOS
modules. Rust defines how the VMs fit together, while each VM's Nix module lets
you customize the system inside it. For example, you can add applications to
usr-home in vms/usr-home.nix.
The configuration is recorded in Git. To build a revision, Rusix translates the Rust definitions into Nix build inputs, which load your modules alongside Airlock's defaults. Nix then builds the systems from that combined configuration.
Once deployed, the software and configuration for dom0 and the VMs are retained together as a machine generation. Whole-machine rollback restores an earlier generation while leaving private data at its current state.