Files
ccpkgs/pkgs/opengl/default.nix
Tyson Whitehead 7736b409f4 opengl: Do VirtualGL preload conditioning on VGL_DISPLAY
Preloading is done by doing a binary patch to the library to add it
as a dependency. The 2.3 series of glibc will let this be done with
just a wrapper that calls ld.so and with the --preload option.
2019-04-30 16:33:59 -04:00

38 lines
1.3 KiB
Nix

# This override makes OpenGL just automagically work with VirtualGL
#
# Add a setup hook to the mesa_noglu package that automatically adds
# a libvglfaker.so dependency to executables that depend on libGL.so.
{ super, lib, buildEnv, makeSetupHook, file, bash, xorg }:
let
autoVirtualGLHook =
let
mesa_noglu = super.mesa_noglu;
mesa_glu = super.mesa_glu.override { inherit mesa_noglu; };
mesa = buildEnv {
name = "mesa-${mesa_noglu.version}";
paths = [ mesa_noglu.dev mesa_noglu.out mesa_glu mesa_glu.dev ];
meta = {
platforms = lib.platforms.unix;
};
};
libGL = mesa_noglu;
libGLU = mesa_glu;
libGLU_combined = mesa;
virtualglLib = (super.virtualglLib.override { inherit libGLU_combined fltk; });
fltk = super.fltk.override { inherit libGLU_combined freeglut; };
freeglut = super.freeglut.override { inherit libGL libGLU; };
in
makeSetupHook {
name = "insert-virtualgl";
deps = [ file virtualglLib ];
substitutions = { inherit virtualglLib bash; inherit (xorg) libXext; };
} ./insert-virtualgl.sh;
in {
mesa_noglu = super.mesa_noglu.overrideAttrs ( attrs: {
propagatedBuildInputs = attrs.propagatedBuildInputs or [] ++ [ autoVirtualGLHook ];
} );
}