about summary refs log tree commit diff
path: root/pkgs/development/compilers/idris2/build-idris.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/idris2/build-idris.nix')
-rw-r--r--pkgs/development/compilers/idris2/build-idris.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/pkgs/development/compilers/idris2/build-idris.nix b/pkgs/development/compilers/idris2/build-idris.nix
index 1df763e4c4fd4..5b7c4a92a5ffc 100644
--- a/pkgs/development/compilers/idris2/build-idris.nix
+++ b/pkgs/development/compilers/idris2/build-idris.nix
@@ -18,11 +18,24 @@
 , ... }@attrs:
 
 let
+  # loop over idrisLibraries and normalize them by turning any that are
+  # direct outputs of the buildIdris function into the `.library {}`
+  # property.
+  idrisLibraryLibs = map (idrisLib:
+    if lib.isDerivation idrisLib
+    then idrisLib
+    else if builtins.isFunction idrisLib
+    then idrisLib {}
+    else if (builtins.isAttrs idrisLib && idrisLib ? "library")
+    then idrisLib.library {}
+    else throw "Found an Idris2 library dependency that was not the result of the buildIdris function"
+  ) idrisLibraries;
+
   propagate = libs: lib.unique (lib.concatMap (nextLib: [nextLib] ++ nextLib.propagatedIdrisLibraries) libs);
   ipkgFileName = ipkgName + ".ipkg";
   idrName = "idris2-${idris2.version}";
   libSuffix = "lib/${idrName}";
-  propagatedIdrisLibraries = propagate idrisLibraries;
+  propagatedIdrisLibraries = propagate idrisLibraryLibs;
   libDirs =
     (lib.makeSearchPath libSuffix propagatedIdrisLibraries) +
     ":${idris2}/${idrName}";