opengl: Automatically insert virtualgl into opengl executables
This commit is contained in:
36
pkgs/opengl/default.nix
Normal file
36
pkgs/opengl/default.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
# 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 }:
|
||||
|
||||
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 {
|
||||
deps = [ file virtualglLib ];
|
||||
substitutions = { inherit virtualglLib; };
|
||||
} ./auto-virtualgl.sh;
|
||||
|
||||
in {
|
||||
mesa_noglu = super.mesa_noglu.overrideAttrs ( attrs: {
|
||||
propagatedBuildInputs = attrs.propagatedBuildInputs or [] ++ [ autoVirtualGLHook ];
|
||||
} );
|
||||
}
|
||||
Reference in New Issue
Block a user