{ description = "Minimal Electron devShell for NixOS (Wayland)"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; outputs = { self, nixpkgs }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; electronLibs = pkgs.lib.makeLibraryPath [ # Core GTK / GLib pkgs.glib pkgs.gtk3 pkgs.nss pkgs.nspr pkgs.atk pkgs.dbus # Graphics pkgs.mesa pkgs.libgbm pkgs.libxcb pkgs.libGL pkgs.cairo pkgs.pango pkgs.gdk-pixbuf pkgs.harfbuzz pkgs.libxkbcommon # X11 fallback pkgs.xorg.libX11 pkgs.xorg.libXext pkgs.xorg.libXrender pkgs.xorg.libXcomposite pkgs.xorg.libXdamage pkgs.xorg.libXfixes pkgs.xorg.libXrandr # Audio pkgs.alsa-lib # Printing & XML pkgs.cups pkgs.expat # Accessibility pkgs.at-spi2-atk pkgs.at-spi2-core ]; in { devShells.${system}.default = pkgs.mkShell { shellHook = '' export LD_LIBRARY_PATH=${electronLibs}:/run/opengl-driver/lib:$LD_LIBRARY_PATH # Include system NVIDIA symlink if available export ELECTRON_OZONE_PLATFORM_HINT=wayland export __EGL_VENDOR_LIBRARY_FILENAMES=/run/opengl-driver/share/glvnd/egl_vendor.d/10_nvidia.json # Force NVIDIA EGL vendor export __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS=/run/opengl-driver/share/egl/egl_external_platform.d # For external platform configs export GBM_BACKEND=nvidia-drm # Force NVIDIA GBM backend export __GLX_VENDOR_LIBRARY_NAME=nvidia # GLX vendor for XWayland fallback export __NV_PRIME_RENDER_OFFLOAD=1 # If you have hybrid graphics (Intel/NVIDIA); skip if dedicated NVIDIA export LIBVA_DRIVER_NAME=nvidia # VA-API driver ''; }; }; }