Crashing on launch with intel + nvidia hybrid graphics

Hyprland version
Hyprland 0.50.0 built from branch  at commit 43966cc787c4a8844ac1e7affaadeedde8f4cc60  ().
Date: 2025-07-29
Tag: v0.50.0, commits: 
built against:
 aquamarine 0.9.2
 hyprlang 0.6.3
 hyprutils 0.8.1
 hyprcursor 0.1.12
 hyprgraphics 0.1.5


no flags were set

Describe your issue / feature…

For the last few months my setup has been working well, I configured nixos so that it uses PRIME in offload mode to manage the graphics. In my hyprland config I set AQ_DRM_DEVICES so that hyprland only used the iGPU, e.g.:

    env = [
      "AQ_DRM_DEVICES,${config.lib.file.mkOutOfStoreSymlink "/dev/dri/by-path/pci-0000:00:02.0-card"}"
    ];

The only issue with this was that monitors connected to the HDMI port would not be detected as it is connected directly to the GPU. From the wiki I saw that I could add the dGPU to the env variable so that HDMI monitors would be detected but the iGPU would still be the primary renderer, e.g.:

    env = [
      "AQ_DRM_DEVICES,${config.lib.file.mkOutOfStoreSymlink "/dev/dri/by-path/pci-0000:00:02.0-card"}:${config.lib.file.mkOutOfStoreSymlink "/dev/dri/by-path/pci-0000:01:00.0-card"}"
    ];

This did not work so I decided to revert my config back to how it was before, rebuilt and rebooted. However when I try and launch hyprland now it crashes on launch despite my configuration being identical to how it was before. Here is the hyprland log file:

iGPU hyprland crash log
[LOG] Instance Signature: 3e35797b18d35baae82657bb0438af88156e273f_1753951167_1483163776
[LOG] Runtime directory: /run/user/1000/hypr/3e35797b18d35baae82657bb0438af88156e273f_1753951167_1483163776
[LOG] Hyprland PID: 2794
[LOG] ===== SYSTEM INFO: =====
[LOG] System name: Linux
[LOG] Node name: kamabo
[LOG] Release: 6.15.8
[LOG] Version: #1-NixOS SMP PREEMPT_DYNAMIC Thu Jul 24 06:58:43 UTC 2025


[LOG] GPU information:
0000:00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01) (prog-if 00 [VGA controller])
	DeviceName: VGA
0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2520] (rev a1) (prog-if 00 [VGA controller])
	DeviceName: Second VGA


[WARN] Warning: you're using an NVIDIA GPU. Make sure you follow the instructions on the wiki if anything is amiss.

[LOG] os-release:
ANSI_COLOR="0;38;2;126;186;228"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="25.11.20250728.dc96378"
CPE_NAME="cpe:/o:nixos:nixos:25.11"
DEFAULT_HOSTNAME=nixos
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
ID_LIKE=""
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 25.11 (Xantusia)"
SUPPORT_URL="https://nixos.org/community.html"
VARIANT=""
VARIANT_ID=""
VENDOR_NAME=NixOS
VENDOR_URL="https://nixos.org/"
VERSION="25.11 (Xantusia)"
VERSION_CODENAME=xantusia
VERSION_ID="25.11"
[LOG] ========================



[INFO] If you are crashing, or encounter any bugs, please consult https://wiki.hypr.land/Crashes-and-Bugs/


[LOG] 
Current splash: Can we get a version without anime girls?


