From 3fc6966bf5dc794c337fd9937f7802ce6a1fe27b Mon Sep 17 00:00:00 2001 From: foglar Date: Mon, 30 Dec 2024 19:29:09 +0100 Subject: [PATCH] nvidia fix --- ginoza/configuration.nix | 5 +-- kogami/configuration.nix | 5 ++- nixos/home/desktop/hyprland/hyprland.nix | 5 +-- nixos/system/settings/nvidia.nix | 45 +++++++++++++++--------- nixos/system/system.nix | 31 +++++++++++----- 5 files changed, 60 insertions(+), 31 deletions(-) diff --git a/ginoza/configuration.nix b/ginoza/configuration.nix index 813f1b7..d636eab 100644 --- a/ginoza/configuration.nix +++ b/ginoza/configuration.nix @@ -42,8 +42,9 @@ enable = true; blueman.enable = false; }; - nvidiaRTX.enable = false; - nvidiaRTX.disable = false; + nvidia = { + enable = false; + }; printing.enable = true; login = { sddm.enable = false; diff --git a/kogami/configuration.nix b/kogami/configuration.nix index b4c4761..981f4a2 100644 --- a/kogami/configuration.nix +++ b/kogami/configuration.nix @@ -45,7 +45,10 @@ enable = true; blueman.enable = true; }; - nvidia.enable = true; + nvidia = { + enable = true; + mode = "offload"; + }; printing.enable = true; login = { sddm.enable = true; diff --git a/nixos/home/desktop/hyprland/hyprland.nix b/nixos/home/desktop/hyprland/hyprland.nix index c779722..25459d4 100644 --- a/nixos/home/desktop/hyprland/hyprland.nix +++ b/nixos/home/desktop/hyprland/hyprland.nix @@ -28,6 +28,7 @@ wlogout.enable = lib.mkDefault true; }; + # XDG Portals configuration xdg.portal.enable = true; xdg.portal.config = { common = { @@ -36,11 +37,11 @@ }; xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-hyprland]; + # Services for the Hyprland module services.network-manager-applet.enable = true; services.dunst.enable = true; - programs.hyprlock.enable = true; - + # Home session variables home.sessionVariables = { WLR_NO_HARDWARE_CURSORS = "1"; NIXOS_OZONE_WL = "1"; diff --git a/nixos/system/settings/nvidia.nix b/nixos/system/settings/nvidia.nix index 6519162..66f4942 100644 --- a/nixos/system/settings/nvidia.nix +++ b/nixos/system/settings/nvidia.nix @@ -4,22 +4,23 @@ ... }: { options = { - sys.nvidia = lib.mkOption { - type = lib.types.attrs; - default = { - enable = false; - disable = false; - }; + sys.nvidia.enable = lib.mkEnableOption "Enable NVIDIA graphics support"; + + sys.nvidia.mode = lib.mkOption { + type = lib.types.enum ["offload" "sync" "reverse" "disable" "none"]; + default = "none"; description = '' - NVIDIA graphics support. + NVIDIA graphics mode. ''; }; - sys.nvidiaRTX.enable = lib.mkEnableOption "Enable NVIDIA Prime graphics support"; - sys.nvidiaRTX.disable = lib.mkEnableOption "Disable NVIDIA graphics completely"; + sys.nvidia.optimus.offload = lib.mkEnableOption "Enable NVIDIA Prime graphics support"; + sys.nvidia.optimus.sync = lib.mkEnableOption "Enable NVIDIA Prime sync"; + sys.nvidia.optimus.reverse = lib.mkEnableOption "Enable NVIDIA Prime reverse sync"; + sys.nvidia.disable = lib.mkEnableOption "Disable NVIDIA graphics completely"; }; config = lib.mkMerge [ - (lib.mkIf config.sys.nvidiaRTX.enable { + (lib.mkIf config.sys.nvidia.enable { hardware = { graphics.enable = true; }; @@ -54,17 +55,27 @@ nvidiaSettings = true; prime.amdgpuBusId = "pci@000:04:0"; prime.nvidiaBusId = "pci@000:01:0"; - - prime.offload = { - enable = true; - enableOffloadCmd = true; - }; - # Optionally, you may need to select the appropriate driver version for your specific GPU. package = config.boot.kernelPackages.nvidiaPackages.stable; }; }) - (lib.mkIf config.sys.nvidiaRTX.disable { + (lib.mkIf config.sys.nvidia.optimus.offload { + hardware.nvidia.prime.offload = { + enable = true; + enableOffloadCmd = true; + }; + }) + (lib.mkIf config.sys.nvidia.optimus.sync { + hardware.nvidia.prime.sync.enable = true; + }) + (lib.mkIf config.sys.nvidia.optimus.reverse { + hardware.nvidia.prime = { + reverseSync.enable = true; + # Enable if using an external GPU + allowExternalGpu = false; + }; + }) + (lib.mkIf config.sys.nvidia.disable { boot.extraModprobeConfig = '' blacklist nouveau options nouveau modeset=0 diff --git a/nixos/system/system.nix b/nixos/system/system.nix index c03afd9..5fa5dfc 100644 --- a/nixos/system/system.nix +++ b/nixos/system/system.nix @@ -42,16 +42,29 @@ enable = lib.mkDefault true; blueman.enable = lib.mkDefault true; }; - nvidia.enable = lib.mkDefault false; - nvidiaRTX.enable = - if config.sys.nvidia.enable == true - then lib.mkDefault true - else lib.mkDefault false; - nvidiaRTX.disable = - if config.sys.nvidia.enable == true - then lib.mkDefault false - else lib.mkDefault true; + nvidia = { + enable = lib.mkDefault false; + mode = lib.mkDefault "none"; + optimus = { + offload = + if config.sys.nvidia.mode == "offload" + then true + else false; + sync = + if config.sys.nvidia.mode == "sync" + then true + else false; + reverse = + if config.sys.nvidia.mode == "reverse" + then true + else false; + }; + disable = + if config.sys.nvidia.mode == "disable" + then true + else false; + }; printing.enable = lib.mkDefault true; login = {