my nix configs for my servers and desktop
1{ config, lib, system, pkgs, modulesPath, inputs, ... }:
2
3{
4 programs.virt-manager.enable = true;
5 virtualisation.spiceUSBRedirection.enable = true;
6 virtualisation.libvirtd = {
7 enable = true;
8 qemu = {
9 package = pkgs.qemu_kvm;
10 runAsRoot = true;
11 swtpm.enable = true;
12 ovmf = {
13 enable = true;
14 packages = [(pkgs.OVMF.override {
15 secureBoot = true;
16 tpmSupport = true;
17 }).fd];
18 };
19 };
20 hooks.qemu = {
21 win11 = ./scripts/vm-win11-hook.sh;
22 };
23 };
24
25 systemd.services.libvirtd = {
26 path = let
27 env = pkgs.buildEnv {
28 name = "qemu-hook-env";
29 paths = with pkgs; [
30 bash
31 libvirt
32 kmod
33 systemd
34 ripgrep
35 sd
36 ];
37 };
38 in
39 [ env ];
40
41 /*preStart =
42 ''
43 mkdir -p /var/lib/libvirt/hooks
44 mkdir -p /var/lib/libvirt/hooks/qemu.d/win10/prepare/begin
45 mkdir -p /var/lib/libvirt/hooks/qemu.d/win10/release/end
46 mkdir -p /var/lib/libvirt/vgabios
47
48 ln -sf /home/regent/symlinks/qemu /var/lib/libvirt/hooks/qemu
49 ln -sf /home/regent/symlinks/kvm.conf /var/lib/libvirt/hooks/kvm.conf
50 ln -sf /home/regent/symlinks/start.sh /var/lib/libvirt/hooks/qemu.d/win11/prepare/begin/start.sh
51 ln -sf /home/regent/symlinks/stop.sh /var/lib/libvirt/hooks/qemu.d/win11/release/end/stop.sh
52
53 chmod +x /var/lib/libvirt/hooks/qemu
54 chmod +x /var/lib/libvirt/hooks/kvm.conf
55 chmod +x /var/lib/libvirt/hooks/qemu.d/win11/prepare/begin/start.sh
56 chmod +x /var/lib/libvirt/hooks/qemu.d/win11/release/end/stop.sh
57 '';*/
58 };
59
60 users.extraUsers.regent.extraGroups = [ "libvirtd" ];
61}