NixVirt provides a NixOS module and a Home Manager module for defining virtual machines (known as “domains”) and networks using libvirt.
Whereas existing NixOS allows you to control the libvirtd daemon, NixVirt allows you to specify domains using libvirt’s XML definition format, and whether they should be running. You can use these domains with libvirt clients such as virt-manager or GNOME Boxes.
I am currently working on providing Nix functions to generate these XML definitions from Nix structures, for a more Nix-like experience.