From f96a5c77766f1ef267e70b9d43ea452979a67fda Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Mon, 16 Dec 2024 13:23:49 +0000 Subject: [PATCH] Add libvirt Signed-off-by: Nikolaos Karaolidis --- .../system/configs/bluetooth/default.nix | 1 + .../common/system/configs/libvirt/default.nix | 34 +++++++++++++++++++ .../user/configs/console/libvirt/default.nix | 16 +++++++++ hosts/eirene/default.nix | 1 + hosts/eirene/users/nick.nix | 1 + 5 files changed, 53 insertions(+) create mode 100644 hosts/common/system/configs/libvirt/default.nix create mode 100644 hosts/common/user/configs/console/libvirt/default.nix diff --git a/hosts/common/system/configs/bluetooth/default.nix b/hosts/common/system/configs/bluetooth/default.nix index e82451e..125e224 100644 --- a/hosts/common/system/configs/bluetooth/default.nix +++ b/hosts/common/system/configs/bluetooth/default.nix @@ -9,6 +9,7 @@ }; environment.persistence."/persist"."/var/lib/bluetooth" = { }; + systemd.services.bluetooth.after = [ config.environment.persistence."/persist"."/var/lib/bluetooth".mount ]; diff --git a/hosts/common/system/configs/libvirt/default.nix b/hosts/common/system/configs/libvirt/default.nix new file mode 100644 index 0000000..286fcb8 --- /dev/null +++ b/hosts/common/system/configs/libvirt/default.nix @@ -0,0 +1,34 @@ +{ config, pkgs, ... }: +{ + virtualisation = { + libvirtd = { + enable = true; + qemu = { + swtpm.enable = true; + ovmf.packages = [ pkgs.OVMFFull.fd ]; + }; + }; + + spiceUSBRedirection.enable = true; + }; + + systemd.services.libvirtd-network-default = { + description = "Start Default Virtual Network for Libvirt"; + script = "${config.virtualisation.libvirtd.package}/bin/virsh net-start default"; + preStop = "${config.virtualisation.libvirtd.package}/bin/virsh net-destroy default"; + serviceConfig.Type = "oneshot"; + wantedBy = [ "libvirtd.service" ]; + after = [ "libvirtd.service" ]; + }; + + environment = { + systemPackages = [ config.virtualisation.libvirtd.qemu.swtpm.package ]; + etc = { + "ovmf/edk2-x86_64-secure-code.fd".source = "${config.virtualisation.libvirtd.qemu.package}/share/qemu/edk2-x86_64-secure-code.fd"; + "ovmf/edk2-i386-vars.fd".source = "${config.virtualisation.libvirtd.qemu.package}/share/qemu/edk2-i386-vars.fd"; + }; + persistence."/persist"."/var/lib/libvirt" = { }; + }; + + programs.virt-manager.enable = true; +} diff --git a/hosts/common/user/configs/console/libvirt/default.nix b/hosts/common/user/configs/console/libvirt/default.nix new file mode 100644 index 0000000..92958fc --- /dev/null +++ b/hosts/common/user/configs/console/libvirt/default.nix @@ -0,0 +1,16 @@ +{ + user ? throw "user argument is required", + home ? throw "home argument is required", +}: +{ pkgs, ... }: +{ + home-manager.users.${user}.dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; + }; + "org/virt-manager/virt-manager".xmleditor-enabled = true; + }; + + users.users.${user}.extraGroups = [ "libvirtd" ]; +} diff --git a/hosts/eirene/default.nix b/hosts/eirene/default.nix index 0634423..1fe8c3c 100644 --- a/hosts/eirene/default.nix +++ b/hosts/eirene/default.nix @@ -21,6 +21,7 @@ ../common/system/configs/git ../common/system/configs/gpg-agent ../common/system/configs/impermanence + ../common/system/configs/libvirt ../common/system/configs/lsof ../common/system/configs/ncdu ../common/system/configs/neovim diff --git a/hosts/eirene/users/nick.nix b/hosts/eirene/users/nick.nix index 1c226cc..2c37749 100644 --- a/hosts/eirene/users/nick.nix +++ b/hosts/eirene/users/nick.nix @@ -20,6 +20,7 @@ in (import ../../common/user/configs/console/gpg-agent { inherit user home; }) (import ../../common/user/configs/console/home-manager { inherit user home; }) (import ../../common/user/configs/console/imagemagick { inherit user home; }) + (import ../../common/user/configs/console/libvirt { inherit user home; }) (import ../../common/user/configs/console/ncdu { inherit user home; }) (import ../../common/user/configs/console/neovim { inherit user home; }) (import ../../common/user/configs/console/nix-develop { inherit user home; })