diff --git a/nix/modules/machine/gpu.nix b/nix/modules/machine/gpu.nix new file mode 100644 index 0000000..00c56cd --- /dev/null +++ b/nix/modules/machine/gpu.nix @@ -0,0 +1,41 @@ +{ config, ... }: +let + cfg = config.flake; +in +{ + allowedUnfreePackages = [ + "nvidia-x11" + "nvidia-settings" + ]; + flake.modules.nixos.default = + { + config, + pkgs, + hostName, + ... + }: + let + gpu = cfg.manifest.hosts.nixos.${hostName}.machine.gpu or ""; + in + if gpu == "nvidia" then + { + hardware = { + graphics.enable = true; + graphics.extraPackages = [ pkgs.nvidia-vaapi-driver ]; + nvidia.open = true; + nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + environment.variables = { + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; + nix.settings.substituters = [ "https://cuda-maintainers.cachix.org" ]; + nix.settings.trusted-public-keys = [ + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; + } + else + { }; +}