mirror of https://github.com/materusPL/Nixerus.git
materusPC: update settings, keep older linux-firmware
This commit is contained in:
parent
377806748f
commit
7bea59425a
|
@ -3,10 +3,9 @@
|
||||||
#Kernel
|
#Kernel
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
boot.kernelParams = [ "nvme_core.default_ps_max_latency_us=0" "nvme_core.io_timeout=255" "nvme_core.max_retries=10" "nvme_core.shutdown_timeout=10" "amd_iommu=on" "iommu=pt" "pcie_acs_override=downstream,multifunction" ];
|
boot.kernelParams = [ "nvme_core.default_ps_max_latency_us=0" "nvme_core.io_timeout=255" "nvme_core.max_retries=10" "nvme_core.shutdown_timeout=10" "amd_iommu=on" "iommu=pt" "pcie_acs_override=downstream,multifunction" ];
|
||||||
boot.kernelModules = [ "nbd" "i2c_dev" "kvm_amd" "vfio-pci" "v4l2loopback" "kvmfr" ];
|
boot.kernelModules = [ "i2c_dev" "kvm_amd" "vfio-pci" "v4l2loopback" "kvmfr" ];
|
||||||
boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ''
|
||||||
options kvm_amd nested=1
|
options kvm_amd nested=1
|
||||||
options nbd max_part=16
|
|
||||||
'';
|
'';
|
||||||
boot.kernel.sysctl = {"vm.max_map_count" = 1000000;};
|
boot.kernel.sysctl = {"vm.max_map_count" = 1000000;};
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
{ config, pkgs, lib, inputs, materusFlake, materusPkgs, ... }:
|
{ config, pkgs, lib, inputs, materusFlake, materusPkgs, ... }:
|
||||||
|
let
|
||||||
|
pkg = import (builtins.fetchTarball {
|
||||||
|
name = "nixos-23.05";
|
||||||
|
url = "https://github.com/nixos/nixpkgs/archive/4ecab3273592f27479a583fb6d975d4aba3486fe.tar.gz";
|
||||||
|
sha256 = "sha256:10wn0l08j9lgqcw8177nh2ljrnxdrpri7bp0g7nvrsn9rkawvlbf";
|
||||||
|
}) {system = pkgs.system;};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
|
@ -9,7 +16,7 @@
|
||||||
hardware.firmware = with pkgs; [
|
hardware.firmware = with pkgs; [
|
||||||
materusPkgs.amdgpu-pro-libs.firmware.vcn
|
materusPkgs.amdgpu-pro-libs.firmware.vcn
|
||||||
materusPkgs.amdgpu-pro-libs.firmware
|
materusPkgs.amdgpu-pro-libs.firmware
|
||||||
linux-firmware
|
pkg.linux-firmware
|
||||||
alsa-firmware
|
alsa-firmware
|
||||||
sof-firmware
|
sof-firmware
|
||||||
];
|
];
|
||||||
|
|
|
@ -101,20 +101,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
onBoot = "ignore";
|
|
||||||
onShutdown = "shutdown";
|
|
||||||
qemu.ovmf.enable = true;
|
|
||||||
qemu.ovmf.packages = [ pkgs.OVMFFull.fd ];
|
|
||||||
qemu.runAsRoot = true;
|
|
||||||
qemu.swtpm.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
users.users.materus = {
|
users.users.materus = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "pipewire" "wheel" "networkmanager" "input" "kvm" "libvirt-qemu" "libvirt" "libvirtd" "podman" "lxd" ]; # Enable ‘sudo’ for the user.
|
extraGroups = [ "audio" "video" "render" "pipewire" "wheel" "networkmanager" "input" "kvm" "libvirt-qemu" "libvirt" "libvirtd" "podman" "lxd" ]; # Enable ‘sudo’ for the user.
|
||||||
shell = pkgs.bashInteractive;
|
shell = pkgs.bashInteractive;
|
||||||
description = "Mateusz Słodkowicz";
|
description = "Mateusz Słodkowicz";
|
||||||
# packages = with pkgs; [
|
# packages = with pkgs; [
|
||||||
|
@ -290,7 +282,7 @@ in
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bubblewrap
|
bubblewrap
|
||||||
bindfs
|
bindfs
|
||||||
|
@ -318,200 +310,154 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
system.activationScripts.libvirt-hooks.text =
|
system.activationScripts.libvirt-hooks.text =
|
||||||
''
|
''
|
||||||
ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks
|
ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"libvirt/hooks/qemu" = {
|
|
||||||
text =
|
|
||||||
''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Author: Sebastiaan Meijer (sebastiaan@passthroughpo.st)
|
|
||||||
#
|
|
||||||
# Copy this file to /etc/libvirt/hooks, make sure it's called "qemu".
|
|
||||||
# After this file is installed, restart libvirt.
|
|
||||||
# From now on, you can easily add per-guest qemu hooks.
|
|
||||||
# Add your hooks in /etc/libvirt/hooks/qemu.d/vm_name/hook_name/state_name.
|
|
||||||
# For a list of available hooks, please refer to https://www.libvirt.org/hooks.html
|
|
||||||
#
|
|
||||||
|
|
||||||
GUEST_NAME="$1"
|
|
||||||
HOOK_NAME="$2"
|
|
||||||
STATE_NAME="$3"
|
|
||||||
MISC="''${@:4}"
|
|
||||||
|
|
||||||
BASEDIR="$(dirname $0)"
|
|
||||||
|
|
||||||
HOOKPATH="$BASEDIR/qemu.d/$GUEST_NAME/$HOOK_NAME/$STATE_NAME"
|
|
||||||
|
|
||||||
set -e # If a script exits with an error, we should as well.
|
|
||||||
|
|
||||||
# check if it's a non-empty executable file
|
|
||||||
if [ -f "$HOOKPATH" ] && [ -s "$HOOKPATH"] && [ -x "$HOOKPATH" ]; then
|
|
||||||
eval \"$HOOKPATH\" "$@"
|
|
||||||
elif [ -d "$HOOKPATH" ]; then
|
|
||||||
while read file; do
|
|
||||||
# check for null string
|
|
||||||
if [ ! -z "$file" ]; then
|
|
||||||
eval \"$file\" "$@"
|
|
||||||
fi
|
|
||||||
done <<< "$(find -L "$HOOKPATH" -maxdepth 1 -type f -executable -print;)"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
mode = "0755";
|
|
||||||
};
|
|
||||||
|
|
||||||
"libvirt/hooks/kvm.conf" = {
|
|
||||||
text =
|
|
||||||
''
|
|
||||||
VIRSH_GPU_VIDEO=pci_0000_01_00_0
|
|
||||||
VIRSH_GPU_AUDIO=pci_0000_01_00_1
|
|
||||||
VIRSH_GPU_USB=pci_0000_01_00_2
|
|
||||||
VIRSH_GPU_SERIAL_BUS=pci_0000_01_00_3
|
|
||||||
'';
|
|
||||||
mode = "0755";
|
|
||||||
};
|
|
||||||
|
|
||||||
"libvirt/hooks/qemu.d/win11/prepare/begin/start.sh" = {
|
"libvirt/hooks/qemu.d/win11/prepare/begin/start.sh" = {
|
||||||
text =
|
text =
|
||||||
''
|
''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Debugging
|
# Debugging
|
||||||
exec 19>/home/materus/startlogfile
|
exec 19>/home/materus/startlogfile
|
||||||
BASH_XTRACEFD=19
|
BASH_XTRACEFD=19
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
exec 3>&1 4>&2
|
exec 3>&1 4>&2
|
||||||
trap 'exec 2>&4 1>&3' 0 1 2 3
|
trap 'exec 2>&4 1>&3' 0 1 2 3
|
||||||
exec 1>/home/materus/startlogfile.out 2>&1
|
exec 1>/home/materus/startlogfile.out 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Stop display manager
|
# Stop display manager
|
||||||
killall -u materus
|
killall -u materus
|
||||||
systemctl stop display-manager.service
|
systemctl stop display-manager.service
|
||||||
killall gdm-x-session
|
killall gdm-x-session
|
||||||
#systemctl isolate multi-user.target
|
#systemctl isolate multi-user.target
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
|
|
||||||
# Load variables we defined
|
# Load variables we defined
|
||||||
source "/etc/libvirt/hooks/kvm.conf"
|
source "/etc/libvirt/hooks/kvm.conf"
|
||||||
|
|
||||||
# Isolate host to core 0
|
# Isolate host to core 0
|
||||||
systemctl set-property --runtime -- user.slice AllowedCPUs=0
|
systemctl set-property --runtime -- user.slice AllowedCPUs=0
|
||||||
systemctl set-property --runtime -- system.slice AllowedCPUs=0
|
systemctl set-property --runtime -- system.slice AllowedCPUs=0
|
||||||
systemctl set-property --runtime -- init.scope AllowedCPUs=0
|
systemctl set-property --runtime -- init.scope AllowedCPUs=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Unbind VTconsoles
|
# Unbind VTconsoles
|
||||||
for (( i = 0; i < 16; i++))
|
for (( i = 0; i < 16; i++))
|
||||||
do
|
do
|
||||||
if test -x /sys/class/vtconsole/vtcon"''${i}"; then
|
if test -x /sys/class/vtconsole/vtcon"''${i}"; then
|
||||||
if [ "$(grep -c "frame buffer" /sys/class/vtconsole/vtcon"''${i}"/name)" = 1 ]; then
|
if [ "$(grep -c "frame buffer" /sys/class/vtconsole/vtcon"''${i}"/name)" = 1 ]; then
|
||||||
echo 0 > /sys/class/vtconsole/vtcon"''${i}"/bind
|
echo 0 > /sys/class/vtconsole/vtcon"''${i}"/bind
|
||||||
echo "$DATE Unbinding Console ''${i}"
|
echo "$DATE Unbinding Console ''${i}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Unbind EFI Framebuffer
|
# Unbind EFI Framebuffer
|
||||||
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/unbind
|
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/unbind
|
||||||
|
|
||||||
# Avoid race condition
|
# Avoid race condition
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# Unload NVIDIA kernel modules
|
# Unload NVIDIA kernel modules
|
||||||
modprobe -r nvidia_uvm
|
modprobe -r nvidia_uvm
|
||||||
modprobe -r nvidia_drm
|
modprobe -r nvidia_drm
|
||||||
modprobe -r nvidia_modeset
|
modprobe -r nvidia_modeset
|
||||||
modprobe -r nvidia
|
modprobe -r nvidia
|
||||||
modprobe -r i2c_nvidia_gpu
|
modprobe -r i2c_nvidia_gpu
|
||||||
modprobe -r drm_kms_helper
|
modprobe -r drm_kms_helper
|
||||||
modprobe -r drm
|
modprobe -r drm
|
||||||
|
|
||||||
# Detach GPU devices from host
|
# Detach GPU devices from host
|
||||||
#virsh nodedev-detach $VIRSH_GPU_VIDEO
|
#virsh nodedev-detach $VIRSH_GPU_VIDEO
|
||||||
#virsh nodedev-detach $VIRSH_GPU_AUDIO
|
#virsh nodedev-detach $VIRSH_GPU_AUDIO
|
||||||
#virsh nodedev-detach $VIRSH_GPU_USB
|
#virsh nodedev-detach $VIRSH_GPU_USB
|
||||||
#virsh nodedev-detach $VIRSH_GPU_SERIAL_BUS
|
#virsh nodedev-detach $VIRSH_GPU_SERIAL_BUS
|
||||||
|
|
||||||
# Load vfio module
|
# Load vfio module
|
||||||
modprobe vfio
|
modprobe vfio
|
||||||
modprobe vfio_pci
|
modprobe vfio_pci
|
||||||
modprobe vfio_iommu_type1
|
modprobe vfio_iommu_type1
|
||||||
'';
|
'';
|
||||||
mode = "0755";
|
mode = "0755";
|
||||||
};
|
};
|
||||||
|
|
||||||
"libvirt/hooks/qemu.d/win11/release/end/stop.sh" = {
|
"libvirt/hooks/qemu.d/win11/release/end/stop.sh" = {
|
||||||
text =
|
text =
|
||||||
''
|
''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Debugging
|
# Debugging
|
||||||
exec 19>/home/materus/stoplogfile
|
exec 19>/home/materus/stoplogfile
|
||||||
BASH_XTRACEFD=19
|
BASH_XTRACEFD=19
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
exec 3>&1 4>&2
|
exec 3>&1 4>&2
|
||||||
trap 'exec 2>&4 1>&3' 0 1 2 3
|
trap 'exec 2>&4 1>&3' 0 1 2 3
|
||||||
exec 1>/home/materus/stoplogfile.out 2>&1
|
exec 1>/home/materus/stoplogfile.out 2>&1
|
||||||
|
|
||||||
# Load variables we defined
|
# Load variables we defined
|
||||||
source "/etc/libvirt/hooks/kvm.conf"
|
source "/etc/libvirt/hooks/kvm.conf"
|
||||||
|
|
||||||
# Unload vfio module
|
# Unload vfio module
|
||||||
modprobe -r vfio-pci
|
modprobe -r vfio-pci
|
||||||
modprobe -r vfio_iommu_type1
|
modprobe -r vfio_iommu_type1
|
||||||
modprobe -r vfio
|
modprobe -r vfio
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
modprobe drm
|
modprobe drm
|
||||||
modprobe drm_kms_helper
|
modprobe drm_kms_helper
|
||||||
modprobe i2c_nvidia_gpu
|
modprobe i2c_nvidia_gpu
|
||||||
modprobe nvidia
|
modprobe nvidia
|
||||||
modprobe nvidia_modeset
|
modprobe nvidia_modeset
|
||||||
modprobe nvidia_drm
|
modprobe nvidia_drm
|
||||||
modprobe nvidia_uvm
|
modprobe nvidia_uvm
|
||||||
|
|
||||||
# Attach GPU devices from host
|
# Attach GPU devices from host
|
||||||
#virsh nodedev-reattach $VIRSH_GPU_VIDEO
|
#virsh nodedev-reattach $VIRSH_GPU_VIDEO
|
||||||
#virsh nodedev-reattach $VIRSH_GPU_AUDIO
|
#virsh nodedev-reattach $VIRSH_GPU_AUDIO
|
||||||
#virsh nodedev-reattach $VIRSH_GPU_USB
|
#virsh nodedev-reattach $VIRSH_GPU_USB
|
||||||
#virsh nodedev-reattach $VIRSH_GPU_SERIAL_BUS
|
#virsh nodedev-reattach $VIRSH_GPU_SERIAL_BUS
|
||||||
|
|
||||||
#echo "0000:01:00.0" > /sys/bus/pci/drivers/nvidia/bind
|
#echo "0000:01:00.0" > /sys/bus/pci/drivers/nvidia/bind
|
||||||
# Bind EFI Framebuffer
|
# Bind EFI Framebuffer
|
||||||
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
|
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
|
||||||
|
|
||||||
# Bind VTconsoles
|
# Bind VTconsoles
|
||||||
echo 1 > /sys/class/vtconsole/vtcon0/bind
|
echo 1 > /sys/class/vtconsole/vtcon0/bind
|
||||||
#echo 1 > /sys/class/vtconsole/vtcon1/bind
|
#echo 1 > /sys/class/vtconsole/vtcon1/bind
|
||||||
|
|
||||||
|
|
||||||
# Start display manager
|
# Start display manager
|
||||||
sleep 1
|
sleep 1
|
||||||
systemctl start display-manager.service
|
systemctl start display-manager.service
|
||||||
|
|
||||||
# Return host to all cores
|
# Return host to all cores
|
||||||
systemctl set-property --runtime -- user.slice AllowedCPUs=0-3
|
systemctl set-property --runtime -- user.slice AllowedCPUs=0-3
|
||||||
systemctl set-property --runtime -- system.slice AllowedCPUs=0-3
|
systemctl set-property --runtime -- system.slice AllowedCPUs=0-3
|
||||||
systemctl set-property --runtime -- init.scope AllowedCPUs=0-3
|
systemctl set-property --runtime -- init.scope AllowedCPUs=0-3
|
||||||
'';
|
'';
|
||||||
/*text = ''
|
/*text = ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
reboot
|
reboot
|
||||||
'';*-/
|
'';*-/
|
||||||
mode = "0755";
|
mode = "0755";
|
||||||
|
};
|
||||||
|
"libvirt/vgabios/patched.rom".source = ./vbios.rom;
|
||||||
|
}; */
|
||||||
};
|
};
|
||||||
"libvirt/vgabios/patched.rom".source = ./vbios.rom;
|
};
|
||||||
}; */
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue