Files
planner/flake.nix
2026-01-21 05:03:45 +00:00

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
'';
};
};
}