From 73ed58dbdcd184668423f0e1517c82b47ea56a36 Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Thu, 14 Mar 2024 15:49:02 +0000 Subject: [PATCH] sunshine: refactor module, reorder things around --- hosts/architect/sunshine.nix | 209 ++++++++++++++++++----------------- 1 file changed, 108 insertions(+), 101 deletions(-) diff --git a/hosts/architect/sunshine.nix b/hosts/architect/sunshine.nix index c6cb9fa..ff69da6 100644 --- a/hosts/architect/sunshine.nix +++ b/hosts/architect/sunshine.nix @@ -53,6 +53,44 @@ let sunshinePkg = pkgs.unstablePkgs.sunshine.override { cudaSupport = true; }; in { + boot.kernelModules = [ "uinput" ]; + + environment = { + systemPackages = with pkgs; [ + sunshinePkg + xorg.xrandr + xorg.xorgserver + xorg.libxcvt + gamemode + ]; + + variables = { + VDPAU_DRIVER = "nvidia"; + LIBVA_DRIVER_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; + }; + + hardware = { + pulseaudio.enable = true; + opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; + + nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + open = false; + nvidiaSettings = true; + package = nvidia-patch.patch-nvenc (nvidia-patch.patch-fbc nvidiaPackage); + }; + }; + + programs.steam.enable = true; + security = { polkit.extraConfig = '' polkit.addRule(function(action, subject) { @@ -68,87 +106,74 @@ in rtkit.enable = true; }; + services = { + avahi = { + enable = true; + publish.userServices = true; + }; - environment.systemPackages = with pkgs; [ - sunshinePkg - xorg.xrandr - xorg.xorgserver - xorg.libxcvt - gamemode - ]; + udev.extraRules = '' + KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess" + ''; - environment.variables = { - VDPAU_DRIVER = "nvidia"; - LIBVA_DRIVER_NAME = "nvidia"; - NVD_BACKEND = "direct"; + xserver = { + enable = true; + videoDrivers = [ "nvidia" ]; + displayManager = { + sddm = { + enable = true; + wayland.enable = false; + autoLogin.relogin = true; + }; + autoLogin = { + inherit user; + enable = true; + }; + }; + desktopManager.xfce.enable = true; + + monitorSection = '' + HorizSync 5.0 - 1000.0 + VertRefresh 5.0 - 1000.0 + Option "DPMS" + + # 2240x1290 @ 30.00 Hz (GTF) hsync: 39.39 kHz; pclk: 113.44 MHz + Modeline "2240x1290_30.00" 113.44 2240 2328 2560 2880 1290 1291 1294 1313 -HSync +Vsync + # 2240x1290 @ 60.00 Hz (GTF) hsync: 80.10 kHz; pclk: 243.50 MHz + Modeline "2240x1290_60.00" 243.50 2240 2400 2640 3040 1290 1291 1294 1335 -HSync +Vsync + # 2240x1290 @ 120.00 Hz (GTF) hsync: 165.84 kHz; pclk: 517.42 MHz + Modeline "2240x1290_120.00" 517.42 2240 2432 2680 3120 1290 1291 1294 1382 -HSync +Vsync + # 2800x1290 @ 30.00 Hz (GTF) hsync: 39.39 kHz; pclk: 141.80 MHz + Modeline "2800x1290_30.00" 141.80 2800 2912 3200 3600 1290 1291 1294 1313 -HSync +Vsync + # 2800x1290 @ 60.00 Hz (GTF) hsync: 80.10 kHz; pclk: 303.74 MHz + Modeline "2800x1290_60.00" 303.74 2800 2992 3296 3792 1290 1291 1294 1335 -HSync +Vsync + # 2800x1290 @ 120.00 Hz (GTF) hsync: 165.84 kHz; pclk: 647.44 MHz + Modeline "2800x1290_120.00" 647.44 2800 3040 3352 3904 1290 1291 1294 1382 -HSync +Vsync + ''; + + deviceSection = '' + VendorName "NVIDIA Corporation" + Option "CustomEDID" "DFP-1:/etc/X11/120edid.bin" + Option "ConnectedMonitor" "DFP-1" + ''; + + screenSection = '' + Monitor "Configured Monitor" + DefaultDepth 24 + + Option "ModeValidation" "NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, AllowNonEdidModes, NoEdidMaxPClkCheck" + Option "UseEdidfreqs" "False" + Option "TripleBuffer" "False" + + SubSection "Display" + Depth 24 + EndSubSection + ''; + }; }; sound.enable = true; - services.xserver = { - enable = true; - videoDrivers = [ "nvidia" ]; - displayManager = { - sddm = { - enable = true; - wayland.enable = false; - autoLogin.relogin = true; - }; - autoLogin = { - inherit user; - enable = true; - }; - }; - desktopManager.xfce.enable = true; - - monitorSection = '' - HorizSync 5.0 - 1000.0 - VertRefresh 5.0 - 1000.0 - Option "DPMS" - - # 2240x1290 @ 30.00 Hz (GTF) hsync: 39.39 kHz; pclk: 113.44 MHz - Modeline "2240x1290_30.00" 113.44 2240 2328 2560 2880 1290 1291 1294 1313 -HSync +Vsync - # 2240x1290 @ 60.00 Hz (GTF) hsync: 80.10 kHz; pclk: 243.50 MHz - Modeline "2240x1290_60.00" 243.50 2240 2400 2640 3040 1290 1291 1294 1335 -HSync +Vsync - # 2240x1290 @ 120.00 Hz (GTF) hsync: 165.84 kHz; pclk: 517.42 MHz - Modeline "2240x1290_120.00" 517.42 2240 2432 2680 3120 1290 1291 1294 1382 -HSync +Vsync - # 2800x1290 @ 30.00 Hz (GTF) hsync: 39.39 kHz; pclk: 141.80 MHz - Modeline "2800x1290_30.00" 141.80 2800 2912 3200 3600 1290 1291 1294 1313 -HSync +Vsync - # 2800x1290 @ 60.00 Hz (GTF) hsync: 80.10 kHz; pclk: 303.74 MHz - Modeline "2800x1290_60.00" 303.74 2800 2992 3296 3792 1290 1291 1294 1335 -HSync +Vsync - # 2800x1290 @ 120.00 Hz (GTF) hsync: 165.84 kHz; pclk: 647.44 MHz - Modeline "2800x1290_120.00" 647.44 2800 3040 3352 3904 1290 1291 1294 1382 -HSync +Vsync - ''; - - deviceSection = '' - VendorName "NVIDIA Corporation" - Option "CustomEDID" "DFP-1:/etc/X11/120edid.bin" - Option "ConnectedMonitor" "DFP-1" - ''; - - screenSection = '' - Monitor "Configured Monitor" - DefaultDepth 24 - - Option "ModeValidation" "NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, AllowNonEdidModes, NoEdidMaxPClkCheck" - Option "UseEdidfreqs" "False" - Option "TripleBuffer" "False" - - SubSection "Display" - Depth 24 - EndSubSection - ''; - }; - - # Sunshine user, service and config - users.users.${user} = { - isNormalUser = true; - home = "/home/${user}"; - description = "Sunshine Server"; - extraGroups = [ "wheel" "networkmanager" "input" "video" "sound" ]; - openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230" ]; - }; - systemd = { targets = { sleep.enable = false; @@ -174,33 +199,15 @@ in }; }; - services.avahi.publish.userServices = true; - boot.kernelModules = [ "uinput" ]; - - services.udev.extraRules = '' - KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess" - ''; - - programs.steam.enable = true; - - hardware = { - pulseaudio.enable = true; - opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; + users = { + users.${user} = { + isNormalUser = true; + home = "/home/${user}"; + description = "Sunshine Server"; + extraGroups = [ "wheel" "networkmanager" "input" "video" "sound" ]; + openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230" ]; }; - nvidia = { - modesetting.enable = true; - powerManagement.enable = false; - powerManagement.finegrained = false; - open = false; - nvidiaSettings = true; - package = nvidia-patch.patch-nvenc (nvidia-patch.patch-fbc nvidiaPackage); - # package = config.boot.kernelPackages.nvidiaPackages.production; - }; + groups.media.members = [ user ]; }; - - users.groups.media.members = [ user ]; }