diff --git a/shell.nix b/shell.nix
index 023fc1bdb969c66f6b0d8da9d0c3b638396b96f1..9388b7353038ee1c1311a1a9d40027d7d4419692 100644
--- a/shell.nix
+++ b/shell.nix
@@ -2,13 +2,55 @@
 # work on Nix 2.3.  It works with Nix 2.5.  I'm not sure about 2.4.
 { ... }@args:
 let
-  tests = import ./tests.nix args;
-  inherit (tests) pkgs;
+  privatestorage = import ./. args;
+  inherit (privatestorage) pkgs mach-nix tahoe-lafs zkapauthorizer;
+
+  pythonVersion = zkapauthorizer.meta.mach-nix.python;
+
+  python = mach-nix.mkPython {
+    inherit (zkapauthorizer.meta.mach-nix) providers;
+    python = pythonVersion;
+    overridesPre = [
+      (
+        self: super: {
+          inherit tahoe-lafs;
+        }
+      )
+    ];
+
+    requirements = let
+      py3 = pythonVersion > "python3";
+      lint = pkgs.lib.optionalString (builtins.trace py3 py3) ''
+# lint
+black
+isort
+flake8
+'';
+      workarounds = ''
+# Mitigate for undetected cryptography dependency
+setuptools_rust
+# And for tomli
+flit_core
+'';
+      testing = ''
+coverage
+fixtures
+testtools
+hypothesis
+'';
+    in
+      ''
+${lint}
+${workarounds}
+${testing}
+${zkapauthorizer.requirements}
+'';
+  };
 in
 pkgs.mkShell {
+  PYTHONDONTWRITEBYTECODE = "1";
+
   buildInputs = [
-    tests.python
-    tests.lint-python
-    pkgs.niv
+    python
   ];
 }