#!/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