diff --git a/horizon.dhall b/horizon.dhall
index a0bf145fa29f0a5ceb466bec87c833266476ec1f..999b2cb6de8d68dc99c1a60cfe50adf3bc297f6d 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -722,6 +722,7 @@ in  H.HorizonExport.MakePackageSet
           , H.callHackage "shakespeare" "2.0.30"
           , H.callHackage "shake" "0.19.6"
           , H.callHackage "shelly" "1.10.0"
+          , H.callHackage "shh" "0.7.2.0"
           , H.callHackage "should-not-typecheck" "2.1.0"
           , H.callHackage "silently" "1.2.5.3"
           , H.callHackage "simple-reflect" "0.3.3"
@@ -757,6 +758,7 @@ in  H.HorizonExport.MakePackageSet
           , H.callHackage "string-interpolate" "0.3.1.2"
           , H.callHackage "string-qq" "0.0.4"
           , H.callHackage "stringbuilder" "0.5.1"
+          , H.callHackage "stringsearch" "0.3.6.6"
           , H.callHackage "swagger2" "2.8.5"
           , H.callHackage "syb" "0.7.2.1"
           , H.callHackage "sydtest" "0.13.0.0"
diff --git a/initial-packages.nix b/initial-packages.nix
index 261916291d2831df09b79a219c7743b7bd8e8fb3..143c56703fbda65cf0b2bd7aab73e92be13f86fe 100644
--- a/initial-packages.nix
+++ b/initial-packages.nix
@@ -1145,6 +1145,8 @@ self: with pkgs.haskell.lib; {
 
   shelly = self.callPackage (./pkgs/shelly.nix) { };
 
+  shh = self.callPackage (./pkgs/shh.nix) { };
+
   should-not-typecheck = self.callPackage (./pkgs/should-not-typecheck.nix) { };
 
   silently = self.callPackage (./pkgs/silently.nix) { };
@@ -1215,6 +1217,8 @@ self: with pkgs.haskell.lib; {
 
   stringbuilder = self.callPackage (./pkgs/stringbuilder.nix) { };
 
+  stringsearch = self.callPackage (./pkgs/stringsearch.nix) { };
+
   swagger2 = self.callPackage (./pkgs/swagger2.nix) { };
 
   syb = self.callPackage (./pkgs/syb.nix) { };
diff --git a/pkgs/shh.nix b/pkgs/shh.nix
new file mode 100644
index 0000000000000000000000000000000000000000..84adf2b3cf3c1cdc4ca5f466fc1fbb3f8acee902
--- /dev/null
+++ b/pkgs/shh.nix
@@ -0,0 +1,81 @@
+{ mkDerivation
+, async
+, base
+, bytestring
+, containers
+, deepseq
+, directory
+, doctest
+, filepath
+, lib
+, markdown-unlit
+, mtl
+, process
+, split
+, stringsearch
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, temporary
+, unix
+, utf8-string
+}:
+mkDerivation {
+  pname = "shh";
+  version = "0.7.2.0";
+  sha256 = "9e04100e43696cd6457c7d9e93eae313e5a9176c36b6108f7d70f3d6efdc9265";
+  revision = "1";
+  editedCabalFile = "054bjhpkni3nr6zsilj77gdgb2yw5s1gzm257zz4kigpjjjndr0a";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    async
+    base
+    bytestring
+    containers
+    deepseq
+    directory
+    filepath
+    mtl
+    process
+    split
+    stringsearch
+    template-haskell
+    unix
+    utf8-string
+  ];
+  executableHaskellDepends = [
+    async
+    base
+    bytestring
+    deepseq
+    directory
+    temporary
+    unix
+  ];
+  testHaskellDepends = [
+    async
+    base
+    bytestring
+    directory
+    doctest
+    filepath
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    utf8-string
+  ];
+  testToolDepends = [ markdown-unlit ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Simple shell scripting from Haskell";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/stringsearch.nix b/pkgs/stringsearch.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8dc0f53710ae77ac340ecab1d75d0f0f77abb604
--- /dev/null
+++ b/pkgs/stringsearch.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, array, base, bytestring, containers, lib }:
+mkDerivation {
+  pname = "stringsearch";
+  version = "0.3.6.6";
+  sha256 = "295f1971920bc52263d8275d7054ad223a7e1aefe75533f9887735c9644ffe4a";
+  revision = "1";
+  editedCabalFile = "0z5pz5dccapz9k39r2zmf056m0x2m2lj3jahhnw3mfxlmps07378";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ array base bytestring containers ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://bitbucket.org/dafis/stringsearch";
+  description = "Fast searching, splitting and replacing of ByteStrings";
+  license = lib.licenses.bsd3;
+  broken = false;
+}