summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2022-03-22 00:55:53 +0100
committertv <tv@krebsco.de>2022-03-22 01:01:35 +0100
commit276718b73696f43728f4b2dda9dcedc05e226aba (patch)
tree24970010a6f1a6e4af658b9f29690b5de7fbf7cc
parentd4f29dc4ef959952bf762d87fffeb69a789a303a (diff)
lib.haskell.substitutePkgs: add dependencies
-rw-r--r--lib/haskell.nix18
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/haskell.nix b/lib/haskell.nix
index 2143e9a..4f0ee05 100644
--- a/lib/haskell.nix
+++ b/lib/haskell.nix
@@ -9,19 +9,14 @@ rec {
# "${pkgs.bar}/bin/foo" for each {-pkg:bar-}"foo".
# If a package doesn't exist, a warning gets printed.
substitutePkgs = name: { callsite ? null, pkgs, path }:
- pkgs.writeText name (substitutePkgs' {
- inherit pkgs;
+ let
sourceDescription =
if callsite != null then
"${name} in ${toString callsite}"
else
"${name} from ${toString path}";
- text = readFile path;
- });
- substitutePkgs' = { pkgs, sourceDescription, text }:
- let
- f = s:
+ f = dependencies: s:
let
parse = match "(.*)([{]-pkg(:([^}]+))?-[}]\"([^\"]+)\")(.*)" s;
prefix = elemAt parse 0;
@@ -43,9 +38,12 @@ rec {
exename;
in
if parse == null then
- s
+ (pkgs.writeText name s).overrideAttrs (old: {
+ dependencies = old.dependencies or [] ++ dependencies;
+ })
+
else
- f (prefix + toJSON substitute + suffix);
+ f (dependencies ++ [pkg]) (prefix + toJSON substitute + suffix);
in
- f text;
+ f [] (readFile path);
}