Init repo
This commit is contained in:
86
bij.sh
Executable file
86
bij.sh
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
FLAKE=
|
||||
TARGET=
|
||||
|
||||
ARGS=()
|
||||
OPTS=()
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--flake)
|
||||
FLAKE="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--target)
|
||||
TARGET="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
OPTS=( "$@" )
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
echo "unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
ARGS+=("$1")
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
set -- "${ARGS[@]}"
|
||||
|
||||
if [[ -z ${FLAKE} ]]; then
|
||||
# Flake not specified, use working directory
|
||||
FLAKE="$(pwd)"
|
||||
fi
|
||||
|
||||
if [[ "${#ARGS[@]}" -lt 1 ]]; then
|
||||
echo "Command not specified"
|
||||
exit 1
|
||||
fi
|
||||
COMMAND="${ARGS[0]}"
|
||||
|
||||
if [[ "${COMMAND}" != "apply" && "${COMMAND}" != "build" && "${COMMAND}" != "exec" ]]; then
|
||||
echo "Unsupported command: ${COMMAND}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${#ARGS[1]}" -lt 2 ]]; then
|
||||
echo "Host not specified"
|
||||
exit 1
|
||||
fi
|
||||
HOST="${ARGS[1]}"
|
||||
|
||||
if [[ -z ${TARGET} ]]; then
|
||||
# Use fqdn as target
|
||||
TARGET="$(nix --extra-experimental-features "nix-command flakes" eval --raw "${FLAKE}#nixosConfigurations.${HOST}" --apply "host: host.config.networking.fqdn")"
|
||||
fi
|
||||
|
||||
case "${COMMAND}" in
|
||||
apply)
|
||||
nixos-rebuild switch --flake "${FLAKE}#${HOST}" --target-host "${TARGET}" --use-substitutes --use-remote-sudo
|
||||
;;
|
||||
build)
|
||||
nixos-rebuild build --flake "${FLAKE}#${HOST}"
|
||||
;;
|
||||
exec)
|
||||
# shellcheck disable=SC2029
|
||||
ssh -t "${TARGET}" "${OPTS[@]}"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported command: ${COMMAND}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user