about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/idris-modules/build-idris-package.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:36 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:47 +0000
commit36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch)
treeb3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/development/idris-modules/build-idris-package.nix
parent4e31070265257dc67d120c27e0f75c2344fdfa9a (diff)
parentabf060725d7614bd3b9f96764262dfbc2f9c2199 (diff)
downloadnixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs
git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a
git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/development/idris-modules/build-idris-package.nix')
-rw-r--r--nixpkgs/pkgs/development/idris-modules/build-idris-package.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/idris-modules/build-idris-package.nix b/nixpkgs/pkgs/development/idris-modules/build-idris-package.nix
new file mode 100644
index 000000000000..5e1288685a7e
--- /dev/null
+++ b/nixpkgs/pkgs/development/idris-modules/build-idris-package.nix
@@ -0,0 +1,61 @@
+# Build an idris package
+{ stdenv, lib, idrisPackages, gmp }:
+  { idrisDeps ? []
+  , noPrelude ? false
+  , noBase ? false
+  , name
+  , version
+  , ipkgName ? name
+  , extraBuildInputs ? []
+  , ...
+  }@attrs:
+let
+  allIdrisDeps = idrisDeps
+    ++ lib.optional (!noPrelude) idrisPackages.prelude
+    ++ lib.optional (!noBase) idrisPackages.base;
+  idris-with-packages = idrisPackages.with-packages allIdrisDeps;
+  newAttrs = builtins.removeAttrs attrs [
+    "idrisDeps" "noPrelude" "noBase"
+    "name" "version" "ipkgName" "extraBuildInputs"
+  ] // {
+    meta = attrs.meta // {
+      platforms = attrs.meta.platforms or idrisPackages.idris.meta.platforms;
+    };
+  };
+in
+stdenv.mkDerivation ({
+  name = "idris-${name}-${version}";
+
+  buildInputs = [ idris-with-packages gmp ] ++ extraBuildInputs;
+  propagatedBuildInputs = allIdrisDeps;
+
+  # Some packages use the style
+  # opts = -i ../../path/to/package
+  # rather than the declarative pkgs attribute so we have to rewrite the path.
+  postPatch = ''
+    runHook prePatch
+    sed -i ${ipkgName}.ipkg -e "/^opts/ s|-i \\.\\./|-i ${idris-with-packages}/libs/|g"
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    idris --build ${ipkgName}.ipkg
+    runHook postBuild
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+    if grep -q tests ${ipkgName}.ipkg; then
+      idris --testpkg ${ipkgName}.ipkg
+    fi
+    runHook postCheck
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    idris --install ${ipkgName}.ipkg --ibcsubdir $out/libs
+    IDRIS_DOC_PATH=$out/doc idris --installdoc ${ipkgName}.ipkg || true
+    runHook postInstall
+  '';
+
+} // newAttrs)