some changes

This commit is contained in:
zack 2025-04-27 11:11:51 -04:00
parent 2d25c605b7
commit 825f05c50a
No known key found for this signature in database
GPG key ID: EE8A2B709E2401D1
45 changed files with 1826 additions and 1586 deletions

View file

@ -43,18 +43,17 @@ in {
# Command to execute. Use full paths for robustness.
# We use sh -c to run multiple commands sequentially.
# pactl is provided by the pulseaudio package.
ExecStart = ''
${pkgs.runtimeShell} -c '
echo "Attempting to load Cava combine modules..."
# Load null sink (returns non-zero if it fails AND module doesn't exist)
${pkgs.pulseaudio}/bin/pactl load-module module-null-sink sink_name=cava-line-in sink_properties=device.description="Cava_Combined_LineIn"
# Load loopbacks (returns non-zero on failure)
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line3__source" sink=cava-line-in latency_msec=10
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line4__source" sink=cava-line-in latency_msec=10
echo "Finished loading Cava combine modules (ignore errors if already loaded)."
# Exit successfully even if modules were already loaded (pactl might return 0)
exit 0
'';
ExecStart = "${pkgs.writeShellScriptBin "cava-start" ''
echo "Attempting to load Cava combine modules..."
# Load null sink (returns non-zero if it fails AND module doesn't exist)
${pkgs.pulseaudio}/bin/pactl load-module module-null-sink sink_name=cava-line-in sink_properties=device.description="Cava_Combined_LineIn"
# Load loopbacks (returns non-zero on failure)
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line3__source" sink=cava-line-in latency_msec=10
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line4__source" sink=cava-line-in latency_msec=10
echo "Finished loading Cava combine modules (ignore errors if already loaded)."
# Exit successfully even if modules were already loaded (pactl might return 0)
exit 0
''}/bin/cava-start";
# Prevent service from restarting automatically
Restart = "no";

View file

@ -8,6 +8,104 @@
with lib;
with lib.custom; let
cfg = config.hardware.gpu-passthru;
startScript = ''
#!/run/current-system/sw/bin/bash
# Debugging
exec 19>/home/zoey/Desktop/startlogfile
BASH_XTRACEFD=19
set -x
# Load variables we defined
source "/etc/libvirt/hooks/kvm.conf"
# Change to performance governor
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Isolate host to core 0
systemctl set-property --runtime -- user.slice AllowedCPUs=0-8
systemctl set-property --runtime -- system.slice AllowedCPUs=0-8
systemctl set-property --runtime -- init.scope AllowedCPUs=0-8
# disable vpn
mullvad disconnect -w
# Logout
# source "/home/owner/Desktop/Sync/Files/Tools/logout.sh"
# Stop display manager
systemctl stop display-manager.service
killall gdm-wayland-session
killall niri
killall niri-session
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# Avoid race condition
sleep 5
# Unload NVIDIA kernel modules
modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Detach GPU devices from host
virsh nodedev-detach $VIRSH_GPU_VIDEO
virsh nodedev-detach $VIRSH_GPU_AUDIO
# Load vfio module
modprobe vfio-pci
'';
stopScript = ''
#!/run/current-system/sw/bin/bash
# Debugging
exec 19>/home/zoey/Desktop/stoplogfile
BASH_XTRACEFD=19
set -x
# Load variables we defined
source "/etc/libvirt/hooks/kvm.conf"
# Unload vfio module
modprobe -r vfio-pci
# Attach GPU devices from host
virsh nodedev-reattach $VIRSH_GPU_VIDEO
virsh nodedev-reattach $VIRSH_GPU_AUDIO
# Read nvidia x config
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
# Load NVIDIA kernel modules
modprobe nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Avoid race condition
sleep 5
# Bind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind
# Bind VTconsoles
echo 1 > /sys/class/vtconsole/vtcon0/bind
echo 1 > /sys/class/vtconsole/vtcon1/bind
# Start display manager
systemctl start display-manager.service
# Return host to all cores
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
# Change to powersave governor
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
'';
in {
options.hardware.gpu-passthru = with types; {
enable = mkBoolOpt false "Enable support for single gpu-passthru";
@ -113,106 +211,22 @@ in {
};
"libvirt/hooks/qemu.d/win10/prepare/begin/start.sh" = {
text = ''
#!/run/current-system/sw/bin/bash
# Debugging
exec 19>/home/zoey/Desktop/startlogfile
BASH_XTRACEFD=19
set -x
# Load variables we defined
source "/etc/libvirt/hooks/kvm.conf"
# Change to performance governor
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Isolate host to core 0
systemctl set-property --runtime -- user.slice AllowedCPUs=0-8
systemctl set-property --runtime -- system.slice AllowedCPUs=0-8
systemctl set-property --runtime -- init.scope AllowedCPUs=0-8
# disable vpn
mullvad disconnect -w
# Logout
# source "/home/owner/Desktop/Sync/Files/Tools/logout.sh"
# Stop display manager
systemctl stop display-manager.service
killall gdm-wayland-session
killall niri
killall niri-session
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# Avoid race condition
sleep 5
# Unload NVIDIA kernel modules
modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Detach GPU devices from host
virsh nodedev-detach $VIRSH_GPU_VIDEO
virsh nodedev-detach $VIRSH_GPU_AUDIO
# Load vfio module
modprobe vfio-pci
'';
text = startScript;
mode = "0755";
};
"libvirt/hooks/qemu.d/win10/release/end/stop.sh" = {
text = ''
#!/run/current-system/sw/bin/bash
text = stopScript;
mode = "0755";
};
# Debugging
exec 19>/home/zoey/Desktop/stoplogfile
BASH_XTRACEFD=19
set -x
"libvirt/hooks/qemu.d/bazzite/prepare/begin/start.sh" = {
text = startScript;
mode = "0755";
};
# Load variables we defined
source "/etc/libvirt/hooks/kvm.conf"
# Unload vfio module
modprobe -r vfio-pci
# Attach GPU devices from host
virsh nodedev-reattach $VIRSH_GPU_VIDEO
virsh nodedev-reattach $VIRSH_GPU_AUDIO
# Read nvidia x config
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
# Load NVIDIA kernel modules
modprobe nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Avoid race condition
sleep 5
# Bind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind
# Bind VTconsoles
echo 1 > /sys/class/vtconsole/vtcon0/bind
echo 1 > /sys/class/vtconsole/vtcon1/bind
# Start display manager
systemctl start display-manager.service
# Return host to all cores
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
# Change to powersave governor
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
'';
"libvirt/hooks/qemu.d/bazzite/release/end/stop.sh" = {
text = stopScript;
mode = "0755";
};
};