I’ve been trying to set up frc-nix for wpilib development on NixOS, and everything seems to be working well except for launching the simulation GUI with ./gradlew SimulateJava.
The actual simulation works fine, but the GUI doesn’t launch. I see the following output as it tries to launch the GUI:
> Task :simulateJavaRelease
HAL Extensions: Attempting to load: libhalsim_gui
Simulator GUI Initializing.
GLFW Error 65542: GLX: Failed to load GLX
HAL Extensions: Successfully loaded extension
********** Robot program starting **********
The error is mentioned in frc-nix’s documentation, but the given solution didn’t work for me. Here’s my nix-ld configuration:
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
# Core C++ and GCC
stdenv.cc.cc.lib
# Graphics / OpenGL
libGL
libglvnd
# X11 Libraries
xorg.libX11
xorg.libXext
xorg.libXxf86vm
xorg.libXcursor
xorg.libXrandr
xorg.libXinerama
xorg.libXi
# Wayland
wayland
];
};
Additionally, here’s the flake.nix for my dev environment:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = {self, nixpkgs, ...}: let
system = "x86_64-linux";
in {
devShells."${system}".default = let
pkgs = import nixpkgs { inherit system; };
in pkgs.mkShell {
packages = with pkgs; [
jdk
jdk17
gradle
glfw
wayland
xorg.libXrandr
xorg.libXinerama
xorg.libXcursor
xorg.libXi
libglvnd
xorg.libXxf86vm
];
nativeBuildInputs = [
pkgs.libGL
pkgs.libGLX
];
# LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [
# # libGL
# # libGLX
# libglvnd
# ];
shellHook = ''
echo "Hello world!"
export HALSIM_EXTENSIONS="$PWD"/build/jni/release/libhalsim_gui.so
export JAVA_HOME="${pkgs.jdk17}/lib/openjdk"
# export LD_LIBRARY_PATH="''${LD_LIBRARY_PATH}''${LD_LIBRARY_PATH:+:}${pkgs.libglvnd}/lib"
export LD_LIBRARY_PATH="/run/opengl-driver/lib:${pkgs.lib.makeLibraryPath [
pkgs.stdenv.cc.cc.lib
pkgs.libglvnd
pkgs.xorg.libX11
pkgs.xorg.libXrandr
pkgs.xorg.libXinerama
pkgs.xorg.libXcursor
pkgs.xorg.libXi
]}:$LD_LIBRARY_PATH"
'';
};
};
}
I tried running LD_DEBUG=libs ./gradlew simulatejava and got this output prior to the error msg:
Simulator GUI Initializing.
70287: find library=libXxf86vm.so.1 [0]; searching
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libXxf86vm.so.1
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libXxf86vm.so.1
70287: search cache=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/etc/ld.so.cache
70287: search path=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v3:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v2:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib (system search path)
70287: trying file=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib/libXxf86vm.so.1
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v3/libXxf86vm.so.1
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v2/libXxf86vm.so.1
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/libXxf86vm.so.1
70287:
70287: find library=libX11-xcb.so.1 [0]; searching
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libX11-xcb.so.1
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libX11-xcb.so.1
70287: search cache=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/etc/ld.so.cache
70287: search path=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib (system search path)
70287: trying file=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib/libX11-xcb.so.1
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/libX11-xcb.so.1
70287:
70287: find library=libGLX.so.0 [0]; searching
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/releaseHAL Extensions: Successfully loaded extension
(LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGLX.so.0
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGLX.so.0
70287: search cache=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/etc/ld.so.cache
70287: search path=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib (system search path)
70287: trying file=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib/libGLX.so.0
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/libGLX.so.0
70287:
70287: find library=libGL.so.1 [0]; searching
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGL.so.1
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGL.so.1
70287: search cache=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/etc/ld.so.cache
70287: search path=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib (system search path)
70287: trying file=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib/libGL.so.1
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/libGL.so.1
70287:
70287: find library=libGL.so [0]; searching
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGL.so
70287: search path=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release (LD_LIBRARY_PATH)
70287: trying file=/home/ash/Projects/prog/aembot/frc/2026/build/jni/release/libGL.so
70287: search cache=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/etc/ld.so.cache
70287: search path=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib:/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib (system search path)
70287: trying file=/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61/lib/libGL.so
70287: trying file=/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc/lib/libGL.so
70287:
GLFW Error 65542: GLX: Failed to load GLX
Any help would be greatly appreciated.