diff --git a/hosts/samhain/nixos/default.nix b/hosts/samhain/nixos/default.nix index 46954a58..3c0bcecd 100644 --- a/hosts/samhain/nixos/default.nix +++ b/hosts/samhain/nixos/default.nix @@ -16,7 +16,6 @@ in { ../../../services/restic.nix ../../../services/nginx.nix ./thermal - ./vm ./transmission.nix ./jellyfin.nix ./virtualhosts.nix diff --git a/hosts/samhain/nixos/vm/default.nix b/hosts/samhain/nixos/vm/default.nix deleted file mode 100644 index 4f865f9a..00000000 --- a/hosts/samhain/nixos/vm/default.nix +++ /dev/null @@ -1,130 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - /* # libvirtd is used for our virtual machine - virtualisation.libvirtd = { - enable = true; - qemuOvmf = true; - qemuRunAsRoot = false; - onBoot = "ignore"; - onShutdown = "shutdown"; - }; - */ - - # required for guest reboots with the 580 - boot.extraModulePackages = [ - (pkgs.linuxPackagesFor config.boot.kernelPackages.kernel).vendor-reset - ]; # required groups for various intentions - users.users.kat.extraGroups = [ "libvirtd" "input" "qemu-libvirtd" ]; - - # video=efifb:off allows the 580 to be passed through regardless of being the boot display and allows the 560 to act as a console device - # pci=noats means that it doesn't kernel panic on my specific configuration - boot.kernelParams = [ - "amd_iommu=on" - "pci=noats" - "video=efifb:off" - ]; # eventually switch to vfio-pci.ids to replace the boot.initrd.preDeviceCommands block - boot.initrd.availableKernelModules = - [ "amdgpu" "vfio-pci" ]; # vfio-pci is required for pci passthrough - boot.kernelModules = - [ "i2c-dev" "kvm-amd" ]; # i2c-dev is required for DDC/CI for screenstub - - # this section makes vfio-pci be injected as the driver for the 580 and its audio thingy - # it should be replaced as mentioned with vfio-pci.ids - # the script provided: https://alexbakker.me/post/nixos-pci-passthrough-qemu-vfio.html can be used to find iommu groups - boot.initrd.preDeviceCommands = '' - DEVS="0000:26:00.0 0000:26:00.1" - for DEV in $DEVS; do - echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override - done - modprobe -i vfio-pci - ''; - - # rules are for: - # * monitor ddc/ci - # * input for qemu - # * rule for event-mouse (i hope?) - # * uinput rule - services.udev.extraRules = '' - SUBSYSTEM=="i2c-dev", GROUP="users", MODE="0660" - SUBSYSTEM=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="12a8", GROUP="users" - SUBSYSTEM=="usb", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="fa58", GROUP="users" - SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="fa58", ATTRS{idProduct}=="04d9", GROUP="users" - SUBSYSTEM=="misc", KERNEL=="uinput", OPTIONS+="static_node=uinput", MODE="0660", GROUP="uinput" - SUBSYSTEM=="vfio", OWNER="kat", GROUP="users" - SUBSYSTEM=="block", ACTION=="add", ATTRS{model}=="HFS256G32TNF-N3A", ATTRS{wwid}=="t10.ATA HFS256G32TNF-N3A0A MJ8BN15091150BM1Z ", OWNER="kat" - SUBSYSTEM=="block", ACTION=="add", ATTR{partition}=="2", ATTR{size}=="1953503232", ATTRS{wwid}=="naa.5000039fe6e8614e", OWNER="kat" - ''; - - environment.systemPackages = [ - # pkgs.nur.repos.arc.packages.screenstub # for DDC/CI and input forwarding (currently disabled due to using changed source) - pkgs.arc.pkgs.scream-arc # for audio forwarding - pkgs.screenstub # for input handling - pkgs.ddcutil # for diagnostics on DDC/CI - pkgs.kat-vm - ]; - - security.pam.loginLimits = [{ - domain = "@users"; - type = "-"; - item = "memlock"; - value = "unlimited"; - }]; - - systemd.extraConfig = "DefaultLimitMEMLOCK=infinity"; - - /* systemd.services.libvirtd-guest-win10 = { - enable = true; - after = [ "libvirtd.service" ]; - requires = [ "libvirtd.service" ]; - serviceConfig = { - type = "oneshot"; - RemainAfterExit = "yes"; - }; - script = let - xml = - pkgs.writeText "libvirt-guest-win10.xml" (import ./win10.xml.nix { }); - in '' - uuid="$(${pkgs.libvirt}/bin/virsh domuuid 'win10' || true)" - ${pkgs.libvirt}/bin/virsh define <(sed "s/UUID/$uuid/" '${xml}') - ${pkgs.libvirt}/bin/virsh start 'win10'; - ''; - preStop = '' - ${pkgs.libvirt}/bin/virsh shutdown 'win10' - let "timeout = $(date +%s) + 120" - while [ "$(${pkgs.libvirt}/bin/virsh list --name | grep --count '^win10$')" -gt 0 ]; do - if [ "$(date +%s)" -ge "$timeout" ]; then - # meh, we warned it... - ${pkgs.libvirt}/bin/virsh destroy 'win10' - else - # the machine is still running, let's give it some time to shut down - sleep 0.5 - fi - done - ''; - }; - */ - - katnet.public.tcp.ports = [ 4010 ]; - - home-manager.users.kat = { - # audio for vm on startup - systemd.user.services = { - scream = { - Unit = { Description = "Scream - Audio forwarding from the VM."; }; - Service = { - ExecStart = "${pkgs.scream-arc}/bin/scream -i virbr0 -o pulse"; - Restart = "always"; - }; - Install = { WantedBy = [ "default.target" ]; }; - }; - }; - }; - - # BusId is used to specify the graphics card used for X / lightdm / wayland - # BusId must be decimal conversion of the equivalent but matching the format, this was 0000:25:00.0 - services.xserver.deviceSection = lib.mkDefault '' - Option "TearFree" "true" - BusID "PCI:37:0:0" - ''; -} diff --git a/hosts/samhain/nixos/vm/screenstub.yml b/hosts/samhain/nixos/vm/screenstub.yml deleted file mode 100644 index 332cd22b..00000000 --- a/hosts/samhain/nixos/vm/screenstub.yml +++ /dev/null @@ -1,85 +0,0 @@ -screens: -- monitor: # fill in with info from `screenstub detect` - manufacturer: BNQ - model: BenQ GW2270 - #serial: "..." - guest_source: # Could be automatically detected, but best to fill in if monitor has more than two inputs - name: HDMI-1 - #value: 0x0f # can also specify raw VCP value - host_source: # Usually automatically detected - name: HDMI-2 - #value: 0x11 - ddc: - #minimal_delay: 100ms # minimum time to wait between switching inputs again - #guest: [] # disable input switching - #host: [] # disable input switching - guest: # configure how to switch to the guest - #- guest_wait # wait until guest agent responds, otherwise might get stranded on other input - - ddc # (default) Use ddc-rs - #exec: ["ddcutil", "-g", "BNQ", "setvcp", "0x60", "{}"] - #- exec: [ddccontrol, -r, "0x60", -w, "{}", /dev/i2c-5] - host: # configure how to switch back from the guest - - ddc # (default) Controls DDC from the host GPU - requires no guest agent but many monitors won't support this - #- exec: ["ddcutil", "-g", "BNQ", "setvcp", "0x60", "{}"] - #- guest_exec: ["C:/ddcset.exe", "setvcp", "60", "{:x}"] # or "0x{:x}" for hex input value - #- guest_exec: ["C:/ScreenBright.exe", "-set", "0x60", "{}"] # "{}" is for decimal input value - #- exec: ["ssh", "user@vm", "ddcutil", "setvcp", "0x60", "{}"] # system commands can also be used - -qemu: - #routing: qmp # (default) does not require extra configuration or dependencies - #routing: spice # no external requirements # CURRENTLY UNIMPLEMENTED - #routing: input-linux # requires uinput - routing: virtio-host # requires uinput, recommended for performance, requires vioinput drivers in guest - #driver: ps2 # use PS/2 in the guest for all input devices (absolute mouse mode unsupported) - #driver: usb # use USB keyboard/mouse/tablet in the guest - #driver: virtio # Recommended but vioinput drivers must be installed in guest - #keyboard_driver: ps2 # (default) can also be set separately per input type, this should rarely be necessary - #relative_driver: usb # (default) - #absolute_driver: usb # (default) - #driver: virtio - #relative_driver: virtio - qmp_socket: /tmp/vfio-qmp # path to QMP socket - ga_socket: /tmp/vfio-qga # path to Guest Agent socket - -key_remap: # Arbitrary keys can be remapped in the guest - # See https://docs.rs/input-linux/*/input_linux/enum.Key.html for a list of key names available (mouse buttons can also be used) - LeftMeta: Reserved # disable the windows key - RightAlt: LeftMeta # remap right alt to trigger the windows key - -hotkeys: # Trigger various events on key combinations - #- toggle_grab:y - # xdevice: # CURRENTLY UNIMPLEMENTED - # devices: # Only grab specific devices from Xorg - # - "..." - #- exec: [echo, hi] # Execute an arbitrary system command - #- show_host # switch to the host display - #- show_guest # switch to the guest display - #- toggle_show # switch the current display - #- unstick_guest # causes all held keys to be released in the guest - #- shutdown # safely shuts the guest system down - #- reboot # reboots the guest - #- exit # quits screenstub -- triggers: [G] - modifiers: [LeftMeta] - events: - - toggle_grab: - x: - mouse: false # Confine input/mouse to window - - toggle_grab: - evdev: # evdev grab is useful for playing games that don't work with absolute mouse events - exclusive: false # grab exclusive access from the device(s) - #new_device_name: "unique-grab-name" # create a new uinput device for this grab - xcore_ignore: [absolute] # which events to ignore from the window (key, button, absolute) - evdev_ignore: [button] # which events to ignore from the evdev device - devices: # List of devices to forward to guest - - /dev/input/by-id/usb-04d9_USB_Laser_Game_Mouse-event-mouse - - unstick_host # force-depress all Xorg keys (prevents keys getting stuck) -- triggers: [T] - modifiers: [LeftMeta] - on_release: false - events: - - toggle_show - -exit_events: # Events to trigger on window close / exit -- show_host -#- shutdown diff --git a/hosts/samhain/nixos/vm/win10.xml.nix b/hosts/samhain/nixos/vm/win10.xml.nix deleted file mode 100644 index 4eeb2d71..00000000 --- a/hosts/samhain/nixos/vm/win10.xml.nix +++ /dev/null @@ -1,268 +0,0 @@ -{ ... }: - -'' - - win10 - UUID - - - - - - 12582912 - 12582912 - 6 - 1 - - - - - - - - - - - - hvm - /run/libvirt/nix-ovmf/OVMF_CODE.fd - /var/lib/libvirt/qemu/nvram/win10_VARS.fd - - - - - - - - - - - - - - - - - - - - - - - destroy - restart - destroy - - - - - - /run/libvirt/nix-emulators/qemu-system-x86_64 - - - - - -
- - - - - - - -
- - -
- - - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - -
- - -
- - -
- - -
- - - - - -
- - - - - - - - - - - -
- - -
- - - - - -
- - -
- - - -
- -
- - -
- - -
- - -
- - - - - - - - - - - - - - - - - -'' diff --git a/pkgs/kat-vm/vbios.rom b/pkgs/kat-vm/vbios.rom deleted file mode 100644 index 9f48d8fb..00000000 Binary files a/pkgs/kat-vm/vbios.rom and /dev/null differ