[LOG] Old rlimit: soft -> 1024, hard -> 524288
[LOG] New rlimit: soft -> 524288, hard -> 524288
[LOG] Creating the EventLoopManager!
[LOG] Creating the HookSystem!
[LOG] Creating the KeybindManager!
[LOG] Creating the AnimationManager!
[LOG] Creating the DynamicPermissionManager!
[LOG] Creating the ConfigManager!
[LOG] Using config: /home/kerfuzzle/.config/hypr/hyprland.conf
[INFO] !!!!HEY YOU, YES YOU!!!!: further logs to stdout / logfile are disabled by default. BEFORE SENDING THIS LOG, ENABLE THEM. Use debug:disable_logs = false to do so: https://wiki.hypr.land/Configuring/Variables/#debug
[ERR] Invalid dispatcher: overview:toggle
[ERR] Invalid dispatcher: split:grabroguewindows
[ERR] Invalid dispatcher: split:workspace
[ERR] Invalid dispatcher: split:movetoworkspace
[ERR] Invalid dispatcher: split:workspace
[ERR] Invalid dispatcher: split:movetoworkspace
[ERR] Invalid dispatcher: split:workspace
[ERR] Invalid dispatcher: split:movetoworkspace
[ERR] Invalid dispatcher: split:workspace
[ERR] Invalid dispatcher: split:movetoworkspace
[ERR] Invalid dispatcher: split:workspace
[ERR] Invalid dispatcher: split:movetoworkspace
[LOG] CWindowRule: direct prop rule found, rewritten keepaspectratio -> prop keepaspectratio
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] CWindowRule: direct prop rule found, rewritten opaque -> prop opaque
[LOG] Disabling stdout logs! Check the log for further logs.
[LOG] Creating the PointerManager!
[LOG] Creating the EventManager!
[LOG] [AQ] Creating an Aquamarine backend!
[LOG] [AQ] [libseat] [libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[LOG] [AQ] [libseat] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[LOG] [AQ] [libseat] [libseat/libseat.c:73] Seat opened with backend 'logind'
[LOG] [AQ] drm: Enumerated device /sys/devices/pci0000:00/0000:00:02.0/drm/card1
[LOG] [AQ] libseat: Device /dev/dri/card1 supports kms
[LOG] [AQ] drm: Enumerated device /sys/devices/pci0000:00/0000:00:06.0/0000:01:00.0/drm/card0
[LOG] [AQ] libseat: Device /dev/dri/card0 supports kms
[LOG] [AQ] drm: Explicit device list /nix/store/qljppp0smf20p3xvjbz9d3vk097iz2wq-hm_pci00000002.0card
[LOG] [AQ] drm: Explicit device /dev/dri/card1 found
[LOG] [AQ] drm: Found 1 GPUs
[LOG] [AQ] drm: Starting backend for /dev/dri/card1, with driver i915
[LOG] [AQ] drm: Registered gpu /dev/dri/card1
[LOG] [AQ] drm: Atomic supported, using atomic for modesetting
[LOG] [AQ] drm: drmProps.supportsAsyncCommit: true
[LOG] [AQ] drm: drmProps.supportsAddFb2Modifiers: true
[LOG] [AQ] drm: drmProps.supportsTimelines: true
[LOG] [AQ] drm: found 4 CRTCs
[LOG] [AQ] drm: found 32 planes
[LOG] [AQ] drm: Plane 32 has type 1
[LOG] [AQ] drm: Plane 32 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 41 has type 0
[LOG] [AQ] drm: Plane 41 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 50 has type 0
[LOG] [AQ] drm: Plane 50 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 59 has type 0
[LOG] [AQ] drm: Plane 59 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 68 has type 0
[LOG] [AQ] drm: Plane 68 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 77 has type 0
[LOG] [AQ] drm: Plane 77 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 86 has type 0
[LOG] [AQ] drm: Plane 86 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 95 has type 2
[LOG] [AQ] drm: Plane 95 has 1 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 102 has type 1
[LOG] [AQ] drm: Plane 102 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 111 has type 0
[LOG] [AQ] drm: Plane 111 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 120 has type 0
[LOG] [AQ] drm: Plane 120 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 129 has type 0
[LOG] [AQ] drm: Plane 129 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 138 has type 0
[LOG] [AQ] drm: Plane 138 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 147 has type 0
[LOG] [AQ] drm: Plane 147 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 156 has type 0
[LOG] [AQ] drm: Plane 156 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 165 has type 2
[LOG] [AQ] drm: Plane 165 has 1 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 172 has type 1
[LOG] [AQ] drm: Plane 172 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 181 has type 0
[LOG] [AQ] drm: Plane 181 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 190 has type 0
[LOG] [AQ] drm: Plane 190 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 199 has type 0
[LOG] [AQ] drm: Plane 199 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 208 has type 0
[LOG] [AQ] drm: Plane 208 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 217 has type 0
[LOG] [AQ] drm: Plane 217 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 226 has type 0
[LOG] [AQ] drm: Plane 226 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 235 has type 2
[LOG] [AQ] drm: Plane 235 has 1 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 242 has type 1
[LOG] [AQ] drm: Plane 242 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 251 has type 0
[LOG] [AQ] drm: Plane 251 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 260 has type 0
[LOG] [AQ] drm: Plane 260 has 29 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 269 has type 0
[LOG] [AQ] drm: Plane 269 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 278 has type 0
[LOG] [AQ] drm: Plane 278 has 23 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 287 has type 0
[LOG] [AQ] drm: Plane 287 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 296 has type 0
[LOG] [AQ] drm: Plane 296 has 19 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Plane 305 has type 2
[LOG] [AQ] drm: Plane 305 has 1 formats
[LOG] [AQ] drm: Plane: checking for modifiers
[LOG] [AQ] drm: Basic init pass for gpu /dev/dri/card1
[LOG] [AQ] drm: Scanning connectors for /dev/dri/card1
[LOG] [AQ] drm: Scanning connector id 313
[LOG] [AQ] drm: Initializing connector id 313
[LOG] [AQ] drm: Connector gets name eDP-1
[LOG] [AQ] drm: Connector 313 connection state: 1
[LOG] [AQ] drm: Scanning connector id 322
[LOG] [AQ] drm: Initializing connector id 322
[LOG] [AQ] drm: Connector gets name DP-1
[ERR] [AQ] drm: getCurrentCRTC: No CRTC 0
[LOG] [AQ] drm: Connector 322 connection state: 2
[LOG] [AQ] drm: Scanning connector id 335
[LOG] [AQ] drm: Initializing connector id 335
[LOG] [AQ] drm: Connector gets name DP-2
[ERR] [AQ] drm: getCurrentCRTC: No CRTC 0
[LOG] [AQ] drm: Connector 335 connection state: 2
[LOG] [AQ] drm: Scanning connector id 344
[LOG] [AQ] drm: Initializing connector id 344
[LOG] [AQ] drm: Connector gets name HDMI-A-1
[ERR] [AQ] drm: getCurrentCRTC: No CRTC 0
[LOG] [AQ] drm: Connector 344 connection state: 2
[LOG] [AQ] drm: Rechecking CRTCs
[LOG] [AQ] drm: Skipping connector eDP-1, has crtc 100 and is connected
[LOG] [AQ] drm: connector DP-1, has crtc -1, will be rechecked
[LOG] [AQ] drm: connector DP-2, has crtc -1, will be rechecked
[LOG] [AQ] drm: connector HDMI-A-1, has crtc -1, will be rechecked
[LOG] [AQ] drm: slot 0 crtc 100 taken by eDP-1, skipping
[LOG] [AQ] drm: slot 1 crtc 170 unassigned
[LOG] [AQ] drm: slot 2 crtc 240 unassigned
[LOG] [AQ] drm: slot 3 crtc 310 unassigned
[LOG] [AQ] drm: Connector DP-1 is not connected
[LOG] [AQ] drm: Connector DP-2 is not connected
[LOG] [AQ] drm: Connector HDMI-A-1 is not connected
[LOG] [AQ] drm: Connector eDP-1 connected
[LOG] [AQ] drm: Connecting connector eDP-1, CRTC ID 100
[LOG] [AQ] drm: Dumping detected modes:
[LOG] [AQ] drm: Mode 0: [email protected]  (preferred)
[LOG] [AQ] drm: Mode 1: [email protected] 
[LOG] [AQ] drm: Physical size [Vector2D: x: 340, y: 190] (mm)
[LOG] [AQ] drm: Description BOE 0x090F  (eDP-1)
[LOG] [AQ] drm: connector eDP-1 crtc is capable of vrr: props.vrr_capable -> 320, crtc->props.vrr_enabled -> 24
[LOG] [AQ] drm: Explicit sync supported
[LOG] [AQ] drm: connector eDP-1 crtc supports CTM
[LOG] [AQ] drm: connector eDP-1 crtc supports HDR (7)
[LOG] [AQ] drm: connector eDP-1 crtc supports Colorspace (319)
[LOG] [AQ] drm: gpu /dev/dri/card1 becomes primary drm
[LOG] [AQ] DRM Dumb: created a dumb allocator
[LOG] [AQ] Starting the Aquamarine backend!
[LOG] [AQ] Starting the Wayland backend!
[ERR] [AQ] Wayland backend cannot start: wl_display_connect failed (is a wayland compositor running?)
[ERR] [AQ] Requested backend (wayland) could not start, enabling fallbacks
[ERR] [AQ] Implementation wayland failed, erasing.
[LOG] [AQ] Created a GBM allocator with drm fd 32
[LOG] [AQ] drm: Connectors size2 4
[LOG] [AQ] Created a GBM allocator with drm fd 36
[LOG] [AQ] Supported EGL client extensions: (14) EGL_EXT_platform_base EGL_EXT_device_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_MESA_platform_surfaceless EGL_EXT_explicit_device EGL_KHR_platform_wayland EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm EGL_EXT_platform_xcb
[ERR] [AQ] CDRMRenderer: fail, eglGetPlatformDisplayEXT failed
[ERR] [AQ] drm: onReady: no renderer for gl formats
[LOG] [AQ] drm: onReady: connector 313
[LOG] [AQ] drm: onReady: connector 313 has output name eDP-1
[LOG] [AQ] Swapchain: Clearing
[LOG] New aquamarine output with name eDP-1
[LOG] [AQ] drm: onReady: connector 322
[LOG] [AQ] drm: onReady: connector 335
[LOG] [AQ] drm: onReady: connector 344
[LOG] [AQ] Supported EGL client extensions: (14) EGL_EXT_platform_base EGL_EXT_device_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_MESA_platform_surfaceless EGL_EXT_explicit_device EGL_KHR_platform_wayland EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm EGL_EXT_platform_xcb
[ERR] [AQ] CDRMRenderer: fail, eglGetPlatformDisplayEXT failed
[ERR] [AQ] drm: initMgpu: no renderer
[ERR] [AQ] drm: Failed initializing mgpu
[LOG] Running on DRMFD: 31
[LOG] DRM syncobj timeline support: yes
[LOG] wl_display_add_socket for wayland-1 succeeded with 0
[LOG] Creating the CHyprOpenGLImpl!
[LOG] Supported EGL global extensions: (14) EGL_EXT_platform_base EGL_EXT_device_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_MESA_platform_surfaceless EGL_EXT_explicit_device EGL_KHR_platform_wayland EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm EGL_EXT_platform_xcb
[LOG] eglDeviceFromDRMFD: No drm devices found
[WARN] EGL: EXT_platform_device or EGL_EXT_device_query not supported, using gbm
[LOG] openRenderNode got drm device /dev/dri/renderD128
[CRITICAL] 
==========================================================================================
ASSERTION FAILED! 

EGL: failed to create a platform display

at: line 137 in OpenGL.cpp

If I tell hyprland to just use the dGPU it launches fine but only outputs on an external monitor (as expected).

Outputs of lspci and contents of /dev/dri/by-path and /dev/dri
0000:00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01)
	DeviceName: VGA
	Subsystem: ASUSTeK Computer Inc. Device [1043:16e2]
	Kernel driver in use: i915
	Kernel modules: i915, xe
