diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6bbadb12a88cd983fb05ebfdca6bb81ec4ecdb4c..315a6e0862fc4475b70c41578ad6aa7e10c6c5ee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ build:
          - aarch64-darwin
          - x86_64-linux
         PACKAGE:
+         - Agda
          - JuicyPixels
          - brick
          - composite-base
diff --git a/README.md b/README.md
index ef9a1f4383696034efde2ad40a681e6a72283ea4..d0891685eb0ebbda3c189b384ee4eb04d9bf7963 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@ a request here.
 
 The following things are always expected to be here:
 
+* Agda
 * JuicyPixels
 * brick
 * composite-base
diff --git a/horizon.dhall b/horizon.dhall
index 7aa8591522302fe644474d40a6f1ee00b1efb17b..f284d3d12842fa89c25410d7d27f8d2907086dd4 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -2,7 +2,8 @@ let H =
       https://gitlab.horizon-haskell.net/dhall/horizon-spec/-/raw/0.10.0/horizon-spec/package.dhall
 
 let packages =
-      { HsOpenSSL = H.callHackage "HsOpenSSL" "0.11.7.6"
+      { Agda = H.callHackage "Agda" "2.6.4.3"
+      , HsOpenSSL = H.callHackage "HsOpenSSL" "0.11.7.6"
       , JuicyPixels =
           H.callGit
             "https://github.com/Twinside/Juicy.Pixels"
@@ -10,10 +11,12 @@ let packages =
             (None H.Subdir)
       , Only = H.callHackage "Only" "0.1"
       , RSA = H.callHackage "RSA" "2.4.1"
+      , STMonadTrans = H.callHackage "STMonadTrans" "0.4.8"
       , authenticate-oauth = H.callHackage "authenticate-oauth" "1.7"
       , base64 = H.callHackage "base64" "1.0"
       , bin = H.callHackage "bin" "0.1.3"
       , binary-orphans = H.callHackage "binary-orphans" "1.0.5"
+      , boxes = H.callHackage "boxes" "0.1.5"
       , bytes = H.callHackage "bytes" "0.17.3"
       , bytestring-lexing = H.callHackage "bytestring-lexing" "0.5.0.12"
       , cassava = H.callHackage "cassava" "0.5.3.1"
@@ -34,6 +37,7 @@ let packages =
       , cryptohash-md5 = H.callHackage "cryptohash-md5" "0.11.101.0"
       , css-text = H.callHackage "css-text" "0.1.3.0"
       , data-binary-ieee754 = H.callHackage "data-binary-ieee754" "0.4.4"
+      , data-hash = H.callHackage "data-hash" "0.2.0.1"
       , deepseq-generics = H.callHackage "deepseq-generics" "0.2.0.0"
       , dense-linear-algebra = H.callHackage "dense-linear-algebra" "0.1.0.0"
       , dependent-map = H.callHackage "dependent-map" "0.4.0.0"
@@ -43,11 +47,13 @@ let packages =
       , digest = H.callHackage "digest" "0.0.2.1"
       , directory-tree = H.callHackage "directory-tree" "0.12.1"
       , doctest = H.callHackage "doctest" "0.22.2"
+      , equivalence = H.callHackage "equivalence" "0.4.1"
       , errors = H.callHackage "errors" "2.3.0"
       , extensible-effects = H.callHackage "extensible-effects" "5.0.0.1"
       , generic-monoid = H.callHackage "generic-monoid" "0.1.0.1"
       , generics-sop = H.callHackage "generics-sop" "0.5.1.4"
       , ghc-tcplugins-extra = H.callHackage "ghc-tcplugins-extra" "0.4.6"
+      , hashtables = H.callHackage "hashtables" "1.3.1"
       , haskell-src = H.callHackage "haskell-src" "1.0.4"
       , hedis = H.callHackage "hedis" "0.15.2"
       , hint = H.callHackage "hint" "0.9.0.8"
@@ -76,6 +82,7 @@ let packages =
       , monad-time = H.callHackage "monad-time" "0.4.0.0"
       , monads-tf = H.callHackage "monads-tf" "0.3.0.1"
       , monoidal-containers = H.callHackage "monoidal-containers" "0.6.4.0"
+      , murmur-hash = H.callHackage "murmur-hash" "0.1.0.10"
       , network-info = H.callHackage "network-info" "0.2.1"
       , newtype = H.callHackage "newtype" "0.2.2.0"
       , openapi3 = H.callHackage "openapi3" "3.2.4"
@@ -85,6 +92,7 @@ let packages =
       , optics-th = H.callHackage "optics-th" "0.4.1"
       , options = H.callHackage "options" "1.2.1.2"
       , path-pieces = H.callHackage "path-pieces" "0.2.1"
+      , peano = H.callHackage "peano" "0.1.0.2"
       , persistent = H.callHackage "persistent" "2.14.6.1"
       , persistent-postgresql = H.callHackage "persistent-postgresql" "2.13.6.1"
       , persistent-qq = H.callHackage "persistent-qq" "2.12.0.6"
@@ -158,6 +166,7 @@ let packages =
       , unagi-chan = H.callHackage "unagi-chan" "0.4.1.4"
       , uri-bytestring = H.callHackage "uri-bytestring" "0.3.3.1"
       , uuid = H.callHackage "uuid" "1.3.15"
+      , vector-hashtables = H.callHackage "vector-hashtables" "0.1.2.0"
       , vinyl = H.callHackage "vinyl" "0.14.3"
       , wai-app-static = H.callHackage "wai-app-static" "3.1.9"
       , wai-extra = H.callHackage "wai-extra" "3.1.15"
diff --git a/horizon.lock b/horizon.lock
index 8de2915e56cda8bb13738a02f226e1b1bd90330b..d0251678643942b712d5ad7efd715c98929442c8 100644
--- a/horizon.lock
+++ b/horizon.lock
@@ -1,4 +1,8 @@
-[ { mapKey = "HsOpenSSL"
+[ { mapKey = "Agda"
+  , mapValue =
+      "a229190770e02e3c7a4b056eb7120a56ad3574cc151cd1afedcd255a83d8d7bf"
+  }
+, { mapKey = "HsOpenSSL"
   , mapValue =
       "ad8959ca2ac50547453b9a41e7d211a20d063e6a9bfa70bf4c494bfc2df78e7d"
   }
@@ -14,6 +18,10 @@
   , mapValue =
       "d855fdff94c43c4505a125aff3c9b5f5a0c9f691750e3532acea28e0d7caeb1a"
   }
+, { mapKey = "STMonadTrans"
+  , mapValue =
+      "aadbbed903064dcaf077a03bf67a556f10675028e28ff7986bf7fa7c8caf64fb"
+  }
 , { mapKey = "authenticate-oauth"
   , mapValue =
       "32807668cdd60e1ef4baf8f321ddbba3cdf180a8764d34a1673ada2af09e6a25"
@@ -30,6 +38,10 @@
   , mapValue =
       "a64bc40a6435e553f698f26d10c47f5ba97bfb2e84b1d77378a605627df4e9d1"
   }
+, { mapKey = "boxes"
+  , mapValue =
+      "a2b151a11bac277659e9887a83e57ec57babdadc4a824737c12751211cdc3c70"
+  }
 , { mapKey = "bytes"
   , mapValue =
       "743443a6e25cb2ecf39e93ce9fe4ee7810a2f2f8e874e8f475caa64e91cb7ab5"
@@ -94,6 +106,10 @@
   , mapValue =
       "671e0f0348831cc0cb130362756bdd79be37af81f781a35510b761b43b7c65b3"
   }
+, { mapKey = "data-hash"
+  , mapValue =
+      "e49e67f6945418cd4af3ecbf5664d6977551301064d2d783225ea712e16ee77b"
+  }
 , { mapKey = "deepseq-generics"
   , mapValue =
       "8ba05dee74715b6ccbfe3c3282dbf38b998c59b5d998076bc67ade58832da9a7"
@@ -126,6 +142,10 @@
   , mapValue =
       "559e3ff734499e7d3dd672600f2fcd98db2a5fbb2e74b9d77579aeca9f4a53df"
   }
+, { mapKey = "equivalence"
+  , mapValue =
+      "af70211139c23bcecc1aee5d7dd456cbfb5273699a630faeb1d140e2c8b71c76"
+  }
 , { mapKey = "errors"
   , mapValue =
       "2046a5e78edce0af606d90f86c26c007ab87369024b0782b6b538aa2c632f1c2"
@@ -146,6 +166,10 @@
   , mapValue =
       "cd130cc4baa23400b3132a91b06000d5c20b851b7616b3ff48fc70041c5f2f69"
   }
+, { mapKey = "hashtables"
+  , mapValue =
+      "04bc3a6b9509619bd47b2cca79307a08c7f313f40892cd5bcf6f881ee8419d89"
+  }
 , { mapKey = "haskell-src"
   , mapValue =
       "f9f7b1af600ad3973b17e001d4c13246e48a05c8309bd25b87cfcd913d8aacf4"
@@ -250,6 +274,10 @@
   , mapValue =
       "86d5bc56fb0e7034f2f7e95251637f0aaea13c4e12f0df59d96f73cf68cd7d67"
   }
+, { mapKey = "murmur-hash"
+  , mapValue =
+      "56d3dca4abd8dc89de4f503a9d918175cc1ad807b6cc4e806f1b4b25a21d2c9d"
+  }
 , { mapKey = "network-info"
   , mapValue =
       "da7ecb3441f98ff1d9b97adfc258349b16f25b2a3f4c2e4f6389f55d192760f3"
@@ -286,6 +314,10 @@
   , mapValue =
       "4d5928446ba7df3296ad731bdbc516d076a3a1ec2b4695a48ce98b484c47517b"
   }
+, { mapKey = "peano"
+  , mapValue =
+      "462daf2a23078bd8d63e8cda8fac21939d891bd7942bd10c02d4a6ef375c9f72"
+  }
 , { mapKey = "persistent"
   , mapValue =
       "60bab7738f0afad3fb918a441bd1c739ae22794635de34b01958cfcf1956d7cb"
@@ -546,6 +578,10 @@
   , mapValue =
       "f6afa2504b7fa1d25b113586496d43b754b170a1b1428b507adf8726009dbcf0"
   }
+, { mapKey = "vector-hashtables"
+  , mapValue =
+      "c1dc2dd654402717478e24c7c4b7428172904e9c12a68df726d497f7e85513ae"
+  }
 , { mapKey = "vinyl"
   , mapValue =
       "53c76db404409c08a1904c0b5e59004b4fc80fdabf29d775ea77d477074bb6f8"
diff --git a/overlay.nix b/overlay.nix
index c336eab64ae9a4e3a557a66fb15b0209ba9f3ed0..143b46514d293957c4c3814fef92be422997a6f5 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -2,6 +2,8 @@
 { pkgs, f ? (final: prev: n: v: v), ... }:
 
 final: prev: with pkgs.haskell.lib; {
+  Agda = f final prev "Agda" (final.callPackage (./pkgs/Agda.nix) { });
+
   HsOpenSSL = f final prev "HsOpenSSL" (final.callPackage (./pkgs/HsOpenSSL.nix) { });
 
   JuicyPixels = f final prev "JuicyPixels" (final.callPackage (./pkgs/JuicyPixels.nix) { });
@@ -10,6 +12,8 @@ final: prev: with pkgs.haskell.lib; {
 
   RSA = f final prev "RSA" (final.callPackage (./pkgs/RSA.nix) { });
 
+  STMonadTrans = f final prev "STMonadTrans" (final.callPackage (./pkgs/STMonadTrans.nix) { });
+
   authenticate-oauth = f final prev "authenticate-oauth" (final.callPackage (./pkgs/authenticate-oauth.nix) { });
 
   base64 = f final prev "base64" (final.callPackage (./pkgs/base64.nix) { });
@@ -18,6 +22,8 @@ final: prev: with pkgs.haskell.lib; {
 
   binary-orphans = f final prev "binary-orphans" (final.callPackage (./pkgs/binary-orphans.nix) { });
 
+  boxes = f final prev "boxes" (final.callPackage (./pkgs/boxes.nix) { });
+
   bytes = f final prev "bytes" (final.callPackage (./pkgs/bytes.nix) { });
 
   bytestring-lexing = f final prev "bytestring-lexing" (final.callPackage (./pkgs/bytestring-lexing.nix) { });
@@ -50,6 +56,8 @@ final: prev: with pkgs.haskell.lib; {
 
   data-binary-ieee754 = f final prev "data-binary-ieee754" (final.callPackage (./pkgs/data-binary-ieee754.nix) { });
 
+  data-hash = f final prev "data-hash" (final.callPackage (./pkgs/data-hash.nix) { });
+
   deepseq-generics = f final prev "deepseq-generics" (final.callPackage (./pkgs/deepseq-generics.nix) { });
 
   dense-linear-algebra = f final prev "dense-linear-algebra" (final.callPackage (./pkgs/dense-linear-algebra.nix) { });
@@ -66,6 +74,8 @@ final: prev: with pkgs.haskell.lib; {
 
   doctest = f final prev "doctest" (final.callPackage (./pkgs/doctest.nix) { });
 
+  equivalence = f final prev "equivalence" (final.callPackage (./pkgs/equivalence.nix) { });
+
   errors = f final prev "errors" (final.callPackage (./pkgs/errors.nix) { });
 
   extensible-effects = f final prev "extensible-effects" (final.callPackage (./pkgs/extensible-effects.nix) { });
@@ -76,6 +86,8 @@ final: prev: with pkgs.haskell.lib; {
 
   ghc-tcplugins-extra = f final prev "ghc-tcplugins-extra" (final.callPackage (./pkgs/ghc-tcplugins-extra.nix) { });
 
+  hashtables = f final prev "hashtables" (final.callPackage (./pkgs/hashtables.nix) { });
+
   haskell-src = f final prev "haskell-src" (final.callPackage (./pkgs/haskell-src.nix) { });
 
   hedis = f final prev "hedis" (final.callPackage (./pkgs/hedis.nix) { });
@@ -128,6 +140,8 @@ final: prev: with pkgs.haskell.lib; {
 
   monoidal-containers = f final prev "monoidal-containers" (final.callPackage (./pkgs/monoidal-containers.nix) { });
 
+  murmur-hash = f final prev "murmur-hash" (final.callPackage (./pkgs/murmur-hash.nix) { });
+
   network-info = f final prev "network-info" (final.callPackage (./pkgs/network-info.nix) { });
 
   newtype = f final prev "newtype" (final.callPackage (./pkgs/newtype.nix) { });
@@ -146,6 +160,8 @@ final: prev: with pkgs.haskell.lib; {
 
   path-pieces = f final prev "path-pieces" (final.callPackage (./pkgs/path-pieces.nix) { });
 
+  peano = f final prev "peano" (final.callPackage (./pkgs/peano.nix) { });
+
   persistent = f final prev "persistent" (final.callPackage (./pkgs/persistent.nix) { });
 
   persistent-postgresql = f final prev "persistent-postgresql" (final.callPackage (./pkgs/persistent-postgresql.nix) { });
@@ -276,6 +292,8 @@ final: prev: with pkgs.haskell.lib; {
 
   uuid = f final prev "uuid" (final.callPackage (./pkgs/uuid.nix) { });
 
+  vector-hashtables = f final prev "vector-hashtables" (final.callPackage (./pkgs/vector-hashtables.nix) { });
+
   vinyl = f final prev "vinyl" (final.callPackage (./pkgs/vinyl.nix) { });
 
   wai-app-static = f final prev "wai-app-static" (final.callPackage (./pkgs/wai-app-static.nix) { });
diff --git a/pkgs/Agda.nix b/pkgs/Agda.nix
new file mode 100644
index 0000000000000000000000000000000000000000..07e043df6114e6be1f606651c392bb56914a23a1
--- /dev/null
+++ b/pkgs/Agda.nix
@@ -0,0 +1,44 @@
+{ mkDerivation, Cabal, STMonadTrans, aeson, alex, ansi-terminal
+, array, async, base, binary, blaze-html, boxes, bytestring
+, case-insensitive, containers, data-hash, deepseq, directory
+, dlist, edit-distance, emacs, equivalence, exceptions, filepath
+, ghc-compact, gitrev, happy, hashable, haskeline, lib
+, monad-control, mtl, murmur-hash, parallel, peano, pretty, process
+, regex-tdfa, split, stm, strict, text, time, time-compat
+, transformers, unordered-containers, uri-encode, vector
+, vector-hashtables, zlib
+}:
+mkDerivation {
+  pname = "Agda";
+  version = "2.6.4.3";
+  sha256 = "74edc96ec57d43bc148b329c02f6b06c3c3c16e8e40802e735570b1424df03a2";
+  revision = "1";
+  editedCabalFile = "0z1zbj4gba5xqgrb3lz3fpmsv6mv8zyrhvl4338k8xc22m5ns1m8";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  setupHaskellDepends = [ base Cabal directory filepath process ];
+  libraryHaskellDepends = [
+    aeson ansi-terminal array async base binary blaze-html boxes
+    bytestring case-insensitive containers data-hash deepseq directory
+    dlist edit-distance equivalence exceptions filepath ghc-compact
+    gitrev hashable haskeline monad-control mtl murmur-hash parallel
+    peano pretty process regex-tdfa split stm STMonadTrans strict text
+    time time-compat transformers unordered-containers uri-encode
+    vector vector-hashtables zlib
+  ];
+  libraryToolDepends = [ alex happy ];
+  executableHaskellDepends = [ base directory filepath process ];
+  executableToolDepends = [ emacs ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://wiki.portal.chalmers.se/agda/";
+  description = "A dependently typed functional programming language and proof assistant";
+  license = lib.licenses.mit;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/STMonadTrans.nix b/pkgs/STMonadTrans.nix
new file mode 100644
index 0000000000000000000000000000000000000000..73d3587afda671f4622c381efbe8771e15271088
--- /dev/null
+++ b/pkgs/STMonadTrans.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, array, base, lib, mtl, tasty, tasty-hunit
+, tasty-quickcheck, transformers
+}:
+mkDerivation {
+  pname = "STMonadTrans";
+  version = "0.4.8";
+  sha256 = "839eff14d9f1d2d37f485edf116740d996e1ee9fa82ca2e0a73dfcae0ad5b851";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ array base mtl transformers ];
+  testHaskellDepends = [
+    array base tasty tasty-hunit tasty-quickcheck transformers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/josefs/STMonadTrans";
+  description = "A monad transformer version of the ST monad";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/boxes.nix b/pkgs/boxes.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f11ebee283a9633636178faf53a775ea1816efb8
--- /dev/null
+++ b/pkgs/boxes.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, QuickCheck, base, lib, split }:
+mkDerivation {
+  pname = "boxes";
+  version = "0.1.5";
+  sha256 = "38e1782e8a458f342a0acbb74af8f55cb120756bc3af7ee7220d955812af56c3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base split ];
+  testHaskellDepends = [ base QuickCheck split ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "2D text pretty-printing library";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/data-hash.nix b/pkgs/data-hash.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ed75aee2edb877ff27532f1db11eddf3961d6ea5
--- /dev/null
+++ b/pkgs/data-hash.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, QuickCheck, array, base, containers, lib
+, test-framework, test-framework-quickcheck2
+}:
+mkDerivation {
+  pname = "data-hash";
+  version = "0.2.0.1";
+  sha256 = "9117dd49013ca28ff188fc71c3595ac3af23d56d301c1f39bac93d44d8c60bbe";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ array base containers ];
+  testHaskellDepends = [
+    base QuickCheck test-framework test-framework-quickcheck2
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Combinators for building fast hashing functions";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/equivalence.nix b/pkgs/equivalence.nix
new file mode 100644
index 0000000000000000000000000000000000000000..366e345c625ed38770b5436f57a8f04a7306bf7a
--- /dev/null
+++ b/pkgs/equivalence.nix
@@ -0,0 +1,29 @@
+{ mkDerivation, QuickCheck, STMonadTrans, base, containers, lib
+, mtl, template-haskell, transformers, transformers-compat
+}:
+mkDerivation {
+  pname = "equivalence";
+  version = "0.4.1";
+  sha256 = "598ad6d9d914f598cea2e65cd92e44348a18380b9334d0d7a1c0a252e9a4008f";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base containers mtl STMonadTrans transformers transformers-compat
+  ];
+  testHaskellDepends = [
+    base containers mtl QuickCheck STMonadTrans template-haskell
+    transformers transformers-compat
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/pa-ba/equivalence";
+  description = "Maintaining an equivalence relation implemented as union-find using STT";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/hashtables.nix b/pkgs/hashtables.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ef0706672f1c680107af401cdfb4ae62d8886d8c
--- /dev/null
+++ b/pkgs/hashtables.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, HUnit, QuickCheck, base, ghc-prim, hashable, lib
+, mwc-random, primitive, test-framework, test-framework-hunit
+, test-framework-quickcheck2, vector
+}:
+mkDerivation {
+  pname = "hashtables";
+  version = "1.3.1";
+  sha256 = "6f3d40eb22ab87279b9a0bf51c22307706b240c90a664c82bfae2392268c59c3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base ghc-prim hashable primitive vector
+  ];
+  testHaskellDepends = [
+    base ghc-prim hashable HUnit mwc-random primitive QuickCheck
+    test-framework test-framework-hunit test-framework-quickcheck2
+    vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/gregorycollins/hashtables";
+  description = "Mutable hash tables in the ST monad";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/murmur-hash.nix b/pkgs/murmur-hash.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2ded816e5e2cc1cb22ac1ef27ae711909e13c39d
--- /dev/null
+++ b/pkgs/murmur-hash.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, base, bytestring, lib }:
+mkDerivation {
+  pname = "murmur-hash";
+  version = "0.1.0.10";
+  sha256 = "e92fad6000823aa2dabaa55096d2bc4fe21ad347f10614fc684da23e7f48bf90";
+  revision = "1";
+  editedCabalFile = "18wlx3hsba3kvpa1z95dz0xglr97lf62irlr6wg6i0613br58sh3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/nominolo/murmur-hash";
+  description = "MurmurHash2 implementation for Haskell";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/peano.nix b/pkgs/peano.nix
new file mode 100644
index 0000000000000000000000000000000000000000..34b0c8afce350242ba8afe5908daf0d30153fddb
--- /dev/null
+++ b/pkgs/peano.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib, tasty-bench }:
+mkDerivation {
+  pname = "peano";
+  version = "0.1.0.2";
+  sha256 = "8a8fe8718dba5b1a6133e1d9eae5ba69ca76028f59d088985a8489446ac74261";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  benchmarkHaskellDepends = [ base tasty-bench ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Peano numbers";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/vector-hashtables.nix b/pkgs/vector-hashtables.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bf2aae0e366b524cef1e4e97b1bdda09b58a5ca6
--- /dev/null
+++ b/pkgs/vector-hashtables.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, QuickCheck, base, containers, criterion, hashable
+, hashtables, hspec, hspec-discover, lib, primitive
+, quickcheck-instances, unordered-containers, vector
+}:
+mkDerivation {
+  pname = "vector-hashtables";
+  version = "0.1.2.0";
+  sha256 = "39a9aaf451cf9e6c299904dfb02f13afaffe151d553014c1da2f07e3481b0ce8";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base hashable primitive vector ];
+  testHaskellDepends = [
+    base containers hashable hspec primitive QuickCheck
+    quickcheck-instances vector
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    base criterion hashtables primitive unordered-containers vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/klapaucius/vector-hashtables#readme";
+  description = "Efficient vector-based mutable hashtables implementation";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file