73 lines
2.0 KiB
Nix
73 lines
2.0 KiB
Nix
{
|
|
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
|
|
'';
|
|
};
|
|
};
|
|
}
|