`SDL_VIDEODRIVER=wayland` seems to be a requirement for GLEW to
initialize when using glew-egl.
`SDL_VIDEO_WAYLAND_WMCLASS` associates the application with the .desktop
file (in GNOME Shell, at least, if not other Wayland desktops).
glew alone is not enough to propagate explicitly:
```
$ nix run nixpkgs#mindustry
[E] Failed to initialize discord. Enable debug logging for details.
[E] java.lang.ExceptionInInitializerError
at arc.backend.sdl.SdlApplication.lambda$init$0(SdlApplication.java:73)
at arc.backend.sdl.SdlApplication.check(SdlApplication.java:181)
at arc.backend.sdl.SdlApplication.init(SdlApplication.java:73)
at arc.backend.sdl.SdlApplication.<init>(SdlApplication.java:29)
at mindustry.desktop.DesktopLauncher.main(DesktopLauncher.java:36)
Caused by: arc.util.ArcRuntimeException: Couldn't load shared library 'libsdl-arc64.so' for target: Linux, 64-bit
at arc.util.SharedLibraryLoader.load(SharedLibraryLoader.java:85)
at arc.backend.sdl.jni.SDL.<clinit>(SDL.java:142)
... 5 more
Caused by: arc.util.ArcRuntimeException: java.lang.UnsatisfiedLinkError: /tmp/arc/35a2b27b/libsdl-arc64.so: /nix/store/v8pdm5rd4f89ng08zgxryyil065g1dh2-SDL2-2.0.20/lib/libSDL2.so: cannot open shared object file: No such file or directory
at arc.util.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:288)
at arc.util.SharedLibraryLoader.load(SharedLibraryLoader.java:81)
... 6 more
Caused by: java.lang.UnsatisfiedLinkError: /tmp/arc/35a2b27b/libsdl-arc64.so: /nix/store/v8pdm5rd4f89ng08zgxryyil065g1dh2-SDL2-2.0.20/lib/libSDL2.so: cannot open shared object file: No such file or directory
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:383)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:227)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:169)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2407)
at java.base/java.lang.Runtime.load0(Runtime.java:747)
at java.base/java.lang.System.load(System.java:1857)
at arc.util.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:294)
at arc.backend.sdl.jni.SDL$3.loadFile(SDL.java:140)
at arc.util.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:260)
... 7 more
```
Let's add all SDL and alsa-lib as well. Instead of using propagatedBuildInputs
let's embed store paths into a shell wrapper.
The Mindustry source code makes heavy use of internal Java APIs that
were deprecated in Java 6 and removed in Java 16. It also makes use
of features that require Java >=14.
The author is not ready to provide compatibility with any
maintained Java version at this time.
- make pre- and post-{build,install} phases usable for the main derivation
- replace uses of stdenv.lib with just lib
- specify which buildInputs are only needed for the client
- reduce the buildPhase of the fixed-output dependencies derivation to
only download all dependencies, instead of building the full thing.
- add wayland variant, which is linked against a different variant of
the glew library to run natively using SDL_VIDEODRIVER=wayland
- use jdk (Java 15) instead of jre (Java 8) at runtime
- use new copyDesktopItems hook
* update two explicit references to jdk14 to just jdk, which no longer
points at jdk8 after #89731.
* patch an explicit -XX:+UseConcMarkSweepGC to -XX:UseG1GC, as the
former now throws an error (after having been deprecated since jdk 9)