systemd services on a MicroVM host

The host nixosModule provides a few systemd services for additional bringup which is not available when running a MicroVM interactively from a package.

install-microvm-${name}.service

Creates and prepares a subdirectory under /var/lib/microvms for declarative MicroVMs according to the microvm.vms option.

If the MicroVM subdirectory under /var/lib/microvms already exists, and the MicroVM is configured to be built from a flake's nixosConfigurations, this systemd unit will be skipped. The reason for this behavior is that it is easier to update with the microvm command instead of restarting all virtual machines on a host when doing nixos-rebuild switch.

microvm-tap-interfaces@.service

Creates TAP virtual network interfaces for the user that will run MicroVMs.

microvm-macvtap-interfaces@.service

Creates MACVTAP virtual network interfaces for the user that will run MicroVMs.

microvm-pci-devices@.service

Prepares PCI devices for passthrough (VFIO).

microvm-virtiofsd@.service

Starts a fleet of virtiofsd servers, one for each virtiofs mountpoint in microvm.shares.

microvm@.service

Runs the actual MicroVM through /var/lib/microvms/%i/current/bin/microvm-run where %i is the MicroVM name.

microvms.target

Depends on the microvm@.service instance for all configured microvm.autostart.