diff --git a/pkgs/min-copy-closure/default.nix b/pkgs/min-copy-closure/default.nix
index ec7717712..f0dcf6ba9 100644
--- a/pkgs/min-copy-closure/default.nix
+++ b/pkgs/min-copy-closure/default.nix
@@ -11,5 +11,6 @@
   installPhase = ''
     mkdir -p $out/bin
     cp min-copy-closure.sh $out/bin/min-copy-closure
+    cp liminix-rebuild.sh $out/bin/liminix-rebuild
   '';
 }
diff --git a/pkgs/min-copy-closure/liminix-rebuild.sh b/pkgs/min-copy-closure/liminix-rebuild.sh
new file mode 100755
index 000000000..e1544fdab
--- /dev/null
+++ b/pkgs/min-copy-closure/liminix-rebuild.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+target_host=$1
+shift
+
+if [ -z "$target_host" ] ; then
+    echo Usage: liminix-rebuild target-host params
+    exit 1
+fi
+
+toplevel=$(nix-build "$@" -A outputs.systemConfiguration --no-out-link)
+min-copy-closure $target_host $toplevel
+ssh $target_host cp -P $toplevel/bin/\* /
+ssh $target_host reboot
diff --git a/pkgs/systemconfig/default.nix b/pkgs/systemconfig/default.nix
index 8b40af0d3..a162e5f3a 100644
--- a/pkgs/systemconfig/default.nix
+++ b/pkgs/systemconfig/default.nix
@@ -7,6 +7,7 @@
 {
   writeText
 , lib
+, s6-init-bin
 , stdenv
 }:
 let
@@ -74,5 +75,6 @@ in attrset:
     installPhase = ''
       mkdir -p $out/bin
       $STRIP --remove-section=.note  --remove-section=.comment --strip-all makedevs -o $out/bin/activate
+      ln -s ${s6-init-bin}/bin/init $out/bin/init
     '';
   }