blob: e0d9b88d23bb50d7f687dc54289268aa6d0b5520 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
{ pkgs, config, ... }:
{
virtualisation = {
libvirtd = {
enable = true;
qemu = {
swtpm.enable = true;
ovmf.enable = true;
ovmf.packages = [ pkgs.OVMFFull.fd ];
};
};
spiceUSBRedirection.enable = true;
docker = {
enable = true;
};
};
services.spice-vdagentd.enable = true;
programs.virt-manager.enable = true;
systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 compromyse kvm -" ];
environment.systemPackages = [
pkgs.looking-glass-client
(pkgs.writeShellScriptBin "bind-vfio" ''
modprobe -r nvidia_drm nvidia_modeset nvidia_uvm i2c_nvidia_gpu nvidia
modprobe vfio
modprobe vfio_iommu_type1
modprobe vfio_pci
systemctl --user -M compromyse@ stop pipewire.service pipewire.socket
virsh nodedev-detach pci_0000_01_00_0
virsh nodedev-detach pci_0000_01_00_1
systemctl --user -M compromyse@ restart pipewire.service pipewire.socket
'')
(pkgs.writeShellScriptBin "unbind-vfio" ''
systemctl --user -M compromyse@ stop pipewire.service pipewire.socket
virsh nodedev-reattach pci_0000_01_00_0
virsh nodedev-reattach pci_0000_01_00_1
systemctl --user -M compromyse@ restart pipewire.service pipewire.socket
modprobe -r vfio_pci
modprobe -r vfio_iommu_type1
modprobe -r vfio
modprobe nvidia_drm nvidia_modeset nvidia_uvm i2c_nvidia_gpu nvidia
'')
(pkgs.writeShellScriptBin "pin-cpu" ''
if [[ $1 == "" ]]; then
cpus="8-15"
else
cpus=$1
fi
systemctl set-property --runtime -- user.slice AllowedCPUs="$cpus"
systemctl set-property --runtime -- system.slice AllowedCPUs="$cpus"
systemctl set-property --runtime -- init.scope AllowedCPUs="$cpus"
'')
(pkgs.writeShellScriptBin "unpin-cpu" ''
systemctl set-property --runtime -- user.slice AllowedCPUs=""
systemctl set-property --runtime -- system.slice AllowedCPUs=""
systemctl set-property --runtime -- init.scope AllowedCPUs=""
'')
];
}
|