34 lines
646 B
Nix
34 lines
646 B
Nix
{
|
|||
|
|
writeShellApplication,
|
||
|
|
kmod,
|
||
|
|
systemd,
|
||
|
|
}:
|
||
|
|
|
||
|
|
writeShellApplication {
|
||
|
|
name = "vfio_startup";
|
||
|
|
runtimeInputs = [
|
||
|
|
kmod
|
||
|
|
systemd
|
||
|
|
];
|
||
|
|
text = ''
|
||
|
|
# Stop the service that uses the GPU
|
||
|
|
echo "Stopping the display manager..."
|
||
|
|
systemctl stop display-manager.service
|
||
|
|
|
||
|
|
# Unload the GPU modules
|
||
|
|
echo "Unloading the GPU modules..."
|
||
|
|
modprobe -r nvidia_uvm
|
||
|
|
modprobe -r nvidia_drm
|
||
|
|
modprobe -r nvidia_modeset
|
||
|
|
modprobe -r nvidia
|
||
|
|
|
||
|
|
# Insert the vfio modules
|
||
|
|
echo "Inserting the vfio modules..."
|
||
|
|
modprobe vfio
|
||
|
|
modprobe vfio_pci
|
||
|
|
modprobe vfio_iommu_type1
|
||
|
|
|
||
|
|
echo "Aaaand... off you go!"
|
||
|
|
'';
|
||
|
|
}
|