From 59becfd7c9733869ed3e3ddcc6047a54c2d79fee Mon Sep 17 00:00:00 2001 From: GitanElyon Date: Tue, 6 Oct 2026 14:42:15 -0400 Subject: [PATCH] fix(flake.nix): added extra minecraft dependencies expanded runtimeLibs in flake.nix with libXi, libXinerama, libGL (libglvnd), vulkan-loader, libxkbcommon, udev, alsa-lib, libpulseaudio, and appended /run/opengl-driver/lib for the Mesa drivers --- flake.nix | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index 1f8de68..1f96d88 100644 --- a/flake.nix +++ b/flake.nix @@ -13,19 +13,29 @@ }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - # release binaries have the curseforge key compiled in; source builds - # don't, so forward the caller's key when building impurely. curseforgeApiKey = builtins.getEnv "CURSEFORGE_API_KEY"; - # minecraft's bundled lwjgl natives dlopen the host's x11 stack, which - # isn't on the default loader path on nixos. java is spawned as a child - # of rmcl, so a wrapper LD_LIBRARY_PATH propagates all the way down. - runtimeLibs = pkgs.lib.makeLibraryPath (with pkgs; [ - libX11 - libXext - libXcursor - libXrandr - libXxf86vm - ]); + # minecraft's lwjgl/sdl natives dlopen the host's x11, opengl, vulkan, + # input and audio stack, which isn't on the default loader path on nixos. + # java is spawned as a child of rmcl, so a wrapper LD_LIBRARY_PATH + # propagates all the way down. /run/opengl-driver/lib holds the mesa + # drivers that libglvnd dispatches to. + runtimeLibs = + pkgs.lib.makeLibraryPath (with pkgs; [ + libX11 + libXext + libXcursor + libXrandr + libXxf86vm + libXi + libXinerama + libGL + vulkan-loader + libxkbcommon + udev + alsa-lib + libpulseaudio + ]) + + ":/run/opengl-driver/lib"; in { packages.default = pkgs.rustPlatform.buildRustPackage { pname = "rmcl"; @@ -50,5 +60,15 @@ mainProgram = "rmcl"; }; }; + + # `nix develop` + `cargo run --release` spawns java directly, bypassing + # the wrapper above, so expose the same runtime libs in the dev shell. + devShells.default = pkgs.mkShell { + packages = with pkgs; [cargo rustc rustfmt clippy jdk pkg-config]; + buildInputs = [pkgs.libxcb]; + shellHook = '' + export LD_LIBRARY_PATH="${runtimeLibs}:$LD_LIBRARY_PATH" + ''; + }; }); }