1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 libX11,
7 libGL,
8 linuxPackages,
9 nvidia_x11 ? linuxPackages.nvidia_x11.override { libsOnly = true; },
10 libglvnd,
11}:
12
13let
14 aPackage =
15 if nvidia_x11 == null then
16 libGL
17 else if nvidia_x11.useGLVND then
18 libglvnd
19 else
20 nvidia_x11;
21
22in
23stdenv.mkDerivation {
24 pname = "primus-lib";
25 version = "unstable-2015-04-28";
26
27 src = fetchFromGitHub {
28 owner = "amonakov";
29 repo = "primus";
30 rev = "d1afbf6fce2778c0751eddf19db9882e04f18bfd";
31 sha256 = "118jm57ccawskb8vjq3a9dpa2gh72nxzvx2zk7zknpy0arrdznj1";
32 };
33
34 patches = [
35 # Bump buffer size for long library paths.
36 (fetchpatch {
37 url = "https://github.com/abbradar/primus/commit/2f429e232581c556df4f4bf210aee8a0c99c60b7.patch";
38 sha256 = "1da6ynz7r7x98495i329sf821308j1rpy8prcdraqahz7p4c89nc";
39 })
40 ];
41
42 buildInputs = [
43 libX11
44 libGL
45 ];
46
47 makeFlags = [
48 "LIBDIR=$(out)/lib"
49 "PRIMUS_libGLa=${aPackage}/lib/libGL.so"
50 "PRIMUS_libGLd=${libGL}/lib/libGL.so"
51 ];
52
53 installPhase = ''
54 ln -s $out/lib/libGL.so.1 $out/lib/libGL.so
55 '';
56
57 passthru.glvnd = if nvidia_x11 != null && nvidia_x11.useGLVND then nvidia_x11 else null;
58
59 meta = {
60 description = "Low-overhead client-side GPU offloading";
61 homepage = "https://github.com/amonakov/primus";
62 platforms = [
63 "i686-linux"
64 "x86_64-linux"
65 ];
66 license = lib.licenses.bsd2;
67 maintainers = with lib.maintainers; [ abbradar ];
68 };
69}