summaryrefslogtreecommitdiff
path: root/pkgs/lwjgl/default.nix
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-03-05 15:27:26 -0500
committerSeth Flynn <[email protected]>2025-03-05 15:31:38 -0500
commit6fa4458f59160cdf9e82ad2138300b1041f510ad (patch)
tree88aeb808a13eadeacf0bc9b97d85c93f10de7a2d /pkgs/lwjgl/default.nix
parentb229a37e59b9720b7017e72a6d159b869ff36458 (diff)
treewide: use flake
Signed-off-by: Seth Flynn <[email protected]>
Diffstat (limited to 'pkgs/lwjgl/default.nix')
-rw-r--r--pkgs/lwjgl/default.nix148
1 files changed, 148 insertions, 0 deletions
diff --git a/pkgs/lwjgl/default.nix b/pkgs/lwjgl/default.nix
new file mode 100644
index 0000000..546c45c
--- /dev/null
+++ b/pkgs/lwjgl/default.nix
@@ -0,0 +1,148 @@
+{
+ lib,
+ stdenv,
+ breakpointHook,
+ ant,
+ at-spi2-atk,
+ buildPackages,
+ cairo,
+ dbus,
+ fetchAntDeps,
+ fetchFromGitHub,
+ gdk-pixbuf,
+ glib,
+ gtk3,
+ harfbuzz,
+ kotlin,
+ libGLU,
+ libffi,
+ libglvnd,
+ pango,
+ replaceVars,
+ xorg,
+
+ version,
+ hash,
+ antHash,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+ pname = "lwjgl";
+ inherit version;
+
+ src = fetchFromGitHub {
+ owner = "LWJGL";
+ repo = "lwjgl3";
+ tag = finalAttrs.version;
+ inherit hash;
+ };
+
+ patches = [
+ (replaceVars ./fix-library-paths.patch (
+ lib.mapAttrs (lib.const lib.getDev) {
+ inherit
+ at-spi2-atk
+ cairo
+ dbus
+ gdk-pixbuf
+ glib
+ gtk3
+ harfbuzz
+ pango
+ ;
+ }
+ ))
+ ];
+
+ antJdk = buildPackages.jdk_headless;
+ antDeps = fetchAntDeps {
+ inherit (finalAttrs)
+ pname
+ version
+ src
+ antJdk
+ ;
+ hash = antHash;
+ };
+
+ strictDeps = true;
+
+ nativeBuildInputs = [
+ ant
+ kotlin
+ ] ++ lib.optional (lib.meta.availableOn stdenv.buildPlatform breakpointHook) breakpointHook;
+
+ buildInputs = [
+ at-spi2-atk
+ cairo
+ dbus
+ gdk-pixbuf
+ glib
+ gtk3
+ harfbuzz
+ libGLU
+ libffi
+ pango
+ xorg.libX11
+ xorg.libXt
+ ];
+
+ env = {
+ NIX_CFLAGS = "-funroll-loops -I${lib.getDev gtk3}/include/gtk-3.0";
+ NIX_LDFLAGS = "-lffi";
+
+ JAVA_HOME = finalAttrs.antJdk.home;
+ JAVA8_HOME = buildPackages.jdk8_headless.home;
+
+ # https://github.com/LWJGL/lwjgl3/tree/e8552d53624f789c8f8c3dc35976fa02cba73cff/doc#build-configuration
+ LWJGL_BUILD_OFFLINE = "yes";
+ LWJGL_BUILD_ARCH =
+ if stdenv.hostPlatform.isx86_64 then
+ "x64"
+ else if stdenv.hostPlatform.isi686 then
+ "x86"
+ else if stdenv.hostPlatform.isAarch64 then
+ "arm64"
+ else if stdenv.hostPlatform.isArmv7 then
+ "arm32"
+ else if stdenv.hostPlatform.isRiscV64 then
+ "riscv64"
+ else
+ throw "${stdenv.hostPlatform.cpu.name} is not a supported architecture";
+ };
+
+ # Put the dependencies we already downloaded in the right place
+ # NOTE: This directory *must* be writable
+ postConfigure = ''
+ mkdir bin
+ cp -dpr "$antDeps" ./bin/libs && chmod -R +w bin/libs
+ '';
+
+ postBuild = ''
+ mkdir $out
+ ant \
+ -emacs \
+ -Dgcc.libpath.opengl=${libglvnd}/lib \
+ compile-templates compile-native
+ '';
+
+ postInstall = ''
+ exit 1
+ '';
+
+ meta = {
+ platforms =
+
+ let
+ architectures = lib.flatten [
+ lib.platforms.x86_64
+ lib.platforms.i686
+ lib.platforms.aarch64
+ lib.platforms.armv7
+ lib.platforms.riscv64
+ ];
+ in
+
+ lib.intersectLists architectures lib.platforms.linux;
+ };
+})