27 lines
651 B
Bash
Executable File
27 lines
651 B
Bash
Executable File
#! /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 \
|