about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/make-package-set.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2017-06-10 19:36:14 -0400
committerShea Levy <shea@shealevy.com>2017-06-10 20:13:17 -0400
commit219bb1c80c33b02c739b3a7cd206543efad8fe92 (patch)
tree14150576dc2ba21518907d997fbf08cadcd57275 /pkgs/development/haskell-modules/make-package-set.nix
parentda690bdf2db6229c595fdbd482fa7987778dcfb0 (diff)
downloadnixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar.gz
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar.bz2
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar.lz
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar.xz
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.tar.zst
nixlib-219bb1c80c33b02c739b3a7cd206543efad8fe92.zip
Add packageSourceOverrides function to haskell package sets
Diffstat (limited to 'pkgs/development/haskell-modules/make-package-set.nix')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix12
1 files changed, 12 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index e599b56545d9..52988dc4cbbe 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -116,6 +116,18 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
     # Creates a Haskell package from a source package by calling cabal2nix on the source.
     callCabal2nix = name: src: self.callPackage (self.haskellSrc2nix { inherit src name; });
 
+    # : Map Name (Either Path VersionNumber) -> HaskellPackageOverrideSet
+    # Given a set whose values are either paths or version strings, produces
+    # a package override set (i.e. (self: super: { etc. })) that sets
+    # the packages named in the input set to the corresponding versions
+    packageSourceOverrides =
+      overrides: self: super: pkgs.lib.mapAttrs (name: src:
+        let isPath = x: builtins.substring 0 1 (toString x) == "/";
+            generateExprs = if isPath src
+                               then self.callCabal2nix
+                               else self.callHackage;
+        in generateExprs name src {}) overrides;
+
     ghcWithPackages = selectFrom: withPackages (selectFrom self);
 
     ghcWithHoogle = selectFrom: