After following https://fabricmc.net/ and building on nixos I get this error
---- Minecraft Crash Report ---- // Why is it breaking :( Time: 8/2/19 9:06 PM Description: Initializing game java.lang.ExceptionInInitializerError at net.minecraft.client.options.GameOptions.<init>(GameOptions.java:213) at net.minecraft.client.MinecraftClient.init(MinecraftClient.java:416) at net.minecraft.client.MinecraftClient.start(MinecraftClient.java:368) at net.minecraft.client.main.Main.main(Main.java:127) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170) at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129) at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26) Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /tmp/lwjgljohn/3.2.2-build-10/libglfw.so(error = null) at net.minecraft.client.util.InputUtil.<clinit>(InputUtil.java:109) ... 11 more Caused by: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /tmp/lwjgljohn/3.2.2-build-10/libglfw.so(error = null) at org.lwjgl.system.linux.LinuxLibrary.loadLibrary(LinuxLibrary.java:32) at org.lwjgl.system.linux.LinuxLibrary.<init>(LinuxLibrary.java:19) at org.lwjgl.system.APIUtil.apiCreateLibrary(APIUtil.java:123) at org.lwjgl.system.Library.loadNative(Library.java:335) at org.lwjgl.system.Library.loadNativeFromLibraryPath(Library.java:324) at org.lwjgl.system.Library.loadNative(Library.java:239) at org.lwjgl.system.Library.loadNative(Library.java:205) at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:674) at sun.misc.Unsafe.ensureClassInitialized(Native Method) at java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:317) at java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:314) at java.lang.ClassValue.getFromHashMap(ClassValue.java:227) at java.lang.ClassValue.getFromBackup(ClassValue.java:209) at java.lang.ClassValue.get(ClassValue.java:115) at java.lang.invoke.DirectMethodHandle.checkInitialized(DirectMethodHandle.java:338) at java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:328) at java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:360) at net.minecraft.client.util.InputUtil.<clinit>(InputUtil.java:106) ... 11 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace: at net.minecraft.client.options.GameOptions.<init>(GameOptions.java:213) at net.minecraft.client.MinecraftClient.init(MinecraftClient.java:416) -- Initialization -- Details: Stacktrace: at net.minecraft.client.MinecraftClient.start(MinecraftClient.java:368) at net.minecraft.client.main.Main.main(Main.java:127) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170) at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129) at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26) -- System Details -- Details: Minecraft Version: 1.14.4 Minecraft Version ID: 1.14.4 Operating System: Linux (amd64) version 4.19.63 Java Version: 1.8.0_152-release, JetBrains s.r.o Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), JetBrains s.r.o Memory: 424937848 bytes (405 MB) / 1224736768 bytes (1168 MB) up to 3730309120 bytes (3557 MB) CPUs: 8 JVM Flags: 0 total; Fabric Mods: fabric: Fabric API 0.3.0+build.207 fabric-api-base: fabric-api-base 0.1.0+b494ebeb42 fabric-biomes-v1: fabric-biomes-v1 0.1.0+896c7fbb42 fabric-commands-v0: fabric-commands-v0 0.1.1+b494ebeb42 fabric-containers-v0: fabric-containers-v0 0.1.2+b494ebeb42 fabric-content-registries-v0: fabric-content-registries-v0 0.1.1+b494ebeb42 fabric-crash-report-info-v1: fabric-crash-report-info-v1 0.1.0+5914746342 fabric-events-interaction-v0: fabric-events-interaction-v0 0.1.0+ea100f6142 fabric-events-lifecycle-v0: fabric-events-lifecycle-v0 0.1.0+5914746342 fabric-item-groups-v0: fabric-item-groups-v0 0.1.0+1e69a0a542 fabric-keybindings-v0: fabric-keybindings-v0 0.1.1+7dfef87c42 fabric-loot-tables-v1: fabric-loot-tables-v1 0.1.0+b494ebeb42 fabric-mining-levels-v0: fabric-mining-levels-v0 0.1.0+ab421b9c42 fabric-models-v0: fabric-models-v0 0.1.0+5914746342 fabric-networking-blockentity-v0: fabric-networking-blockentity-v0 0.1.1+b494ebeb42 fabric-networking-v0: fabric-networking-v0 0.1.2+9b03381f42 fabric-object-builders-v0: fabric-object-builders-v0 0.1.1+9b03381f42 fabric-registry-sync-v0: fabric-registry-sync-v0 0.2.2+9b03381f42 fabric-renderer-api-v1: fabric-renderer-api-v1 0.1.1+9b03381f42 fabric-renderer-indigo: fabric-renderer-indigo 0.1.9+9b03381f42 fabric-rendering-data-attachment-v1: fabric-rendering-data-attachment-v1 0.1.0+b494ebeb42 fabric-rendering-fluids-v1: fabric-rendering-fluids-v1 0.1.0+dc4c57c242 fabric-rendering-v0: fabric-rendering-v0 0.1.1+6dad974e42 fabric-resource-loader-v0: fabric-resource-loader-v0 0.1.1+7495ea2842 fabric-tag-extensions-v0: fabric-tag-extensions-v0 0.1.1+b494ebeb42 fabric-textures-v0: fabric-textures-v0 0.1.4+b494ebeb42 fabricloader: Fabric Loader 0.4.8+build.159 modid: Example Mod 1.0.0 Launched Version: Fabric LWJGL: 3.2.2 build 10 OpenGL: ~~ERROR~~ NoClassDefFoundError: Could not initialize class org.lwjgl.glfw.GLFW GL Caps: Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'fabric' Type: Client (map_client.txt) Resource Packs: ~~ERROR~~ NullPointerException: null Current Language: ~~ERROR~~ NullPointerException: null CPU: <unknown>
The main issue is here
Caused by: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /tmp/lwjgljohn/3.2.2-build-10/libglfw.so(error = null)
As with many native libraries on nixos this requires a patch so the lib points to the correct locations installed on the os.
This is done in nixos using https://nixos.org/patchelf.html
The nix package for minecraft is found here https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/minecraft/default.nix
looking at the package there is no patchelf being done. The package brings in some libraries but only for running old versions of minecraft.
The error indicates a problem with lwjgl https://www.lwjgl.org/guide It might make sense to try running the getting started code in a gradle project and see how nixos acts with it.
In the stack trace there is
Caused by: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /tmp/lwjgljohn/3.2.2-build-10/libglfw.so(error = null) at org.lwjgl.system.linux.LinuxLibrary.loadLibrary(LinuxLibrary.java:32) at org.lwjgl.system.linux.LinuxLibrary.<init>(LinuxLibrary.java:19) at org.lwjgl.system.APIUtil.apiCreateLibrary(APIUtil.java:123) at org.lwjgl.system.Library.loadNative(Library.java:335) at org.lwjgl.system.Library.loadNativeFromLibraryPath(Library.java:324) at org.lwjgl.system.Library.loadNative(Library.java:239) at org.lwjgl.system.Library.loadNative(Library.java:205) at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:674)
First GLFW needs to load the native library. It looks like loadNativeFromLibraryPath
is called but it can’t find it. It calls apiCreateLibrary
which puts the .so
file in a tmp dir. Then the .so
file is used. It may be possible to make a nix expression for libglfw.so and put it on LD_LIBRARY_PATH
for this build.
It provides a GAME_LIBRARY_PATH which adds opengl and other libraries for the game. This may be the key to fixing this isue.