diff --git a/pkgs/tools/X11/primus/builder.sh b/pkgs/tools/X11/primus/builder.sh index 6e0bb7d870a70e..1f7d5186bfe637 100644 --- a/pkgs/tools/X11/primus/builder.sh +++ b/pkgs/tools/X11/primus/builder.sh @@ -3,10 +3,10 @@ source $stdenv/setup cp -r $src src cd src -export LIBDIR=$out/x86_64 +export LIBDIR=$out/lib export PRIMUS_libGLa=$nvidia/lib/libGL.so -export PRIMUS_libGLd=/var/run/opengl-driver/lib/libGL.so -export PRIMUS_LOAD_GLOBAL=/var/run/opengl-driver/lib/libglapi.so +export PRIMUS_libGLd=$mesa/lib/libGL.so +export PRIMUS_LOAD_GLOBAL=$mesa/lib/libglapi.so make -ln -s $out/x86_64/libGL.so.1 $out/x86_64/libGL.so +ln -s $out/libGL.so.1 $out/libGL.so diff --git a/pkgs/tools/X11/primus/default.nix b/pkgs/tools/X11/primus/default.nix index 2adcb26b1c4215..fe880cab8342e6 100644 --- a/pkgs/tools/X11/primus/default.nix +++ b/pkgs/tools/X11/primus/default.nix @@ -1,20 +1,22 @@ -{ stdenv, fetchgit -, x11, mesa -, linuxPackages +{ stdenv +, primusLib_x64 +, primusLib_i686 +, writeScript }: let version = "1.0.0"; + primusrun = writeScript "primusrun" +'' + export LD_LIBRARY_PATH=${primusLib_x64}/lib:${primusLib_i686}/lib + exec "$@" +''; in stdenv.mkDerivation { name = "primus-${version}"; - src = fetchgit { - url = git://github.com/amonakov/primus.git; - rev = "074817614c014e3a99259388cb18fd54648b659a"; - sha256 = "0mrh432md6zrm16avxyk57mgszrqpgwdjahspchvlaccqxp3x82v"; - }; - - nvidia = linuxPackages.nvidia_x11; - - buildInputs = [ x11 mesa ]; - builder = ./builder.sh; + builder = writeScript "builder" + '' + source $stdenv/setup + mkdir -p $out/bin + cp ${primusrun} $out/bin/primusrun + ''; } diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix new file mode 100644 index 00000000000000..c4c6474f96003f --- /dev/null +++ b/pkgs/tools/X11/primus/lib.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchgit +, x11, mesa +, nvidia +}: +let + version = "1.0.0"; +in +stdenv.mkDerivation { + name = "primus-lib-${version}"; + src = fetchgit { + url = git://github.com/amonakov/primus.git; + rev = "074817614c014e3a99259388cb18fd54648b659a"; + sha256 = "0mrh432md6zrm16avxyk57mgszrqpgwdjahspchvlaccqxp3x82v"; + }; + + inherit nvidia mesa; + + buildInputs = [ x11 mesa ]; + builder = ./builder.sh; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b738a6a83fd7ab..0af52ebbfb695d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9327,6 +9327,13 @@ let virtualgl = callPackage ../tools/X11/virtualgl { }; primus = callPackage ../tools/X11/primus { + inherit writeScript; + primusLib_x64 = callPackage ../tools/X11/primus/lib.nix { + nvidia = linuxPackages.nvidia_x11; + }; + primusLib_i686 = callPackage_i686 ../tools/X11/primus/lib.nix { + nvidia = callPackage_i686 ../os-specific/linux/nvidia-x11 { libsOnly = true; }; + }; }; bumblebee = callPackage ../tools/X11/bumblebee {