diff --git a/manifest.dhall b/manifest.dhall
index dfbdd71b39da849c3b4dff2cedbcb6d37ff8f534..109e4141fc8e7df18fb6bd05b36feae208fbb52e 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -224,6 +224,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "dhall" "1.41.2"
     , callHackage "dhall-json" "1.7.11"
     , callHackage "dimensional" "1.5"
+    , callHackage "direct-sqlite" "2.3.27"
     , callCabal2nix
         "dirforest"
         "https://github.com/NorfairKing/dirforest"
diff --git a/overlay.nix b/overlay.nix
index 0cbbdfe556cb0b3f77800ea14624302933d8ed8b..ee36fcae62dded29eda36f18c93a38ac492a5407 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -301,6 +301,8 @@ self: with pkgs.haskell.lib; {
 
   dimensional = self.callPackage (./pkgs/dimensional.nix) { };
 
+  direct-sqlite = self.callPackage (./pkgs/direct-sqlite.nix) { };
+
   dirforest = self.callPackage (./pkgs/dirforest.nix) { };
 
   distribution-nixpkgs = self.callPackage (./pkgs/distribution-nixpkgs.nix) { };
diff --git a/pkgs/direct-sqlite.nix b/pkgs/direct-sqlite.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ed8afdf142faed132a5b8c0aac1cfd7a29d5e306
--- /dev/null
+++ b/pkgs/direct-sqlite.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, base16-bytestring
+, bytestring
+, directory
+, HUnit
+, lib
+, temporary
+, text
+}:
+mkDerivation {
+  pname = "direct-sqlite";
+  version = "2.3.27";
+  sha256 = "0319dd780712859fcacf0b8f1401088f76af3b651c7ec366e0231c15e73bd82e";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring text ];
+  testHaskellDepends = [
+    base
+    base16-bytestring
+    bytestring
+    directory
+    HUnit
+    temporary
+    text
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/IreneKnapp/direct-sqlite";
+  description = "Low-level binding to SQLite3. Includes UTF8 and BLOB support.";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/saltine.nix b/pkgs/saltine.nix
index f66679bb5d619e939522ecd1e21a5c4b6a887d8e..76fe94a083fb92e271583538e01aaa5c7acfc270 100644
--- a/pkgs/saltine.nix
+++ b/pkgs/saltine.nix
@@ -1,6 +1,17 @@
-{ mkDerivation, base, bytestring, criterion, deepseq, hashable, lib
-, libsodium, profunctors, QuickCheck, semigroups, test-framework
-, test-framework-quickcheck2, text
+{ mkDerivation
+, base
+, bytestring
+, criterion
+, deepseq
+, hashable
+, lib
+, libsodium
+, profunctors
+, QuickCheck
+, semigroups
+, test-framework
+, test-framework-quickcheck2
+, text
 }:
 mkDerivation {
   pname = "saltine";
@@ -10,15 +21,29 @@ mkDerivation {
   isExecutable = false;
   enableSeparateDataOutput = false;
   libraryHaskellDepends = [
-    base bytestring deepseq hashable profunctors text
+    base
+    bytestring
+    deepseq
+    hashable
+    profunctors
+    text
   ];
   libraryPkgconfigDepends = [ libsodium ];
   testHaskellDepends = [
-    base bytestring QuickCheck semigroups test-framework
-    test-framework-quickcheck2 text
+    base
+    bytestring
+    QuickCheck
+    semigroups
+    test-framework
+    test-framework-quickcheck2
+    text
   ];
   benchmarkHaskellDepends = [
-    base bytestring criterion deepseq text
+    base
+    bytestring
+    criterion
+    deepseq
+    text
   ];
   benchmarkSystemDepends = [ libsodium ];
   enableLibraryProfiling = false;
@@ -31,4 +56,4 @@ mkDerivation {
   description = "Cryptography that's easy to digest (NaCl/libsodium bindings)";
   license = lib.licenses.mit;
   broken = false;
-}
\ No newline at end of file
+}