summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/misc/screensavers/rss-glx/builder.sh29
-rw-r--r--pkgs/misc/screensavers/rss-glx/default.nix16
-rw-r--r--pkgs/os-specific/linux/opengl/xorg-sys/default.nix2
-rw-r--r--pkgs/system/all-packages-generic.nix4
-rw-r--r--pkgs/system/populate-cache.nix1
5 files changed, 51 insertions, 1 deletions
diff --git a/pkgs/misc/screensavers/rss-glx/builder.sh b/pkgs/misc/screensavers/rss-glx/builder.sh
new file mode 100644
index 00000000000..b30dcd006a1
--- /dev/null
+++ b/pkgs/misc/screensavers/rss-glx/builder.sh
@@ -0,0 +1,29 @@
+source $stdenv/setup
+
+# This is a very dirty hack to prevent the binaries from putting the
+# Mesa libraries in their RPATHs.
+ensureDir $out/tmp
+ln -s $mesa/lib/* $out/tmp/
+ensureDir $out/lib
+ln -s $mesa/lib/libGLU* $out/lib/
+export NIX_LDFLAGS="-L$out/tmp $NIX_LDFLAGS"
+
+genericBuild
+
+rm -rf $out/tmp
+
+
+# Add a wrapper around each program to use the appropriate OpenGL driver.
+ensureDir $out/bin/.orig
+
+for i in $(cd $out/bin && ls); do
+    mv $out/bin/$i $out/bin/.orig/$i
+    cat >$out/bin/$i <<EOF
+mesa=$mesa
+
+$(cat $mesaSwitch)
+
+exec $out/bin/.orig/$i "\$@"
+EOF
+    chmod +x $out/bin/$i
+done
diff --git a/pkgs/misc/screensavers/rss-glx/default.nix b/pkgs/misc/screensavers/rss-glx/default.nix
new file mode 100644
index 00000000000..d3c0911ba17
--- /dev/null
+++ b/pkgs/misc/screensavers/rss-glx/default.nix
@@ -0,0 +1,16 @@
+{stdenv, fetchurl, x11, mesa}:
+
+stdenv.mkDerivation {
+  name = "rss-glx-0.8.0";
+  builder = ./builder.sh;
+
+  src = fetchurl {
+    url = http://surfnet.dl.sourceforge.net/sourceforge/rss-glx/rss-glx_0.8.0.tar.bz2;
+    md5 = "d04e909521626a27f9f6d9b5f8a24d6c";
+  };
+
+  buildInputs = [x11 mesa];
+  inherit mesa;
+  
+  mesaSwitch = ../../../build-support/opengl/mesa-switch.sh;
+}
diff --git a/pkgs/os-specific/linux/opengl/xorg-sys/default.nix b/pkgs/os-specific/linux/opengl/xorg-sys/default.nix
index ae348b70c69..8248d9a327d 100644
--- a/pkgs/os-specific/linux/opengl/xorg-sys/default.nix
+++ b/pkgs/os-specific/linux/opengl/xorg-sys/default.nix
@@ -11,5 +11,5 @@
 stdenv.mkDerivation {
   name = "xorg-sys-opengl";
   builder = ./builder.sh;
-  neededLibs = [xlibs.libXxf86vm expat];
+  neededLibs = [xlibs.libXxf86vm xlibs.libXext expat];
 }
diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix
index 143b47c2bdf..59d220e5fad 100644
--- a/pkgs/system/all-packages-generic.nix
+++ b/pkgs/system/all-packages-generic.nix
@@ -2178,4 +2178,8 @@ rec {
     inherit fetchurl stdenv;
   };
 
+  rssglx = (import ../misc/screensavers/rss-glx) {
+    inherit fetchurl stdenv x11 mesa;
+  };
+
 }
diff --git a/pkgs/system/populate-cache.nix b/pkgs/system/populate-cache.nix
index bac38c88204..9841268f409 100644
--- a/pkgs/system/populate-cache.nix
+++ b/pkgs/system/populate-cache.nix
@@ -130,6 +130,7 @@ let {
     jetty
 
     quake3demo
+    rssglx
     xorg_sys_opengl
   ;};