summaryrefslogtreecommitdiffstats
path: root/pkgs/development/compilers/idris2
diff options
context:
space:
mode:
authorMathew Polzin <matt.polzin@gmail.com>2024-06-23 11:11:55 -0500
committerMathew Polzin <matt.polzin@gmail.com>2024-06-23 11:22:40 -0500
commit85c18bcd36a2b9a214af244f0e5def5b5184f76c (patch)
treef1a623657c6312733f3968786c362ced84988c4e /pkgs/development/compilers/idris2
parent2b14afdba35b51a1a9f841d695d2254f5f1eadca (diff)
idris2Packages.buildIdris: More lenient and ergonomic dependency inputs
Diffstat (limited to 'pkgs/development/compilers/idris2')
-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 1df763e4c4fd..5b7c4a92a5ff 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}";