64 lines
2.5 KiB
Nix
64 lines
2.5 KiB
Nix
{
|
|
inputs.nixpkgs.url = github:NixOS/nixpkgs;
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
system = "x86_64-linux";
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
(self: super: {
|
|
jogl = super.jogl.overrideAttrs {
|
|
# upstream jogl doesn't have the required gluegen lib
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/java
|
|
cp -v $NIX_BUILD_TOP/gluegen/build/gluegen-rt{,-natives-linux-*}.jar $out/share/java/
|
|
cp -v $NIX_BUILD_TOP/jogl/build/jar/jogl-all{,-natives-linux-*}.jar $out/share/java/
|
|
cp -v $NIX_BUILD_TOP/jogl/build/nativewindow/nativewindow{,-awt,-natives-linux-*,-os-drm,-os-x11}.jar $out/share/java/
|
|
|
|
mkdir -p $out/lib
|
|
cp -v $NIX_BUILD_TOP/gluegen/build/obj/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/gluegen/build/test/build/natives/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/jogl/obj/jogl/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/jogl/obj/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/lib/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/nativewindow/obj/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/newt/obj/*.so $out/lib
|
|
cp -v $NIX_BUILD_TOP/jogl/build/oculusvr/obj/*.so $out/lib
|
|
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
})
|
|
];
|
|
};
|
|
lib = pkgs.lib;
|
|
in {
|
|
devShells.${system}.default = pkgs.mkShell rec {
|
|
name = "quil-env";
|
|
buildInputs = [
|
|
pkgs.xorg_sys_opengl
|
|
pkgs.xorg.libXxf86vm
|
|
pkgs.xwayland
|
|
pkgs.clojure
|
|
# pkgs.jogl
|
|
];
|
|
LD_LIBRARY_PATH = "${lib.makeLibraryPath buildInputs}";
|
|
|
|
# wayland compat
|
|
# see https://discourse.ubuntu.com/t/environment-variables-for-wayland-hackers/12750
|
|
# WAYLAND_DISPLAY = "no";
|
|
# DISPLAY = ":0";
|
|
# _JAVA_AWT_WM_NONREPARENTING = "1";
|
|
|
|
# we need to make sure the library is on the path for JOGL;
|
|
# also, there's a bug that is avoided with the variable
|
|
# https://github.com/processing/processing/issues/5476
|
|
# JAVA_OPTS = "-Djogl.disable.openglcore=false";
|
|
# XDG_SESSION_TYPE = "wayland";
|
|
# LIBGL_ALWAYS_SOFTWARE = true; # ← this is the same as passing -Djogl.disable.openglcore="true"
|
|
};
|
|
};
|
|
}
|