diff --git a/pkgs/development/libraries/haskell/IntervalMap/default.nix b/pkgs/development/libraries/haskell/IntervalMap/default.nix
new file mode 100644
index 000000000000..e2b94abd7c8d
--- /dev/null
+++ b/pkgs/development/libraries/haskell/IntervalMap/default.nix
@@ -0,0 +1,16 @@
+{ cabal, Cabal, deepseq, QuickCheck }:
+
+cabal.mkDerivation (self: {
+  pname = "IntervalMap";
+  version = "0.3.0.2";
+  sha256 = "14pbq5n2cn9gxjkmqpnbn7dx9963wp3sdbb180wm9l5xqi338s0l";
+  buildDepends = [ deepseq ];
+  testDepends = [ Cabal deepseq QuickCheck ];
+  meta = {
+    homepage = "http://www.chr-breitkopf.de/comp/IntervalMap";
+    description = "Maps from Intervals to values, with efficient search";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [ self.stdenv.lib.maintainers.ocharles ];
+  };
+})
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index c8aa68c00fae..40446bcd3660 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -1367,6 +1367,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   intervals = callPackage ../development/libraries/haskell/intervals {};
 
+  IntervalMap = callPackage ../development/libraries/haskell/IntervalMap {};
+
   ioChoice = callPackage ../development/libraries/haskell/io-choice {};
 
   IORefCAS = callPackage ../development/libraries/haskell/IORefCAS {};