commit e5cbc2b86b980f71416015491ffc5c266283850d
parent 29f35cb902c51515f8175c7ace191e73507a809d
Author: Daniel Barlow <dan@telent.net>
Date: Sat, 23 Dec 2023 23:53:47 +0000
WIP add systemConfiguration "install" command
which copies the init stuff (whatever it is) from store to /persist
instead of making liminix-rebuild have to know what the files are.
This is principally to ease making a system configuration in /mnt or
similar when operating in a rescue/recovery scenario, and we
don't want to liminix-rebuild because it will reboot
Diffstat:
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/pkgs/min-copy-closure/liminix-rebuild.sh b/pkgs/min-copy-closure/liminix-rebuild.sh
@@ -12,7 +12,7 @@ fi
if toplevel=$(nix-build "$@" -A outputs.systemConfiguration --no-out-link); then
echo systemConfiguration $toplevel
min-copy-closure $target_host $toplevel
- $ssh_command $target_host cp -v -fP $toplevel/bin/* $toplevel/etc/* /persist
+ $ssh_command $target_host $toplevel/bin/install
$ssh_command $target_host "sync; source /etc/profile; reboot"
else
echo Rebuild failed
diff --git a/pkgs/systemconfig/default.nix b/pkgs/systemconfig/default.nix
@@ -80,5 +80,10 @@ in attrset:
cp $closure/store-paths $out/etc/nix-store-paths
$STRIP --remove-section=.note --remove-section=.comment --strip-all makedevs -o $out/bin/activate
ln -s ${s6-init-bin}/bin/init $out/bin/init
+ cat > $out/bin/install <<EOF
+ #!/bin/sh
+ cp -v -fP $out/bin/* $out/etc/* \''${1-/}/persist
+ EOF
+ chmod +x $out/bin/install
'';
}