summaryrefslogtreecommitdiffstats
path: root/bin/ssh-deploy
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ssh-deploy')
-rwxr-xr-xbin/ssh-deploy26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/ssh-deploy b/bin/ssh-deploy
new file mode 100755
index 000000000..fe50677df
--- /dev/null
+++ b/bin/ssh-deploy
@@ -0,0 +1,26 @@
+#! /bin/sh
+# ssh-deploy : nixos-config x [user@]hostname -> ()
+set -xeuf
+
+main=$1
+target=$2
+nixpkgs_dir=/var/nixpkgs # TODO make configurable
+
+git_url=$(nixpkgs-url $main)
+git_rev=$(nixpkgs-rev $main)
+
+if [ "$git_url" = '' ] || [ "$git_rev" = '' ]; then
+ echo "specify nixpkgs.url and nixpkgs.rev in $main !"
+ exit 23
+fi
+
+filter=$(make-rsync-filter "$main")
+
+echo "$filter" \
+ | rsync -f '. -' -zvrlptD --delete-excluded ./ "$target":/etc/nixos/
+
+ssh-fetch-git "$target" "$nixpkgs_dir" "$git_url" "$git_rev"
+ssh "$target" nixos-rebuild switch \
+ -I nixos-config=/etc/nixos/"$main" \
+ -I nixpkgs="$nixpkgs_dir" \
+ -I secrets=/etc/nixos/secrets \