--
0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2520] (rev a1)
	DeviceName: Second VGA
	Subsystem: ASUSTeK Computer Inc. Device [1043:16e2]
	Kernel driver in use: nvidia
	Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
lrwxrwxrwx - root 31 Jul 12:11 pci-0000:00:02.0-card -> ../card1
lrwxrwxrwx - root 31 Jul 12:11 pci-0000:00:02.0-platform-simple-framebuffer.0-card -> ../card0
lrwxrwxrwx - root 31 Jul 12:11 pci-0000:00:02.0-render -> ../renderD128
lrwxrwxrwx - root 31 Jul 12:11 pci-0000:01:00.0-card -> ../card2
lrwxrwxrwx - root 31 Jul 12:11 pci-0000:01:00.0-render -> ../renderD129
drwxr-xr-x        - root 31 Jul 11:26 by-path
crw-rw----@   226,1 root 31 Jul 11:31 card1
crw-rw----@   226,2 root 31 Jul 11:26 card2
crw-rw-rw-  226,128 root 31 Jul 11:26 renderD128
crw-rw-rw-  226,129 root 31 Jul 11:26 renderD129

One thing I noticed is that when getting the pci card paths yesterday the files were symlinked differently, the platform-simple-framebuffer is symlinked card0 (iGPU) whereas now it is symlinked to card2 (which doesnt exist within /dev/dri)

lrwxrwxrwx - root 30 Jul 22:34 pci-0000:00:02.0-card -> ../card1
lrwxrwxrwx - root 30 Jul 22:34 pci-0000:00:02.0-platform-simple-framebuffer.0-card -> ../card0
lrwxrwxrwx - root 30 Jul 22:34 pci-0000:00:02.0-render -> ../renderD128
lrwxrwxrwx - root 30 Jul 22:34 pci-0000:01:00.0-card -> ../card0
lrwxrwxrwx - root 30 Jul 22:34 pci-0000:01:00.0-render -> ../renderD129

This feels like it could be a driver issue but would seem strange since my system’s configuration is identical to how it was before I started making any changes. I would really appriciate any insight anyone could provide into this as my knowledge of wayland and drivers is quite limited and I am struggling to find info about the errors towards the end of the hyprland log.

Update, this is a nixos issue, see: nixos/hyprland: crash (segfault) at launch on nixos-unstable `17f6bd1` · Issue #429271 · NixOS/nixpkgs · GitHub