From 34e8eea942e02a5562c2391e62fd1e5cfc154dda Mon Sep 17 00:00:00 2001
From: Shea Levy <shea@shealevy.com>
Date: Fri, 27 Nov 2015 07:56:11 -0500
Subject: [PATCH] Add with-packages wrapper for idris

---
 .../idris-modules/with-packages-wrapper.nix   | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 pkgs/development/idris-modules/with-packages-wrapper.nix

diff --git a/pkgs/development/idris-modules/with-packages-wrapper.nix b/pkgs/development/idris-modules/with-packages-wrapper.nix
new file mode 100644
index 000000000000..e55fd2c3324c
--- /dev/null
+++ b/pkgs/development/idris-modules/with-packages-wrapper.nix
@@ -0,0 +1,38 @@
+{ stdenv, idris, packages }: stdenv.mkDerivation {
+  inherit (idris) name;
+
+  inherit packages;
+
+  unpackPhase = ''
+    cat >idris.c <<EOF
+    #include <stdlib.h>
+    #include <unistd.h>
+    #include <stdio.h>
+
+    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 = ''
+    gcc -O3 -o idris idris.c
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/${idris.name}
+    for package in $packages
+    do
+      ln -sv $package/lib/${idris.name}/* $out/lib/${idris.name}
+    done
+
+    mkdir -p $out/bin
+    mv idris $out/bin
+  '';
+
+  stripAllList = [ "bin" ];
+}