Skip to content

Instantly share code, notes, and snippets.

@WGrav01
Created October 18, 2024 14:15
Show Gist options
  • Select an option

  • Save WGrav01/ffad07588d7ddac6ae8d2181d5ce6698 to your computer and use it in GitHub Desktop.

Select an option

Save WGrav01/ffad07588d7ddac6ae8d2181d5ce6698 to your computer and use it in GitHub Desktop.
NixOS configuration for Asus Rog Zephyrus G14
{
inputs,
lib,
config,
pkgs,
...
}:
# Run the nvidia-offload command to run a program with gpu
let
nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
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 {
services.asusd = {
enable = true;
enableUserService = true;
};
# Supergfxd (command: supergfxctl) helps manage switching from the descrete and integrated gpus.
services.supergfxd = {
enable = true;
settings = {
vfio_enable = true;
vfio_save = false;
always_reboot = false;
no_logind = false;
logout_timeout_s = 20;
hotplug_type = "Asus";
};
};
boot.kernelPackages = pkgs.linuxPackages_zen;
systemd.services.supergfxd.path = [pkgs.kmod pkgs.pciutils];
# Even if you use Wayland, this is still requirered or else the driver won't install
services.udev.packages = with pkgs; [linuxPackages.nvidia_x11];
services.xserver.videoDrivers = ["nvidia" "amdgpu"];
boot.kernel.sysctl."vm.max_map_count" = 2147483642;
boot.initrd.kernelModules = ["amdgpu" "nvidia" "nvidia-drm" "nvidia-modeset"];
services.power-profiles-daemon.enable = true;
services.acpid.enable = true;
boot.kernelParams = ["nvidia-drm.modeset=1" "mem_sleep_default=deep" "amdgpu.dcdebugmask=0x10"];
services.fwupd.enable = true;
boot.extraModulePackages = [config.boot.kernelPackages.nvidia_x11];
boot.blacklistedKernelModules = ["noveau"];
programs.corectrl.enable = true;
services.upower.enable = true;
environment.systemPackages = [nvidia-offload];
programs.rog-control-center.enable = true;
services.logind.killUserProcesses = true;
hardware.amdgpu.initrd.enable = lib.mkDefault true;
hardware.nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.stable;
open = false;
modesetting.enable = true;
nvidiaPersistenced = true;
forceFullCompositionPipeline = true;
powerManagement = {
enable = true;
finegrained = true;
};
nvidiaSettings = true;
prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
sync.enable = false;
amdgpuBusId = "PCI:75:00:0";
nvidiaBusId = "PCI:01:00:0";
};
};
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
rocm-opencl-icd
rocm-opencl-runtime
];
extraPackages32 = with pkgs; [
];
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment