diff --git a/modules/base.nix b/modules/base.nix
index 99c68a6e..7ac3a773 100644
--- a/modules/base.nix
+++ b/modules/base.nix
@@ -1,6 +1,8 @@
-{ lib, ...}:
+{ lib, pkgs, ...}:
 let
   inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
+  inherit (pkgs.pseudofile) dir symlink;
+
   type_service = types.package // {
     name = "service";
     description = "s6-rc service";
diff --git a/pkgs/pseudofile/default.nix b/pkgs/pseudofile/default.nix
index 52d6821d..bb775f8b 100644
--- a/pkgs/pseudofile/default.nix
+++ b/pkgs/pseudofile/default.nix
@@ -2,9 +2,7 @@
   writeText
 , lib
 }:
-filename  : attrset :
 let
-  inherit (lib.debug) traceSeqN;
   inherit (lib.attrsets) mapAttrsToList;
   visit = prefix: attrset:
     let
@@ -33,5 +31,8 @@ let
                 line)
           attrset;
     in builtins.concatStringsSep "\n" l;
-  res =  (visit "" attrset);
-in writeText filename res
+in {
+  write = filename : attrset : writeText filename (visit "" attrset);
+  dir = contents: { type = "d"; inherit contents; };
+  symlink = target: { type = "s"; inherit target; };
+}
diff --git a/pkgs/s6-init-files/default.nix b/pkgs/s6-init-files/default.nix
index f4ac72d3..0108e12f 100644
--- a/pkgs/s6-init-files/default.nix
+++ b/pkgs/s6-init-files/default.nix
@@ -21,8 +21,7 @@ let
       patchShebangs $out/scripts
     '';
   };
-  dir = contents: { type = "d"; inherit contents; };
-  symlink = target: { type = "s"; inherit target; };
+  inherit (pseudofile) dir symlink;
   scripts = symlink "${initscripts}/scripts";
   env = dir {};
   run-image = dir {
@@ -141,4 +140,4 @@ let
     inherit scripts env run-image;
   };};};};
 
-in pseudofile "pseudo.s6-init" structure
+in pseudofile.write "pseudo.s6-init" structure
diff --git a/tests/pseudofiles/run.sh b/tests/pseudofiles/run.sh
index 6e515ad6..81f407ee 100755
--- a/tests/pseudofiles/run.sh
+++ b/tests/pseudofiles/run.sh
@@ -4,8 +4,7 @@ expr=$(cat <<"EXPR"
 let
   overlay = import <liminix/overlay.nix>;
   nixpkgs = import <nixpkgs> { overlays = [overlay]; };
-  structure = import ./structure.nix;
-in nixpkgs.pkgs.pseudofile "pseudo.s6-init" structure
+in nixpkgs.pkgs.callPackage ./test.nix {}
 EXPR
     )
 
diff --git a/tests/pseudofiles/structure.nix b/tests/pseudofiles/test.nix
similarity index 90%
rename from tests/pseudofiles/structure.nix
rename to tests/pseudofiles/test.nix
index a762aa0e..043b23d0 100644
--- a/tests/pseudofiles/structure.nix
+++ b/tests/pseudofiles/test.nix
@@ -1,5 +1,7 @@
-let
-  dir = contents: { type = "d"; inherit contents; };
+{
+  pseudofile
+}: let
+  inherit (pseudofile) dir;
   structure = {
     service = dir {
       s6-linux-init-runleveld = dir {
@@ -42,4 +44,4 @@ let
     };
     uncaught-logs = (dir {}) // {mode = "2750";};
   };
-in structure
+in pseudofile.write "pseudo.s6-init" structure