diff --git a/layers/zsh.nix b/layers/zsh.nix
index 7bfc5394bae43f16a32af593574bf1246e5adb2c..30f07a44a4611bc19b2054ea0e0e54e97f00e9ed 100644
--- a/layers/zsh.nix
+++ b/layers/zsh.nix
@@ -332,5 +332,15 @@ in
         builtin cd "$@"
       fi
     }
+
+    tmp () (
+      readonly tmpdir=$(mktemp -d ''${1:-})
+      [[ -z $tmpdir ]] && exit 1
+      TRAPEXIT() {
+        rm -rf $tmpdir
+      }
+      cd $tmpdir
+      zsh -is
+    )
   '';
 }