diff --git a/pkgs/development/libraries/haskell/hybrid-vectors/default.nix b/pkgs/development/libraries/haskell/hybrid-vectors/default.nix
new file mode 100644
index 000000000000..56fd36fbe87d
--- /dev/null
+++ b/pkgs/development/libraries/haskell/hybrid-vectors/default.nix
@@ -0,0 +1,14 @@
+{ cabal, deepseq, primitive, vector }:
+
+cabal.mkDerivation (self: {
+  pname = "hybrid-vectors";
+  version = "0.1";
+  sha256 = "0a5ry6xmkr0zjz0kp7qbm7kdz5yr9842gy116902djppmdn5dq05";
+  buildDepends = [ deepseq primitive vector ];
+  meta = {
+    homepage = "http://github.com/ekmett/hybrid-vectors";
+    description = "Hybrid vectors e.g. Mixed Boxed/Unboxed vectors";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/linear/default.nix b/pkgs/development/libraries/haskell/linear/default.nix
index a0d1e67ee6f3..5b8f42d5420c 100644
--- a/pkgs/development/libraries/haskell/linear/default.nix
+++ b/pkgs/development/libraries/haskell/linear/default.nix
@@ -17,6 +17,7 @@ cabal.mkDerivation (self: {
     binary doctest filepath HUnit lens simpleReflect testFramework
     testFrameworkHunit
   ];
+  doCheck = false;
   meta = {
     homepage = "http://github.com/ekmett/linear/";
     description = "Linear Algebra";
diff --git a/pkgs/development/libraries/haskell/sparse/default.nix b/pkgs/development/libraries/haskell/sparse/default.nix
new file mode 100644
index 000000000000..6af05d19379b
--- /dev/null
+++ b/pkgs/development/libraries/haskell/sparse/default.nix
@@ -0,0 +1,28 @@
+{ cabal, contravariant, deepseq, doctest, filepath, hlint
+, hybridVectors, lens, linear, mtl, primitive, QuickCheck
+, semigroups, simpleReflect, testFramework
+, testFrameworkQuickcheck2, testFrameworkTh, transformers, vector
+, vectorAlgorithms
+}:
+
+cabal.mkDerivation (self: {
+  pname = "sparse";
+  version = "0.9";
+  sha256 = "0v0z7kjgmcdx9ajlhr9pc1i3qqghd60s02xnlmj4hcxby8k0r8mc";
+  buildDepends = [
+    contravariant deepseq hybridVectors lens primitive transformers
+    vector vectorAlgorithms
+  ];
+  testDepends = [
+    deepseq doctest filepath hlint hybridVectors lens linear mtl
+    QuickCheck semigroups simpleReflect testFramework
+    testFrameworkQuickcheck2 testFrameworkTh transformers vector
+  ];
+  doCheck = false;
+  meta = {
+    homepage = "http://github.com/ekmett/sparse";
+    description = "A playground of sparse linear algebra primitives using Morton ordering";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 766a8d7d3094..282f36ac9cd0 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -1449,6 +1449,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   hxtUnicode = callPackage ../development/libraries/haskell/hxt-unicode {};
 
+  hybridVectors = callPackage ../development/libraries/haskell/hybrid-vectors {};
+
   iCalendar = callPackage ../development/libraries/haskell/iCalendar {};
 
   idna = callPackage ../development/libraries/haskell/idna {};
@@ -2128,6 +2130,11 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   socks = callPackage ../development/libraries/haskell/socks {};
 
+  sparse = callPackage ../development/libraries/haskell/sparse {
+    lens = self.lens_4_0_1;
+    linear = self.linear.override { lens = self.lens_4_0_1; };
+  };
+
   srcloc = callPackage ../development/libraries/haskell/srcloc {};
 
   stateref = callPackage ../development/libraries/haskell/stateref {};