nvidia fix

This commit is contained in:
foglar 2024-12-30 19:29:09 +01:00
parent 80be473c14
commit 3fc6966bf5
5 changed files with 60 additions and 31 deletions

View File

@ -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;

View File

@ -45,7 +45,10 @@
enable = true;
blueman.enable = true;
};
nvidia.enable = true;
nvidia = {
enable = true;
mode = "offload";
};
printing.enable = true;
login = {
sddm.enable = true;

View File

@ -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";

View File

@ -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

View File

@ -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 = {