# 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 ]; } ); }