summary refs log tree commit diff
path: root/pkgs/development/idris-modules/with-packages.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/idris-modules/with-packages.nix')
-rw-r--r--pkgs/development/idris-modules/with-packages.nix48
1 files changed, 11 insertions, 37 deletions
diff --git a/pkgs/development/idris-modules/with-packages.nix b/pkgs/development/idris-modules/with-packages.nix
index d4638670f699..1631555eee4a 100644
--- a/pkgs/development/idris-modules/with-packages.nix
+++ b/pkgs/development/idris-modules/with-packages.nix
@@ -1,46 +1,20 @@
 # Build a version of idris with a set of packages visible
 # packages: The packages visible to idris
-{ stdenv, idris }: packages: stdenv.mkDerivation {
-  inherit (idris) name;
+{ stdenv, idris, symlinkJoin, makeWrapper }: packages:
 
-  buildInputs = packages;
+let paths = stdenv.lib.closePropagation packages;
+in
+symlinkJoin {
 
-  preHook = ''
-    mkdir -p $out/lib/${idris.name}
+  name = idris.name + "-with-packages";
 
-    installIdrisLib () {
-      if [ -d $1/lib/${idris.name} ]; then
-        ln -fsv $1/lib/${idris.name}/* $out/lib/${idris.name}
-      fi
-    }
+  paths = paths ++ [idris] ;
 
-    envHostTargetHooks+=(installIdrisLib)
-  '';
+  buildInputs = [ makeWrapper ];
 
-  unpackPhase = ''
-    cat >idris.c <<EOF
-    #include <stdlib.h>
-    #include <unistd.h>
-    #include <stdio.h>
+  postBuild = ''
+    wrapProgram $out/bin/idris \
+      --set IDRIS_LIBRARY_PATH $out/libs
+      '';
 
-    int main (int argc, char ** argv) {
-      /* idris currently only supports a single library path, so respect it if the user set it */
-      setenv("IDRIS_LIBRARY_PATH", "$out/lib/${idris.name}", 0);
-      execv("${idris}/bin/idris", argv);
-      perror("executing ${idris}/bin/idris");
-      return 127;
-    }
-    EOF
-  '';
-
-  buildPhase = ''
-    $CC -O3 -o idris idris.c
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    mv idris $out/bin
-  '';
-
-  stripAllList = [ "bin" ];
 }