diff --git a/flake.lock b/flake.lock
index d56d9f58a116de99943bce5ce38958f760454de6..ad26c08a22b1e1c7866c2ae7c52d94972eba60d3 100644
--- a/flake.lock
+++ b/flake.lock
@@ -358,11 +358,11 @@
         "pre-commit-hooks": "pre-commit-hooks"
       },
       "locked": {
-        "lastModified": 1692187439,
-        "narHash": "sha256-m7c4EPFWmB1OmV3dSYQk2qtXR53xOjZdLCjMtzHSK34=",
+        "lastModified": 1696872058,
+        "narHash": "sha256-QCfoTnGtUABi5KbWXrTh4fhvLGP5B0gAG6KU1ACd96s=",
         "ref": "main",
-        "rev": "408f3deab2e2f6ae60349776dde02c44f71fb386",
-        "revCount": 16,
+        "rev": "683abab784ee38ea61863b3594d3777345f420d6",
+        "revCount": 20,
         "type": "git",
         "url": "https://whetstone.private.storage/jcalderone/hs-flake-utils.git"
       },
@@ -867,16 +867,16 @@
         ]
       },
       "locked": {
-        "lastModified": 1683552888,
-        "narHash": "sha256-h9pgP/LYPtUr5CeCAhqt1XJyAqKTnkQxuIygiTulU/U=",
-        "ref": "refs/tags/0.1.0.1",
-        "rev": "05aeb5a433b85406ca3c0c313c46299a1026ade0",
-        "revCount": 344,
+        "lastModified": 1696262854,
+        "narHash": "sha256-0/6VEsjXe7EvYY2BnkWkmHCVzdp1WcFLjx5mvHDMLnM=",
+        "ref": "refs/tags/0.2.0.0",
+        "rev": "42ae52257ec6e6d8eaa9a56662ca5edfbce8074b",
+        "revCount": 487,
         "type": "git",
         "url": "https://whetstone.private.storage/PrivateStorage/tahoe-chk"
       },
       "original": {
-        "ref": "refs/tags/0.1.0.1",
+        "ref": "refs/tags/0.2.0.0",
         "type": "git",
         "url": "https://whetstone.private.storage/PrivateStorage/tahoe-chk"
       }
@@ -895,16 +895,16 @@
         ]
       },
       "locked": {
-        "lastModified": 1692193506,
-        "narHash": "sha256-0UDrh4ZcBHU+4yrLfVe+9wkYF4K1QJoecdOI083Gu5w=",
-        "ref": "refs/tags/0.2.1.0",
-        "rev": "96941786b56e9fb949d62a14bacd5ed2c81cd7ab",
-        "revCount": 112,
+        "lastModified": 1696941203,
+        "narHash": "sha256-y+Clh8ZZ/sgsPS8BoJUAN0IJyeNsXZu1l7huqFqHc7U=",
+        "ref": "refs/tags/0.3.0.0",
+        "rev": "b7fb49307c96e9c508e01982ef19e857deb55fb8",
+        "revCount": 122,
         "type": "git",
         "url": "https://whetstone.private.storage/PrivateStorage/tahoe-ssk"
       },
       "original": {
-        "ref": "refs/tags/0.2.1.0",
+        "ref": "refs/tags/0.3.0.0",
         "type": "git",
         "url": "https://whetstone.private.storage/PrivateStorage/tahoe-ssk"
       }
diff --git a/flake.nix b/flake.nix
index 8e000e3b2243265f13609186390f0b0996f73a3c..36cdd0fe3aadff905b0652d6c36a3fd6fa8ebc18 100644
--- a/flake.nix
+++ b/flake.nix
@@ -7,11 +7,11 @@
     hs-flake-utils.url = "git+https://whetstone.private.storage/jcalderone/hs-flake-utils.git?ref=main";
     nixpkgs.follows = "hs-flake-utils/nixpkgs";
     tahoe-chk = {
-      url = "git+https://whetstone.private.storage/PrivateStorage/tahoe-chk?ref=refs/tags/0.1.0.1";
+      url = "git+https://whetstone.private.storage/PrivateStorage/tahoe-chk?ref=refs/tags/0.2.0.0";
       inputs.nixpkgs.follows = "hs-flake-utils/nixpkgs";
     };
     tahoe-ssk = {
-      url = "git+https://whetstone.private.storage/PrivateStorage/tahoe-ssk?ref=refs/tags/0.2.1.0";
+      url = "git+https://whetstone.private.storage/PrivateStorage/tahoe-ssk?ref=refs/tags/0.3.0.0";
       inputs.nixpkgs.follows = "hs-flake-utils/nixpkgs";
       inputs.tahoe-chk.follows = "tahoe-chk";
     };
@@ -54,7 +54,7 @@
       checks = hslib.checks {};
       devShells = hslib.devShells {
         shellHook = ''
-          nix run .#generate-cabal-project
+          nix run .#write-cabal-project
         '';
         extraBuildInputs = pkgs:
           with pkgs; [
@@ -64,27 +64,18 @@
       packages = hslib.packages {};
       apps.hlint = hslib.apps.hlint {};
 
-      apps.generate-cabal-project = {
-        type = "app";
-        program = "${
-          pkgs.writeShellApplication {
-            name = "generate-cabal-project";
-            text = ''
-              cat >cabal.project.local <<EOF
-              -- This file is auto-generated by the flake devShell's shellHook.  Do
-              -- not edit this file.  Make changes in flake.nix.
-              tests: true
-              EOF
-            '';
-          }
-        }/bin/generate-cabal-project";
+      apps.write-cabal-project = hslib.apps.write-cabal-project {
+        localPackages = {
+          "tahoe-chk" = tahoe-chk.sourceInfo.outPath;
+          "tahoe-ssk" = tahoe-ssk.sourceInfo.outPath;
+        };
       };
 
       # Using the working directory of `nix run`, do a build with cabal and
       # then run the test suite.
       apps.cabal-test = hslib.apps.cabal-test {
         preBuild = ''
-          nix run .#generate-cabal-project
+          nix run .#write-cabal-project
         '';
       };
 
diff --git a/tahoe-directory.cabal b/tahoe-directory.cabal
index e867a288c4a43be2b2a1ccb67df7983b545dedf9..54c28baa918a8dbd0d78872311a63bba0227ec9d 100644
--- a/tahoe-directory.cabal
+++ b/tahoe-directory.cabal
@@ -101,8 +101,8 @@ library
     , bytestring          >=0.10.8.2 && <0.11
     , megaparsec          >=8.0      && <9.3
     , tahoe-capabilities  >=0.1      && <0.2
-    , tahoe-chk           >=0.1      && <0.2
-    , tahoe-ssk           >=0.2.1.0  && <0.3
+    , tahoe-chk           >=0.1      && <0.3
+    , tahoe-ssk           >=0.2.1.0  && <0.4
     , text                >=1.2.3.1  && <1.3
 
 test-suite tahoe-directory-test