1414</p >
1515
1616A Nix Flake to build NixOS and run it on one of several Type-2
17- Hypervisors on NixOS/Linux. The project is intended to provide a more
17+ Hypervisors on NixOS/Linux or macOS . The project is intended to provide a more
1818isolated alternative to ` nixos-container ` . You can either build and
1919run MicroVMs like Nix packages, or alternatively install them as
2020systemd services declaratively in your host's Nix Flake or
@@ -26,8 +26,8 @@ imperatively with the provided `microvm` command.
2626
2727- MicroVMs are Virtual Machines but use special device interfaces
2828 (virtio) for high performance.
29- - This project runs them on NixOS hosts.
30- - You can choose one of five hypervisors for each MicroVM.
29+ - This project runs them on NixOS/Linux hosts and macOS (via vfkit) .
30+ - You can choose from eight hypervisors for each MicroVM.
3131- MicroVMs have a fixed RAM allocation (default: 512 MB) but can be
3232 shrunk using ` microvm-balloon `
3333- MicroVMs have a read-only root disk with either a prepopulated
@@ -40,20 +40,21 @@ imperatively with the provided `microvm` command.
4040 a block device, or alternatively as a shared directory hierarchy
4141 through * 9p* or * virtiofs* .
4242- Zero, one, or more virtual tap ethernet network interfaces can be
43- attached to a MicroVM. ` qemu ` and ` kvmtool ` also support * user*
43+ attached to a MicroVM. ` qemu ` , ` kvmtool ` , and ` vfkit ` also support * user*
4444 networking which requires no additional setup on the host.
4545
4646## Hypervisors
4747
48- | Hypervisor | Language | Restrictions |
49- | -------------------------------------------------------------------------| ----------| ------------------------------------------|
50- | [ qemu] ( https://www.qemu.org/ ) | C | |
51- | [ cloud-hypervisor] ( https://www.cloudhypervisor.org/ ) | Rust | no 9p shares |
52- | [ firecracker] ( https://firecracker-microvm.github.io/ ) | Rust | no 9p/virtiofs shares |
53- | [ crosvm] ( https://chromium.googlesource.com/chromiumos/platform/crosvm/ ) | Rust | 9p shares broken |
54- | [ kvmtool] ( https://github.com/kvmtool/kvmtool ) | C | no virtiofs shares, no control socket |
55- | [ stratovirt] ( https://github.com/openeuler-mirror/stratovirt ) | Rust | no 9p/virtiofs shares, no control socket |
56- | [ alioth] ( https://github.com/google/alioth ) | Rust | no virtiofs shares, no control socket |
48+ | Hypervisor | Language | Restrictions |
49+ | -------------------------------------------------------------------------| ----------| -------------------------------------------------------|
50+ | [ qemu] ( https://www.qemu.org/ ) | C | |
51+ | [ cloud-hypervisor] ( https://www.cloudhypervisor.org/ ) | Rust | no 9p shares |
52+ | [ firecracker] ( https://firecracker-microvm.github.io/ ) | Rust | no 9p/virtiofs shares |
53+ | [ crosvm] ( https://chromium.googlesource.com/chromiumos/platform/crosvm/ ) | Rust | 9p shares broken |
54+ | [ kvmtool] ( https://github.com/kvmtool/kvmtool ) | C | no virtiofs shares, no control socket |
55+ | [ stratovirt] ( https://github.com/openeuler-mirror/stratovirt ) | Rust | no 9p/virtiofs shares, no control socket |
56+ | [ alioth] ( https://github.com/google/alioth ) | Rust | no virtiofs shares, no control socket |
57+ | [ vfkit] ( https://github.com/crc-org/vfkit ) | Go | macOS only, no 9p shares, no tap/bridge networking |
5758
5859
5960## Installation
@@ -85,6 +86,9 @@ nix run microvm#cloud-hypervisor-example
8586nix run microvm#crosvm-example
8687nix run microvm#kvmtool-example
8788nix run microvm#stratovirt-example
89+
90+ # On macOS only:
91+ nix run microvm#vfkit-example
8892```
8993
9094### Run a MicroVM example with nested MicroVMs on 5 different Hypervisors
0 commit comments