Files
dotfiles/modules/graphics.nix
2022-10-14 09:57:36 +05:30

62 lines
1.8 KiB
Nix

{ config, pkgs, lib, ... }:
let
nvidia-offload = pkgs.writeShellScriptBin "nvi" ''
export __NV_PRIME_RENDER_OFFLOAD=1
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
'';
in
{
environment.systemPackages = with pkgs; [
nvidia-offload
];
hardware = {
/* opengl =
let
fn = oa: with lib; {
nativeBuildInputs = oa.nativeBuildInputs ++ singleton pkgs.glslang;
mesonFlags = oa.mesonFlags ++ singleton "-Dvulkan-layers=device-select,overlay";
patches = oa.patches ++ singleton ./mesa-vulkan-layer-nvidia.patch;
postInstall = oa.postInstall + ''
mv $out/lib/libVkLayer* $drivers/lib
layer=VkLayer_MESA_device_select
substituteInPlace $drivers/share/vulkan/implicit_layer.d/''${layer}.json \
--replace "lib''${layer}" "$drivers/lib/lib''${layer}"
layer=VkLayer_MESA_overlay
substituteInPlace $drivers/share/vulkan/explicit_layer.d/''${layer}.json \
--replace "lib''${layer}" "$drivers/lib/lib''${layer}"
'';
};
in
with pkgs; {
driSupport32Bit = true;
enable = true;
package = (mesa.overrideAttrs fn).drivers;
package32 = (pkgsi686Linux.mesa.overrideAttrs fn).drivers;
};*/
opengl = {
driSupport32Bit = true;
enable = true;
};
nvidia = {
prime = {
# sync.enable = true;
offload = { enable = true; };
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
modesetting = { enable = true; };
powerManagement = {
enable = true;
finegrained = true;
};
};
};
services.xserver = {
videoDrivers = [ "nvidia" ];
dpi = 96;
};
}