From 1ee7c7ed817d2a34050e69c6158d419718a07e58 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:12:33 +0000 Subject: [PATCH] fix: add Mesa EGL software rendering for Linux environments without GPU Fixes the 'Could not create default EGL display: EGL_BAD_PARAMETER' error that causes a blank page when running the Tauri desktop app in environments without a GPU (VMs, containers, CI, headless servers). The root cause: the nix flake provides libglvnd for EGL dispatch but no Mesa EGL vendor library. Without a Mesa EGL backend, WebKitGTK's web process cannot initialize EGL and crashes. Changes: - Add pkgs.mesa to Linux packages (provides libEGL_mesa.so and swrast DRI) - Set __EGL_VENDOR_LIBRARY_FILENAMES to point libglvnd to Mesa's EGL vendor - Set LIBGL_DRIVERS_PATH to Mesa's DRI drivers (swrast for software rendering) - Set LIBGL_ALWAYS_SOFTWARE=1 to force llvmpipe software rendering - Set WEBKIT_DISABLE_COMPOSITING_MODE=1 and WEBKIT_DISABLE_DMABUF_RENDERER=1 for additional robustness on systems without GPU Relates to #251 Co-Authored-By: unknown <> --- flake.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 1db530ff..2ac8588c 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,12 @@ pkgs.gdk-pixbuf pkgs.libsoup_3 pkgs.webkitgtk_4_1 - ] ++ (if pkgs.stdenv.isDarwin then [ + ] ++ (if pkgs.stdenv.isLinux then [ + # Mesa with software rendering support for environments without a GPU + # (e.g., VMs, CI, containers). Provides libEGL_mesa.so and swrast DRI + # drivers needed by WebKitGTK to initialize EGL. + pkgs.mesa + ] else []) ++ (if pkgs.stdenv.isDarwin then [ # macOS-specific dependencies pkgs.darwin.apple_sdk.frameworks.WebKit pkgs.darwin.apple_sdk.frameworks.AppKit @@ -51,6 +56,15 @@ shellHook = '' echo "Using Rust version: $(rustc --version)" echo "Tauri development environment ready" + '' + # On Linux, configure Mesa EGL for software rendering so WebKitGTK works + # in environments without a GPU (VMs, containers, headless servers). + + pkgs.lib.optionalString pkgs.stdenv.isLinux '' + export __EGL_VENDOR_LIBRARY_FILENAMES=${pkgs.mesa}/share/glvnd/egl_vendor.d/50_mesa.json + export LIBGL_DRIVERS_PATH=${pkgs.mesa}/lib/dri + export LIBGL_ALWAYS_SOFTWARE=1 + export WEBKIT_DISABLE_COMPOSITING_MODE=1 + export WEBKIT_DISABLE_DMABUF_RENDERER=1 ''; }; }