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 00000000000..e55fd2c3324 --- /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 < + #include + #include + + 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" ]; +}