summary refs log tree commit diff
path: root/pkgs/development/idris-modules
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2015-11-27 09:35:59 -0500
committerShea Levy <shea@shealevy.com>2015-11-27 09:35:59 -0500
commitefbee054fd2dca2b14c729cf73aca7246c56d9f2 (patch)
treed5d811f7ccdb053b104a75bfc9f92a873672145a /pkgs/development/idris-modules
parent5898c2060433d803865df3a9af4408d0443de8b8 (diff)
downloadnixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar.gz
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar.bz2
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar.lz
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar.xz
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.tar.zst
nixpkgs-efbee054fd2dca2b14c729cf73aca7246c56d9f2.zip
Add builtin idris packages to idrisPackages
Diffstat (limited to 'pkgs/development/idris-modules')
-rw-r--r--pkgs/development/idris-modules/build-builtin-package.nix12
-rw-r--r--pkgs/development/idris-modules/build-idris-package.nix34
-rw-r--r--pkgs/development/idris-modules/default.nix24
-rw-r--r--pkgs/development/idris-modules/with-packages-wrapper.nix22
4 files changed, 82 insertions, 10 deletions
diff --git a/pkgs/development/idris-modules/build-builtin-package.nix b/pkgs/development/idris-modules/build-builtin-package.nix
new file mode 100644
index 00000000000..9a6b99d1523
--- /dev/null
+++ b/pkgs/development/idris-modules/build-builtin-package.nix
@@ -0,0 +1,12 @@
+{ idris, buildIdrisPackage }: name: deps: buildIdrisPackage (args: {
+  inherit name;
+
+  propagatedBuildInputs = deps;
+
+  inherit (idris) src;
+
+  postUnpack = ''
+    mv $sourceRoot/libs/${name} $IDRIS_LIBRARY_PATH
+    sourceRoot=$IDRIS_LIBRARY_PATH/${name}
+  '';
+})
diff --git a/pkgs/development/idris-modules/build-idris-package.nix b/pkgs/development/idris-modules/build-idris-package.nix
new file mode 100644
index 00000000000..eecd7d585cf
--- /dev/null
+++ b/pkgs/development/idris-modules/build-idris-package.nix
@@ -0,0 +1,34 @@
+{ stdenv, idris }: argf: let args = {
+  preHook = ''
+    mkdir idris-libs
+    export IDRIS_LIBRARY_PATH=$PWD/idris-libs
+
+    addIdrisLibs () {
+      if [ -d $1/lib/${idris.name} ]; then
+        ln -sv $1/lib/${idris.name}/* $IDRIS_LIBRARY_PATH
+      fi
+    }
+
+    envHooks+=(addIdrisLibs)
+  '';
+
+  configurePhase = ''
+    export TARGET=$out/lib/${idris.name}
+  '';
+
+  buildPhase = ''
+    ${idris}/bin/idris --build *.ipkg
+  '';
+
+  doCheck = true;
+
+  checkPhase = ''
+    if grep -q test *.ipkg; then
+      ${idris}/bin/idris --testpkg *.ipkg
+    fi
+  '';
+
+  installPhase = ''
+    ${idris}/bin/idris --install *.ipkg
+  '';
+}; in stdenv.mkDerivation (args // (argf args))
diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix
index d07619724fe..96e8b5b8ad9 100644
--- a/pkgs/development/idris-modules/default.nix
+++ b/pkgs/development/idris-modules/default.nix
@@ -12,7 +12,27 @@
     defaultScope = mkScope self;
 
     callPackage = callPackageWithScope defaultScope;
+
+    buildBuiltinPackage = callPackage ./build-builtin-package.nix {};
+
+    builtins = pkgs.lib.mapAttrs buildBuiltinPackage {
+      prelude = [];
+
+      base = [ self.prelude ];
+
+      contrib = [ self.prelude self.base ];
+
+      effects = [ self.prelude self.base ];
+
+      pruviloj = [ self.prelude self.base ];
+    };
   in {
-    withPackages = packages: callPackage ./with-packages-wrapper.nix { inherit packages idris; };
-  };
+    inherit idris;
+
+    withPackages = callPackage ./with-packages-wrapper.nix {};
+
+    buildIdrisPackage = callPackage ./build-idris-package.nix {};
+
+    builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins;
+  } // builtins;
 in fix' (extends overrides idrisPackages)
diff --git a/pkgs/development/idris-modules/with-packages-wrapper.nix b/pkgs/development/idris-modules/with-packages-wrapper.nix
index e55fd2c3324..f8abe09fe87 100644
--- a/pkgs/development/idris-modules/with-packages-wrapper.nix
+++ b/pkgs/development/idris-modules/with-packages-wrapper.nix
@@ -1,7 +1,19 @@
-{ stdenv, idris, packages }: stdenv.mkDerivation {
+{ stdenv, idris }: buildInputs: stdenv.mkDerivation {
   inherit (idris) name;
 
-  inherit packages;
+  inherit buildInputs;
+
+  preHook = ''
+    mkdir -p $out/lib/${idris.name}
+
+    installIdrisLib () {
+      if [ -d $1/lib/${idris.name} ]; then
+        ln -sv $1/lib/${idris.name}/* $out/lib/${idris.name}
+      fi
+    }
+
+    envHooks+=(installIdrisLib)
+  '';
 
   unpackPhase = ''
     cat >idris.c <<EOF
@@ -24,12 +36,6 @@
   '';
 
   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
   '';