diff --git a/src/_zkapauthorizer/tests/test_plugin.py b/src/_zkapauthorizer/tests/test_plugin.py
index 0db1a375d2ffe5c1c7143920909f4a346f6791c5..5de8f4121bcbca70f1c1719080fbfdd70dc90093 100644
--- a/src/_zkapauthorizer/tests/test_plugin.py
+++ b/src/_zkapauthorizer/tests/test_plugin.py
@@ -20,8 +20,8 @@ from __future__ import (
     absolute_import,
 )
 
-from io import (
-    BytesIO,
+from StringIO import (
+    StringIO,
 )
 from os import (
     makedirs,
@@ -397,7 +397,17 @@ class ClientPluginTests(TestCase):
             b"tub.port",
             config_text.encode("utf-8"),
         )
-        config_text = BytesIO()
+        # On Tahoe-LAFS <1.16, the config is written as bytes.
+        # On Tahoe-LAFS >=1.16, the config is written as unicode.
+        #
+        # So we'll use `StringIO.StringIO` (not `io.StringIO`) here - which
+        # will allow either type (it will also implicitly decode bytes to
+        # unicode if we mix them, though I don't think that should happen
+        # here).
+        #
+        # After support for Tahoe <1.16 support is dropped we probably want to
+        # switch to an io.StringIO here.
+        config_text = StringIO()
         node_config.config.write(config_text)
         self.addDetail(u"config", text_content(config_text.getvalue()))
         self.addDetail(u"announcement", text_content(unicode(announcement)))
diff --git a/zkapauthorizer.nix b/zkapauthorizer.nix
index 89639e0d41ec84db5811503dd150f9c33250d0a3..484c364166b2179a50e47e97acc468600949755e 100644
--- a/zkapauthorizer.nix
+++ b/zkapauthorizer.nix
@@ -34,15 +34,17 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    attrs
-    zope_interface
     aniso8601
-    # Inherit eliot from tahoe-lafs
-    # eliot
-    twisted
     tahoe-lafs
     challenge-bypass-ristretto
-    treq
+
+    # Inherit some things from tahoe-lafs to avoid conflicting versions
+    #
+    # attrs
+    # zope_interface
+    # twisted
+    # eliot
+    # treq
   ];
 
   checkInputs = [