diff --git a/run-tests.sh b/run-tests.sh
index 25e66d3b9..971cc93dc 100755
--- a/run-tests.sh
+++ b/run-tests.sh
@@ -3,7 +3,9 @@
 export DEVICE=${DEVICE-qemu}
 export TMPDIR=${TMPDIR-/tmp}
 
+NIX_PATH=liminix=`pwd`:$NIX_PATH
+
 for i in tests/*/run.sh; do
     echo $i
-    $i $* || exit 1
+    (cd `dirname $i`; ./`basename $i` $* ) || exit 1
 done
diff --git a/tests/kernel/run.sh b/tests/kernel/run.sh
index 74f861c92..694a86c7d 100755
--- a/tests/kernel/run.sh
+++ b/tests/kernel/run.sh
@@ -1,5 +1,5 @@
 set -e
-NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build  -I liminix-config=./tests/smoke/configuration.nix --arg device "import ./devices/$DEVICE.nix" -A outputs.kernel.vmlinux -o vmlinux $*
+NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=../smoke/configuration.nix --arg device "import <liminix/devices/$DEVICE.nix>" -A outputs.kernel.vmlinux -o vmlinux $*
 
 TESTS=$(cat <<"EOF"
 
diff --git a/tests/pseudofiles/run.sh b/tests/pseudofiles/run.sh
index 088c407ea..6e515ad65 100755
--- a/tests/pseudofiles/run.sh
+++ b/tests/pseudofiles/run.sh
@@ -2,16 +2,16 @@ set -e
 
 expr=$(cat <<"EXPR"
 let
-  overlay = import ./overlay.nix;
-  nixpkgs = import <nixpkgs> (  {overlays = [overlay]; });
-  structure = import ./tests/pseudofiles/structure.nix;
+  overlay = import <liminix/overlay.nix>;
+  nixpkgs = import <nixpkgs> { overlays = [overlay]; };
+  structure = import ./structure.nix;
 in nixpkgs.pkgs.pseudofile "pseudo.s6-init" structure
 EXPR
-       )
+    )
 
-NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build -E "${expr}" -o tests/pseudofiles/result $*
-diff tests/pseudofiles/result tests/pseudofiles/result.expected
+NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build -E "${expr}" -o result $*
+diff result result.expected
 test -f  /tmp/out.squashfs && rm /tmp/out.squashfs
-nix-shell -p squashfsTools -p qprint --run "mksquashfs - /tmp/out.squashfs -p '/ d 755 0 0' -pf tests/pseudofiles/result -quiet -no-progress"
+nix-shell -p squashfsTools -p qprint --run "mksquashfs - /tmp/out.squashfs -p '/ d 755 0 0' -pf result -quiet -no-progress"
 foo="$(nix-shell -p squashfsTools --run 'unsquashfs -cat /tmp/out.squashfs service/s6-linux-init-runleveld/run')"
 test "$foo" = "$(printf "hello\nworld")"
diff --git a/tests/smoke/run.sh b/tests/smoke/run.sh
index 42fa2bb52..29f954a13 100755
--- a/tests/smoke/run.sh
+++ b/tests/smoke/run.sh
@@ -1,14 +1,14 @@
 set -e
-NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build  -I liminix-config=./tests/smoke/configuration.nix --arg device "import ./devices/$DEVICE.nix" -o smoke.img
+NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/$DEVICE.nix>" -A outputs.squashfs -o smoke.img $*
 
 TESTS=$(cat <<"EOF"
 
 trap 'echo "command $(eval echo $BASH_COMMAND) failed with exit code $?"; exit $?' ERR
 dest_path=${TMPDIR}/smoke.img-$$
 echo $dest_path
-unsquashfs -q -d $dest_path smoke.img
+unsquashfs -q -d $dest_path -excludes smoke.img  /dev
 cd $dest_path;
-db=*-s6-rc-db/compiled/
+db=nix/store/*-s6-rc-db/compiled/
 test -d $db
 chmod -R +w $db
 # check we have closure of config.services (lo.link.service exists only