nixpkgs/pkgs/tools/X11/primus/default.nix

41 lines
1.3 KiB
Nix
Raw Normal View History

# For a 64bit + 32bit system the LD_LIBRARY_PATH must contain both the 32bit and 64bit primus
# libraries. Providing a different primusrun for each architecture will not work as expected. EG:
# Using steam under wine can involve both 32bit and 64bit process. All of which inherit the
# same LD_LIBRARY_PATH.
# Other distributions do the same.
{ stdenv
, primusLib
, writeScript
, primusLib_i686 ? null
}:
with stdenv.lib;
let
version = "1.0.0748176";
ldPath = makeLibraryPath ([primusLib] ++ optional (primusLib_i686 != null) primusLib_i686);
primusrun = writeScript "primusrun"
''
export LD_LIBRARY_PATH=${ldPath}:\$LD_LIBRARY_PATH
# see: https://github.com/amonakov/primus/issues/138
# On my system, as of 3.16.6, the intel driver dies when the pixel buffers try to read from the
# source memory directly. Setting PRIMUS_UPLOAD causes an indirection through textures which
# avoids this issue.
export PRIMUS_UPLOAD=1
exec "$@"
'';
in
stdenv.mkDerivation {
name = "primus-${version}";
builder = writeScript "builder"
''
source $stdenv/setup
mkdir -p $out/bin
cp ${primusrun} $out/bin/primusrun
'';
meta = {
homepage = https://github.com/amonakov/primus;
description = "Faster OpenGL offloading for Bumblebee";
maintainers = maintainers.coconnor;
};
}