Guest User

Untitled

a guest
Apr 21st, 2025
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. { pkgs, lib, ... }:
  2. let
  3. #script = pkgs.writeScriptBin "KWIN_DRM_DEVICES.sh" ''
  4. # realpath /dev/dri/by-path/pci-0000\:00\:02.0-card
  5. #'';
  6. # tmpfilePath = "${builtins.getHome}/.config/plasma-workspace/env/export-vars";
  7.  
  8. # moveScript = ''
  9. # mv $out/bin/KWIN_DRM_DEVICES.sh ${tmpfilePath}
  10. # '';
  11. coreutils = pkgs.writeShellApplication {
  12. name = "coreutils";
  13. runtimeInputs = [
  14. pkgs.coreutils
  15. ];
  16. text = ''
  17. realpath /dev/dri/by-path/pci-0000:00:02.0-card
  18. '';
  19. };
  20.  
  21. in
  22. {
  23. boot = {
  24. kernelParams = [
  25. # "module_blacklist=i915"
  26. # "NVreg_EnableGpuFirmware=0"
  27. "iommu=pt"
  28. "intel_iommu=on"
  29. "vfio_iommu_type1.allow_unsafe_interrupts=1"
  30. "kvm.ignore_msrs=1"
  31. # "initcall_blacklist=simpledrm_platform_driver_init"
  32. # "nvidia_drm.fbdev=1"
  33. ];
  34. };
  35. virtualisation = {
  36. libvirtd = {
  37. enable = true;
  38. qemu = {
  39. # package = pkgs.qemu_kvm.overrideAttrs (old: {
  40. # patches = old.patches ++ [
  41. # (builtins.toFile "qemu.diff" (builtins.readFile ./qemu-8.2.0.patch))
  42. ## (builtins.readFile /etc/nixos/qemu-8.2.0.patch)
  43. # ];
  44. ## });
  45. runAsRoot = true;
  46. ovmf.enable = true;
  47. verbatimConfig = ''
  48. user = "spiderunderurbed"
  49. group = "users"
  50. namespaces = []
  51. '';
  52. };
  53. };
  54. };
  55. environment = {
  56. systemPackages = [ pkgs.dmidecode ];
  57. shellAliases = {
  58. vm-start = "virsh start win11";
  59. vm-stop = "virsh shutdown win11";
  60. };
  61. };
  62.  
  63. programs.virt-manager.enable = true;
  64.  
  65. virtualisation.libvirtd.hooks.qemu = {
  66. "AAA" = lib.getExe (
  67. pkgs.writeShellApplication {
  68. name = "qemu-hook";
  69.  
  70. runtimeInputs = [
  71. pkgs.libvirt
  72. pkgs.systemd
  73. pkgs.kmod
  74. ];
  75.  
  76. text = ''
  77. GUEST_NAME="$1"
  78. OPERATION="$2"
  79.  
  80. # echo "$1"
  81. # echo "$2"
  82.  
  83. if [ "$GUEST_NAME" != "win11" ]; then
  84. exit 0
  85. fi
  86.  
  87. VFIO_FLAG="/tmp/enable-vfio-switch"
  88. if [ ! -f "$VFIO_FLAG" ]; then
  89. echo "VFIO flag not found, skipping GPU passthrough steps."
  90. exit 0
  91. fi
  92.  
  93. if [ "$OPERATION" == "prepare" ]; then
  94. #systemctl stop sddm.service
  95. systemctl stop display-manager.service
  96. # systemctl set-environment KWIN_DRM_DEVICES=${coreutils}
  97. echo true > /tmp/kwin_drm_devices_flag
  98. modprobe -r -a nvidia_uvm nvidia_drm nvidia nvidia_modeset
  99. virsh nodedev-detach pci_0000_01_00_0
  100. virsh nodedev-detach pci_0000_01_00_1
  101. #fix me
  102. #systemctl set-property --runtime -- user.slice AllowedCPUs=8-15,24-31
  103. #systemctl set-property --runtime -- system.slice AllowedCPUs=8-15,24-31
  104. #systemctl set-property --runtime -- init.scope AllowedCPUs=8-15,24-31
  105. systemctl start display-manager.service
  106.  
  107. virsh net-start default
  108. fi
  109.  
  110. if [ "$OPERATION" == "release" ]; then
  111. #systemctl stop sddm.service
  112. systemctl stop display-manager.service
  113. #fix me
  114. #systemctl set-property --runtime -- user.slice AllowedCPUs=0-31
  115. #systemctl set-property --runtime -- system.slice AllowedCPUs=0-31
  116. #systemctl set-property --runtime -- init.scope AllowedCPUs=0-31
  117. virsh nodedev-reattach pci_0000_01_00_0
  118. virsh nodedev-reattach pci_0000_01_00_1
  119. modprobe -a nvidia_uvm nvidia_drm nvidia nvidia_modeset
  120. # systemctl start sddm.service
  121. systemctl start display-manager.service
  122. fi
  123.  
  124. '';
  125. }
  126. );
  127. };
  128.  
  129. systemd.user.tmpfiles.users.spiderunderurbed.rules = [
  130. # "L+ %h/.config/plasma-workspace/env/ - - - - ${script}"
  131. ];
  132. systemd.tmpfiles.rules = [
  133. "f /dev/shm/looking-glass 0660 spiderunderurbed qemu-libvirtd -"
  134. ];
  135. }
  136.  
Advertisement
Add Comment
Please, Sign In to add comment