summary refs log tree commit diff
path: root/pkgs/desktops/maxx
diff options
context:
space:
mode:
authorgnidorah <gnidorah@users.noreply.github.com>2017-08-24 19:34:08 +0300
committergnidorah <gnidorah@users.noreply.github.com>2017-08-24 19:34:08 +0300
commit15ae2cbeea340093d82ce6e935de9f8160e9d855 (patch)
tree1a17535ce25322c1d009ee8152818d305c037131 /pkgs/desktops/maxx
parentb73ae0a695f3fec59d4d0c4613496e40e3c795c4 (diff)
downloadnixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar.gz
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar.bz2
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar.lz
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar.xz
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.tar.zst
nixpkgs-15ae2cbeea340093d82ce6e935de9f8160e9d855.zip
maxx: use libredirect
Diffstat (limited to 'pkgs/desktops/maxx')
-rw-r--r--pkgs/desktops/maxx/default.nix58
1 files changed, 41 insertions, 17 deletions
diff --git a/pkgs/desktops/maxx/default.nix b/pkgs/desktops/maxx/default.nix
index 5bcc6e84152..3e8ca1f388e 100644
--- a/pkgs/desktops/maxx/default.nix
+++ b/pkgs/desktops/maxx/default.nix
@@ -1,16 +1,21 @@
-{ stdenv, fetchurl, makeWrapper
+{ stdenv, fetchurl, makeWrapper, libredirect, gcc-unwrapped, bash, gtk-engine-murrine, gtk_engines, librsvg
+
 , libX11, libXext, libXi, libXau, libXrender, libXft, libXmu, libSM, libXcomposite, libXfixes, libXpm
-, libXinerama, libXdamage, libICE, libXtst, libXaw
-, fontconfig, pango, cairo, glib, libxml2, atk, gtk2, gdk_pixbuf, mesa_noglu, ncurses
-, gcc, xclock, xsettingsd, bash, gtk-engine-murrine, gtk_engines, librsvg }:
+, libXinerama, libXdamage, libICE, libXtst, libXaw, fontconfig, pango, cairo, glib, libxml2, atk, gtk2
+, gdk_pixbuf, mesa_noglu, ncurses
+
+, xclock, xsettingsd }:
 
 let
   version = "Indy-1.1.0";
 
   deps = [
-    libX11 libXext libXi libXau libXrender libXft libXmu libSM libXcomposite libXfixes libXpm
-    libXinerama libXdamage libICE libXtst libXaw
-    stdenv.cc.cc fontconfig pango cairo glib libxml2 atk gtk2 gdk_pixbuf mesa_noglu ncurses
+    stdenv.cc.cc libX11 libXext libXi libXau libXrender libXft libXmu libSM libXcomposite libXfixes libXpm
+    libXinerama libXdamage libICE libXtst libXaw fontconfig pango cairo glib libxml2 atk gtk2
+    gdk_pixbuf mesa_noglu ncurses
+  ];
+  runtime_deps = [
+    xclock xsettingsd
   ];
 in stdenv.mkDerivation {
   name = "MaXX-${version}";
@@ -26,15 +31,12 @@ in stdenv.mkDerivation {
     })
   ];
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   buildPhase = ''
     while IFS= read -r -d $'\0' i; do
-      if isELF "$i"; then
-        patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i" || true
-        patchelf --set-rpath "${stdenv.lib.makeLibraryPath deps}" "$i"
-      fi
-    done < <(find "." -type f -print0)
+      substituteInPlace "$i" --replace /opt/MaXX $out/opt/MaXX
+    done < <(find "." -type f -exec grep -Iq /opt/MaXX {} \; -and -print0)
 
     substituteInPlace bin/adminterm \
       --replace /bin/bash ${bash}/bin/bash
@@ -52,15 +54,37 @@ in stdenv.mkDerivation {
 
     wrapProgram $maxx/etc/skel/Xsession.dt \
       --prefix GTK_PATH : "${gtk-engine-murrine}/lib/gtk-2.0:${gtk_engines}/lib/gtk-2.0" \
-      --prefix GDK_PIXBUF_MODULE_FILE : "$(echo ${librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)"
-  '';
+      --prefix GDK_PIXBUF_MODULE_FILE : "$(echo ${librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)" \
+      --prefix PATH : ${stdenv.lib.makeBinPath runtime_deps}
 
-  propagatedUserEnvPkgs = [ gcc xclock xsettingsd ];
+    while IFS= read -r -d $'\0' i; do
+      if isELF "$i"; then
+        bin=`patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i"; echo $?`
+        patchelf --set-rpath "${stdenv.lib.makeLibraryPath deps}" "$i"
+        if [ "$bin" -eq 0 ]; then
+          wrapProgram "$i" \
+            --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+            --set NIX_REDIRECTS /opt/MaXX=$maxx
+        fi
+      fi
+    done < <(find "$maxx" -type f -print0)
+
+    cp ${gcc-unwrapped}/bin/cpp ${gcc-unwrapped}/libexec/gcc/*/*/cc1 $maxx/bin
+    for i in $maxx/bin/cpp $maxx/bin/cc1
+    do
+      wrapProgram "$i" \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set NIX_REDIRECTS /opt/MaXX=$maxx
+    done
+  '';
 
   meta = with stdenv.lib; {
     description = "A replica of IRIX Interactive Desktop";
     homepage = http://www.maxxinteractive.com;
-    license = licenses.free;
+    license = {
+      url = http://www.maxxinteractive.com/site/?page_id=97;
+      free = true;
+    };
     maintainers = [ maintainers.gnidorah ];
     platforms = ["x86_64-linux"];
     hydraPlatforms = [];