41 lines
1.3 KiB
Nix
41 lines
1.3 KiB
Nix
|
# 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";
|
||
|
maintainer = maintainers.coconnor;
|
||
|
};
|
||
|
}
|