me like nix
1{ ... }: {
2 flake.modules.nixos.nvidia =
3 { pkgs, lib, config, ... }:
4 {
5 # NVIDIA kernel modules in initrd
6 boot.initrd.kernelModules = [
7 "nvidia"
8 "nvidia_modeset"
9 "nvidia_uvm"
10 "nvidia_drm"
11 ];
12
13 # System76 case support
14 hardware.system76.kernel-modules.enable = true;
15 hardware.system76.firmware-daemon.enable = true;
16 hardware.system76.power-daemon.enable = true;
17
18 # Graphics
19 hardware.graphics = {
20 enable = true;
21 enable32Bit = true;
22 };
23
24 # NVIDIA driver
25 services.xserver.videoDrivers = [ "nvidia" ];
26 hardware.nvidia = {
27 modesetting.enable = true;
28 powerManagement.enable = true;
29 open = true;
30 nvidiaSettings = true;
31 package = config.boot.kernelPackages.nvidiaPackages.stable;
32 };
33
34 # ZSA keyboard
35 hardware.keyboard.zsa.enable = true;
36
37 # NVIDIA needs GBM/EGL env vars for cage (wlroots) to initialize GPU on greetd restart
38 services.greetd.settings.default_session.command = lib.mkOverride 49
39 "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} -s -d -- env GBM_BACKEND=nvidia-drm __GLX_VENDOR_LIBRARY_NAME=nvidia GDK_SCALE=2 ${lib.getExe pkgs.regreet}";
40 };
41}