some changes
This commit is contained in:
parent
2d25c605b7
commit
825f05c50a
45 changed files with 1826 additions and 1586 deletions
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue