diff --git a/nixos/flake.nix b/nixos/flake.nix index e5a93b8..54d6be8 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -45,6 +45,7 @@ "spotify" "steam" "steam-original" "steam-run" "vista-fonts" + "nvidia-persistenced" # Docker ]; in utils.lib.mkFlake { diff --git a/nixos/hosts/Tibo-NixFat/default.nix b/nixos/hosts/Tibo-NixFat/default.nix index bb4ab0d..fd0af25 100644 --- a/nixos/hosts/Tibo-NixFat/default.nix +++ b/nixos/hosts/Tibo-NixFat/default.nix @@ -6,6 +6,8 @@ ]; sisyphus = { + desktop.sway.enable = true; + hardware.nvidia = { enable = true; model = "Quadro T2000"; diff --git a/nixos/modules/desktop/sway/default.nix b/nixos/modules/desktop/sway/default.nix index 3b29094..267fe03 100644 --- a/nixos/modules/desktop/sway/default.nix +++ b/nixos/modules/desktop/sway/default.nix @@ -38,6 +38,26 @@ let export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS gnome_schema=org.gnome.desktop.interface # gsettings set $gnome_schema gtk-theme 'Dracula' + + # https://github.com/crispyricepc/sway-nvidia/blob/2101a18698151a61266740f1297158119bf660ac/wlroots-env-nvidia.sh + # Hardware cursors not yet working on wlroots + export WLR_NO_HARDWARE_CURSORS=1 + # Set wlroots renderer to Vulkan to avoid flickering + export WLR_RENDERER=vulkan + # General wayland environment variables + export XDG_SESSION_TYPE=wayland + export QT_QPA_PLATFORM=wayland + export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 + # Firefox wayland environment variable + export MOZ_ENABLE_WAYLAND=1 + export MOZ_USE_XINPUT2=1 + # OpenGL Variables + export GBM_BACKEND=nvidia-drm + export __GL_GSYNC_ALLOWED=0 + export __GL_VRR_ALLOWED=0 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + # Xwayland compatibility + export XWAYLAND_NO_GLAMOR=1 ''; }; in { @@ -100,14 +120,17 @@ in { power-profiles-daemon.enable = true; - xserver.displayManager.session = [{ - manage = "window"; - name = "Sway"; - start = '' - ${pkgs.sway}/bin/sway --unsupported-gpu & - waitPID=$! - ''; - }]; + xserver = { + displayManager.session = [{ + manage = "window"; + name = "Sway"; + start = '' + ${pkgs.sway}/bin/sway --unsupported-gpu & + waitPID=$! + ''; + }]; + videoDrivers = [ "nouveau" ]; + }; }; xdg.portal = { diff --git a/nixos/modules/hardware/nvidia/default.nix b/nixos/modules/hardware/nvidia/default.nix index 077520d..036cf4c 100644 --- a/nixos/modules/hardware/nvidia/default.nix +++ b/nixos/modules/hardware/nvidia/default.nix @@ -3,6 +3,7 @@ let cfg = config.sisyphus.hardware.nvidia; + # The graphics cards for which to do offloading do-offloading = builtins.elem cfg.model [ "Quadro T2000" ]; nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' export __NV_PRIME_RENDER_OFFLOAD=1 @@ -24,8 +25,17 @@ in { }; config = lib.mkIf cfg.enable { - services.xserver.videoDrivers = [ "nvidia" ]; - +# boot = { +# extraModprobeConfig = "options nvidia-drm modeset=1"; +# +# initrd.kernelModules = [ +# "nvidia" +# "nvidia_modeset" +# "nvidia_uvm" +# "nvidia_drm" +# ]; +# }; + hardware = { opengl = { enable = true; @@ -33,7 +43,7 @@ in { driSupport32Bit = true; }; nvidia = { - open = true; + open = false; package = config.boot.kernelPackages.nvidiaPackages.stable; modesetting.enable = true; nvidiaSettings = cfg.gui-settings; @@ -42,6 +52,9 @@ in { finegrained = do-offloading; }; + # Avoid flickering + forceFullCompositionPipeline = true; + prime = lib.mkMerge [ (lib.mkIf do-offloading { offload = {