54 lines
1.5 KiB
Bash
Executable File
54 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
INSTALL_DIR="/opt/deltabootd_DEVICE_CONTACT"
|
|
BIN_NAME="deltarune_device_contact"
|
|
OUT_BIN="$INSTALL_DIR/dist/$BIN_NAME"
|
|
GREETD_CONFIG="${GREETD_CONFIG:-/etc/greetd/config.toml}"
|
|
GREETD_USER="${GREETD_USER:-greeter}"
|
|
BACKUP_SUFFIX="$(date +%Y%m%d%H%M%S)"
|
|
|
|
log() { printf '[install] %s\n' "$*"; }
|
|
|
|
command -v bun >/dev/null 2>&1 || { echo "bun is required on PATH"; exit 1; }
|
|
|
|
log "Copying project to $INSTALL_DIR"
|
|
sudo mkdir -p "$INSTALL_DIR"
|
|
sudo rsync -a --delete \
|
|
--exclude node_modules \
|
|
--exclude dist \
|
|
--exclude .git \
|
|
"$REPO_DIR"/ "$INSTALL_DIR"/
|
|
|
|
log "Installing dependencies in $INSTALL_DIR"
|
|
sudo env -C "$INSTALL_DIR" bun install
|
|
|
|
log "Installing N-API dependencies in $INSTALL_DIR"
|
|
sudo env -C "$INSTALL_DIR" bun pm trust --all
|
|
|
|
|
|
log "Building binary -> $OUT_BIN"
|
|
sudo env -C "$INSTALL_DIR" bun build --compile --production --outfile="$OUT_BIN" ./src/index.ts
|
|
sudo chmod +x "$OUT_BIN"
|
|
|
|
if [[ -f "$GREETD_CONFIG" ]]; then
|
|
log "Backing up greetd config to ${GREETD_CONFIG}.${BACKUP_SUFFIX}.bak"
|
|
sudo cp "$GREETD_CONFIG" "${GREETD_CONFIG}.${BACKUP_SUFFIX}.bak"
|
|
else
|
|
log "greetd config not found, creating $GREETD_CONFIG"
|
|
sudo mkdir -p "$(dirname "$GREETD_CONFIG")"
|
|
fi
|
|
|
|
log "Writing greetd config to launch $OUT_BIN as $GREETD_USER"
|
|
sudo tee "$GREETD_CONFIG" >/dev/null <<EOF
|
|
[terminal]
|
|
vt = 1
|
|
|
|
[default_session]
|
|
command = "bash -c 'IS_CAGE=1 SDL_VIDEODRIVER=wayland cage -s -- $OUT_BIN'"
|
|
user = "root"
|
|
EOF
|
|
|
|
log "Done. Restart greetd to apply changes."
|