tatara-vm 0.2.203

Typed VM definitions — Darwin-hosted Linux guests for tatara-os, authored in tatara-lisp, emitted as vfkit/qemu config
Documentation
//! # tatara-vm — Darwin-hosted Linux guests for tatara-os
//!
//! Typed `VmSpec` authored in tatara-lisp, emitted as config for whichever
//! hypervisor the host has available:
//!
//!   - **`vfkit`** — Apple Virtualization.framework, minimal CLI, JSON config.
//!     Default on Darwin. Installed via nixpkgs' `vfkit` attribute.
//!   - **`qemu`** — portable fallback; KVM on Linux, HVF on Darwin (intel).
//!   - **`kasou`** — pleme-io's own Virtualization.framework wrapper. Used when
//!     we want Rust-native control, no CLI shell-out.
//!
//! The Nix story: the VM's **kernel** + **initrd** + **rootfs** are tatara
//! `Derivation` values. That means every guest is content-addressed, and two
//! identical `VmSpec` values produce the same bytes in `/nix/store`. Darwin
//! hosts the hypervisor; Nix (on Darwin) builds every guest artifact.
//!
//! Lisp authoring:
//!
//! ```lisp
//! (defvm plex-guest
//!   :cpus     4
//!   :memory-mib 4096
//!   :hypervisor (:kind Vfkit)
//!   :kernel   (:bridge "linuxPackages.kernel")
//!   :initrd   (:bridge "tatara.initrd")
//!   :rootfs   (:system plex)
//!   :network  ((:kind Nat :subnet "10.200.0.0/24"))
//!   :shares   ((:host "/Users/drzzln/code" :guest "/mnt/code"))
//!   :cmdline  ("console=hvc0" "init=/bin/tatara-init"))
//! ```

pub mod boot;
pub mod config;
pub mod darwin_rootfs;
pub mod engine;
pub mod guest;
// `maquina` is ENTIRELY a projection onto `maquina_engine::VmShape`, so it
// cannot exist without the optional dependency. It was declared unconditionally
// while `maquina-engine` is `optional = true`, which is why the default build
// failed with E0432 `unresolved import maquina_engine` — the module compiled,
// the crate was never linked. Gated to match the dependency that defines it.
#[cfg(feature = "engines")]
pub mod maquina;
pub mod rootfs;
pub mod vfkit;

pub use boot::{compose, BootManifest};
pub use config::{
    GuestKernel, GuestRootfs, Hypervisor, NetworkKind, NetworkSpec, ShareSpec, VmSpec,
};
pub use darwin_rootfs::DarwinRootfs;
pub use engine::{engine_for, EngineSelectError};
pub use guest::{GuestKind, GuestSpec, ResourceLimits, WasmSpec};
pub use rootfs::{GuestPackage, InitrdContent, InitrdFile, LinuxRootfs};
pub use vfkit::{VfkitEmitter, VfkitJson};