25 lines
684 B
Bash
Executable File
25 lines
684 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
FLAKE_DIR="/home/john/.config/home-manager/jsl-dendritic"
|
|
|
|
is_in_array() {
|
|
local needle="$1"
|
|
shift
|
|
local arr=("$@")
|
|
[[ " ${arr[*]} " == *" ${needle} "* ]] && echo true || echo false
|
|
}
|
|
|
|
hostname_exists() {
|
|
NIX_EVAL_CMD="nix eval --json --no-warn-dirty --apply builtins.attrNames"
|
|
mapfile -t HOME_CONFIGS < <(${NIX_EVAL_CMD} ${FLAKE_DIR}#homeConfigurations | jq -r '.[]')
|
|
is_in_array "$(hostname)" "${HOME_CONFIGS[@]}"
|
|
}
|
|
|
|
HOSTNAME=$(hostname)
|
|
if [[ "$(hostname_exists)" == "true" ]]; then
|
|
home-manager switch --flake "${FLAKE_DIR}#${HOSTNAME}"
|
|
else
|
|
echo "No homeConfiguration found for hostname '${HOSTNAME}'." >&2
|
|
exit 1
|
|
fi
|