diff --git a/common/puter/puter.bash b/common/puter/puter.bash index 48ddc6f..7cc4076 100644 --- a/common/puter/puter.bash +++ b/common/puter/puter.bash @@ -8,7 +8,7 @@ progname=$0 error() { for line in "$@"; do - printf '%s\n' "$progname: $line" 1>&2 + echo "$progname: $line" 1>&2 done exit 1 @@ -18,7 +18,7 @@ args=$(getopt --options f:o:t: --longoptions=flake:,on:,to: --name "$progname" - eval set -- "$args" -flake=git+https://forgejo@tea.wrz.one/lukas/puter.git#$(hostname) +host=localhost flags=( --refresh --use-remote-sudo @@ -35,7 +35,8 @@ while true; do shift 2 ;; (-t | --to) - flags+=(--target-host "$2") + host=$2 + flags+=(--target-host "$host") shift 2 ;; (-v | --verbose) @@ -49,13 +50,21 @@ while true; do esac done +if [[ ! -v flake ]]; then + flake=git+https://forgejo@tea.wrz.one/lukas/puter.git#$(ssh -- "$host" hostname) +fi + +flags+=(--flake "$flake") + if (( $# == 0 )); then error 'a subcommand is required' fi -subcommand=$1 +sub=$1 -case $subcommand in +cmd=(nixos-rebuild "${flags[@]}") + +case $sub in (s | switch) shift @@ -63,7 +72,9 @@ case $subcommand in error 'too many arguments' fi - nixos-rebuild switch "${flags[@]}" --flake "$flake" + cmd+=(switch) + echo "${cmd[@]}" + "${cmd[@]}" ;; (b | boot) shift @@ -72,7 +83,9 @@ case $subcommand in error 'too many arguments' fi - nixos-rebuild boot "${flags[@]}" --flake "$flake" + cmd+=(boot) + echo "${cmd[@]}" + "${cmd[@]}" ;; (*) error 'invalid subcommand'