Skip to content

Hybrid GPU

volnix is an ASUS laptop with a hybrid dual-GPU configuration: an AMD HawkPoint2 iGPU and an NVIDIA RTX 4050 Mobile dGPU. Both drivers are loaded, and the Hyprland session renders on the iGPU by default for battery efficiency.

Driver setup

boot.kernelModules = [ "amdgpu" "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
services.xserver.videoDrivers = [ "nvidia" "amdgpu" ];

The NVIDIA-specific environment offload variables in home/default.nix (__NV_PRIME_RENDER_OFFLOAD, GBM_BACKEND, __GLX_VENDOR_LIBRARY_NAME, …) are commented out so the compositor stays on the AMD iGPU. Per-command offload is available through the nvrun alias:

nvrun glxinfo        # __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo

Power management

The dGPU is kept idle and allowed to reach RTD3 (0 W) suspend whenever possible. The Ollama daemon unloads models after OLLAMA_KEEP_ALIVE=5m, releasing CUDA handles so the card can power down (see AI Stack).

ASUS services

services.asusd is enabled for ASUS hardware control. services.supergfxd and services.power-profiles-daemon are disabled.

Stability workarounds

Symptom Mitigation
AMD display-core glitches amdgpu.dcdebugmask=0x10 (kernel params)
Ryzen + hybrid-GPU C-state instability processor.max_cstate=1
Krita Qt6 canvas freeze on Wayland Krita wrapped to force QT_QPA_PLATFORM=xcb (Troubleshooting)

Containers & libraries

  • Docker exposes the dGPU to containers via --device nvidia.com/gpu=0 (see the Fooocus container in AI Stack).
  • programs.nix-ld ships CUDA, Vulkan, VA-API, and OpenGL libraries so unpatched binaries and AppImages find GPU userspace at runtime.
  • Diagnostics installed: nvtopPackages.nvidia, vulkan-tools, libva-utils, clinfo, nvidia-vaapi-driver.