Luigit
repositories / bugabinga.net

bugabinga.net

personal infrastructure for bugabinga!

owned by admin

services/toad/deploy/start.sh

Raw
#!/usr/bin/env bash
set -euo pipefail

user=toad
home_dir=/home/toad
uid="$(id -u "${user}")"
runtime="/run/user/${uid}"
quadlet_dir="${home_dir}/.config/containers/systemd"
enrollment=/data/toad/enrollment.json
gateway_config=/data/toad/gateway.Caddyfile
ingress_env=/data/toad/ingress.env
theme_css=/data/toad/nugu.css

for required in \
  "${quadlet_dir}/toad.container" \
  "${quadlet_dir}/toad-ingress.container" \
  "${quadlet_dir}/toad.network" \
  "${enrollment}" \
  "${gateway_config}" \
  "${ingress_env}" \
  "${theme_css}"; do
  [[ -f "${required}" ]] || {
    echo "missing toad deployment file: ${required}" >&2
    exit 1
  }
done
chown "${user}:${user}" \
  "${quadlet_dir}/toad.container" \
  "${quadlet_dir}/toad-ingress.container" \
  "${quadlet_dir}/toad.network" \
  "${enrollment}" \
  "${gateway_config}" \
  "${ingress_env}" \
  "${theme_css}"
chmod 0640 \
  "${quadlet_dir}/toad.container" \
  "${quadlet_dir}/toad-ingress.container" \
  "${quadlet_dir}/toad.network" \
  "${enrollment}" \
  "${gateway_config}" \
  "${ingress_env}" \
  "${theme_css}"
restorecon -F "${gateway_config}" "${ingress_env}"

cd "${home_dir}"

run_toad() {
  runuser -u "${user}" -- env \
    HOME="${home_dir}" \
    USER="${user}" \
    LOGNAME="${user}" \
    XDG_RUNTIME_DIR="${runtime}" \
    DBUS_SESSION_BUS_ADDRESS="unix:path=${runtime}/bus" \
    "$@"
}

run_toad systemctl --user daemon-reload
# Quadlet generators create target-wants links from [Install]; generated units cannot be enabled.
for unit in toad.service toad-ingress.service; do
  run_toad systemctl --user restart "${unit}" || run_toad systemctl --user start "${unit}"
  run_toad systemctl --user --quiet is-active "${unit}"
done
for container in toad toad-ingress; do
  run_toad podman container inspect --format '{{.State.Running}}' "${container}" | grep -Fx true
done