#!/usr/bin/env bash
set -Eeuo pipefail

install -d -m 0755 /var/lib/rk1-media
hostnamectl set-hostname rk1-media 2>/dev/null || printf 'rk1-media\n' >/etc/hostname

for group_name in audio video render input; do
  getent group "$group_name" >/dev/null || groupadd --system "$group_name"
done

getent group rkadmin >/dev/null || groupadd rkadmin
if ! id rkadmin >/dev/null 2>&1; then
  useradd --create-home --gid rkadmin --shell /bin/bash --groups sudo,adm,systemd-journal,video,render,audio,input rkadmin
fi
usermod --password '!' rkadmin
install -d -o rkadmin -g rkadmin -m 0700 /home/rkadmin/.ssh
install -o rkadmin -g rkadmin -m 0600 /opt/rk1-seed/authorized_keys /home/rkadmin/.ssh/authorized_keys

install -d -m 0755 /etc/sudoers.d
printf 'rkadmin ALL=(ALL:ALL) NOPASSWD: ALL\n' >/etc/sudoers.d/90-rkadmin
chmod 0440 /etc/sudoers.d/90-rkadmin
visudo --check --file=/etc/sudoers.d/90-rkadmin >/dev/null

usermod --password '!' root
if grep -q '^127\.0\.1\.1[[:space:]]' /etc/hosts; then
  sed -i 's/^127\.0\.1\.1[[:space:]].*/127.0.1.1\trk1-media/' /etc/hosts
else
  printf '127.0.1.1\trk1-media\n' >>/etc/hosts
fi
rm -f /root/.not_logged_in_yet /etc/ssh/ssh_host_*
ssh-keygen -A
# ssh.service normally creates this through RuntimeDirectory=sshd. This
# validation runs before ssh.service, so it must provide the directory itself.
install -d -o root -g root -m 0755 /run/sshd
/usr/sbin/sshd -t
touch /var/lib/rk1-media/identity-ready
