From ae8a8b5deb305e2e8884d9f34a91a7ab28b62b1b Mon Sep 17 00:00:00 2001
From: Shea Levy <shea@shealevy.com>
Date: Sat, 22 Mar 2014 22:40:35 -0400
Subject: [PATCH] Add buildLocalCabal helper function

---
 pkgs/top-level/haskell-packages.nix | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 16405f53da67..5b39974c3158 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -2893,6 +2893,25 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   cabal2nix = callPackage ../development/tools/haskell/cabal2nix {};
 
+  # Build a cabal package given a local .cabal file
+  buildLocalCabal = src: name: let
+    cabalExpr = pkgs.stdenv.mkDerivation {
+      name = "${name}.nix";
+
+      LANG = "en_US.UTF-8";
+
+      LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
+
+      buildCommand = ''
+      ${self.cabal2nix}/bin/cabal2nix ${src + "/${name}.cabal"} --sha256=FILTERME \
+          | grep -v FILTERME | sed \
+            -e 's/licenses.proprietary/licenses.unfree/' \
+            -e 's/{ cabal/{ cabal, src/' \
+            -e 's/pname = \([^\n]*\)/pname = \1\n  inherit src;/'  > $out
+      '';
+    };
+  in callPackage cabalExpr { inherit src; };
+
   cabalDev = callPackage ../development/tools/haskell/cabal-dev {};
 
   cabal2Ghci = callPackage ../development/tools/haskell/cabal2ghci {};