{ config, lib, pkgs, ... }: { # Enable virtualisation virtualisation.libvirtd = { enable = true; onBoot = "ignore"; onShutdown = "shutdown"; qemuPackage = pkgs.qemu_kvm; }; # Declarative configuration of the VMs systemd.services.sica = { description = "SICA database"; wantedBy = [ "default.target" ]; script = '' disk=/vault/VMs/sica.qcow2 sock=/run/qemu-sica.mon.sock ${pkgs.qemu_kvm}/bin/qemu-kvm -m 1G -nic user,hostfwd=tcp::2222-:22,hostfwd=tcp::5000-:5000 -hda $disk -monitor unix:$sock,server,nowait -nographic ''; preStop = '' echo 'system_powerdown' | ${pkgs.socat}/bin/socat - UNIX-CONNECT:/run/qemu-sica.mon.sock sleep 10 ''; }; }