43 lines
955 B
Nix
43 lines
955 B
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let cfg = config.sydnix.qemu;
|
|
in {
|
|
options.sydnix.qemu = {
|
|
enable = mkEnableOption "Qemu";
|
|
};
|
|
|
|
config = mkIf cfg.enable
|
|
(let
|
|
# Necessary for UEFI boot with libvirt.
|
|
qemu-uefi = pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" ''
|
|
qemu-system-x86_64 \
|
|
-bios ${pkgs.OVMF.fd}/FV/OVMF.fd \
|
|
"$@"
|
|
'';
|
|
in {
|
|
sydnix.impermanence.directories = [
|
|
# Most importantly, stores images and disks.
|
|
"/var/lib/libvirt"
|
|
];
|
|
|
|
programs.virt-manager.enable = true;
|
|
|
|
environment.systemPackages = [
|
|
pkgs.virtiofsd
|
|
qemu-uefi
|
|
];
|
|
|
|
virtualisation.libvirtd = {
|
|
enable = true;
|
|
qemu.vhostUserPackages = [ pkgs.virtiofsd ];
|
|
};
|
|
|
|
# Hack to enable UEFI support.
|
|
systemd.tmpfiles.rules = [
|
|
"L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"
|
|
];
|
|
});
|
|
}
|