diff --git a/modules/nixos/hardware/graphics-amd-igpu-only/default.nix b/modules/nixos/hardware/graphics-amd-igpu-only/default.nix new file mode 100644 index 0000000..be877ef --- /dev/null +++ b/modules/nixos/hardware/graphics-amd-igpu-only/default.nix @@ -0,0 +1,59 @@ +{ config +, lib +, pkgs +, ... +}: +let + inherit (lib) mkEnableOption mkIf; + inherit (lib.my-namespace) disabled enabled; + + cfg = config.my-namespace.hardware.graphics-amd-igpu-only; +in +{ + options.my-namespace.hardware.graphics-amd-igpu-only = { + enable = mkEnableOption "Enable nvidia"; + }; + config = mkIf cfg.enable { + + # Enable NVIDIA driver for X11 and Wayland + # without modesetting, x server will be run by nvidia + services.xserver.videoDrivers = [ + "amdgpu" + ]; + + # Enable OpenGL + hardware.graphics = { + enable = true; + # extraPackages = with pkgs; [ nvidia-vaapi-driver ]; + }; + + hardware.graphics.enable32Bit = true; # For 32 bit applications + + boot.loader.systemd-boot.consoleMode = "max"; + + # Enable required Kernel Modules + boot.initrd.kernelModules = [ + "amdgpu" + ]; + + + boot.kernelParams = [ + "amdgpu.modeset=1" + "amd_iommu=on" + ]; + + + # Blacklist intel and nouveau + boot.blacklistedKernelModules = [ + "nouveau" + ]; + + hardware.nvidia = { + # Modesetting is required. + # Add user to extra groups + users.users.andreas = { + extraGroups = [ "video" "render" ]; + }; + +}; +}