Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- { pkgs, lib, ... }:
- {
- boot = {
- kernelParams = [
- "iommu=pt"
- "intel_iommu=on"
- "vfio_iommu_type1.allow_unsafe_interrupts=1"
- "kvm.ignore_msrs=1"
- ];
- };
- virtualisation = {
- libvirtd = {
- enable = true;
- qemu = {
- runAsRoot = true;
- ovmf.enable = true;
- verbatimConfig = ''
- user = "spiderunderurbed"
- group = "users"
- namespaces = []
- '';
- };
- };
- };
- environment = {
- systemPackages = [ pkgs.dmidecode ];
- shellAliases = {
- vm-start = "virsh start win11";
- vm-stop = "virsh shutdown win11";
- };
- };
- programs.virt-manager.enable = true;
- virtualisation.libvirtd.hooks.qemu = {
- "AAA" = lib.getExe (
- pkgs.writeShellApplication {
- name = "qemu-hook";
- runtimeInputs = [
- pkgs.libvirt
- pkgs.systemd
- pkgs.kmod
- ];
- text = ''
- GUEST_NAME="$1"
- OPERATION="$2"
- echo "$1"
- echo "$2"
- if [ "$GUEST_NAME" != "win11" ]; then
- exit 0
- fi
- if [ "$OPERATION" == "prepare" ]; then
- systemctl stop display-manager.service
- modprobe -r -a nvidia_uvm nvidia_drm nvidia nvidia_modeset
- virsh nodedev-detach pci_0000_01_00_0
- virsh nodedev-detach pci_0000_01_00_1
- #fix me
- #systemctl set-property --runtime -- user.slice AllowedCPUs=8-15,24-31
- #systemctl set-property --runtime -- system.slice AllowedCPUs=8-15,24-31
- #systemctl set-property --runtime -- init.scope AllowedCPUs=8-15,24-31
- systemctl start display-manager.service
- fi
- if [ "$OPERATION" == "release" ]; then
- systemctl stop display-manager.service
- #fix me
- #systemctl set-property --runtime -- user.slice AllowedCPUs=0-31
- #systemctl set-property --runtime -- system.slice AllowedCPUs=0-31
- #systemctl set-property --runtime -- init.scope AllowedCPUs=0-31
- virsh nodedev-reattach pci_0000_01_00_0
- virsh nodedev-reattach pci_0000_01_00_1
- modprobe -a nvidia_uvm nvidia_drm nvidia nvidia_modeset
- systemctl start display-manager.service
- fi
- '';
- }
- );
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement