#!/bin/bash
# Create the unprivileged BOS live user and its Hyprland session.
#
# Hyprland refuses to run as root (superuser-privileges check), so the live
# session must run as a normal user. Calamares — which does need root — is
# launched onto the user's Wayland socket via passwordless sudo (see
# bos-launch-calamares). Runs once at boot, before the tty1 autologin getty.
set -e

if ! id liveuser &>/dev/null; then
    useradd -m -s /bin/bash liveuser
    for g in wheel video input audio storage power; do
        getent group "$g" >/dev/null 2>&1 && gpasswd -a liveuser "$g" >/dev/null || true
    done
    passwd -d liveuser >/dev/null
fi

install -d -m 0700 -o liveuser -g liveuser /home/liveuser/.config/hypr

# Minimal live compositor config: auto-launch the installer.
cat >/home/liveuser/.config/hypr/hyprland.conf <<'EOF'
monitor=,preferred,auto,1

exec-once = bos-launch-calamares

general {
    border_size = 2
    col.active_border = rgba(88c0d0ff)
    col.inactive_border = rgba(4c566aff)
}
decoration { rounding = 4 }
input {
    kb_layout = us
    follow_mouse = 1
}
misc {
    disable_hyprland_logo = true
    disable_splash_rendering = true
}
EOF

# Start Hyprland on tty1 login; capture output and fall back to a shell so a
# failed compositor start is visible rather than a blank looping cursor.
cat >/home/liveuser/.bash_profile <<'EOF'
if [[ "$(tty)" == /dev/tty1 ]] && [[ -z "$WAYLAND_DISPLAY" ]]; then
    export WLR_RENDERER_ALLOW_SOFTWARE=1
    export WLR_NO_HARDWARE_CURSORS=1
    Hyprland &>/var/log/hyprland-live.log
    echo "Hyprland exited (rc=$?). Log: /var/log/hyprland-live.log"
    exec bash -i
fi
EOF

chown -R liveuser:liveuser /home/liveuser
