#!/bin/bash set -e if ! id classroom >/dev/null 2>&1; then adduser \ --disabled-password \ --gecos "" \ classroom fi cat > /home/classroom/.bash_profile <<'PROFILE' if [ -z "$WAYLAND_DISPLAY" ] && [ "${XDG_VTNR:-}" = "1" ]; then exec sway -c /etc/ekklesia-classroom/sway/config fi PROFILE chown classroom:classroom /home/classroom/.bash_profile chmod 0644 /home/classroom/.bash_profile chmod 0755 /usr/local/bin/classroom-browser chmod 0755 /usr/local/bin/classroom-window chmod 0755 /usr/local/bin/classroom-dvd chmod 0755 /usr/local/bin/classroom-dvd-css-setup chmod 0755 /usr/local/bin/classroom-notify-test chmod 0755 /usr/local/bin/classroom-notifications chmod 0755 /usr/local/bin/classroom-chrome-setup chmod 0755 /usr/local/bin/classroom-provision # Reading the optical drive needs group cdrom. Takes effect at the next # login, which the OTA reboot provides. if getent group cdrom >/dev/null 2>&1; then adduser classroom cdrom >/dev/null 2>&1 || true fi if [ ! -f /etc/ekklesia-classroom/device.conf ]; then cat > /etc/ekklesia-classroom/device.conf <<'CONFIG' # Ekklesia Classroom device configuration UPDATE_URL=https://updates.riverofglorymn.org CHANNEL=stable # Set to true on classrooms that have a DVD drive. DVD_ENABLED=false # Size of the dock, clock and notifications, 0.8 to 1.5. # Larger rooms and larger TVs want a larger number. UI_SCALE=1.0 CONFIG chmod 0644 /etc/ekklesia-classroom/device.conf fi # Make the settings discoverable on classrooms installed before they # existed. Both defaults are what those rooms already do, so nothing # about their behaviour changes. if ! grep -q '^DVD_ENABLED=' /etc/ekklesia-classroom/device.conf; then cat >> /etc/ekklesia-classroom/device.conf <<'CONFIG' # Set to true on classrooms that have a DVD drive. DVD_ENABLED=false CONFIG fi if ! grep -q '^UI_SCALE=' /etc/ekklesia-classroom/device.conf; then cat >> /etc/ekklesia-classroom/device.conf <<'CONFIG' # Size of the dock, clock and notifications, 0.8 to 1.5. # Larger rooms and larger TVs want a larger number. UI_SCALE=1.0 CONFIG fi systemctl daemon-reload || true systemctl enable ekklesia-classroom-update.timer || true systemctl start ekklesia-classroom-update.timer || true # Google Chrome, and the DVD codecs when the room has a drive, are # fetched by the provisioning service at the next boot. # # Deliberately enabled but not started here. It cannot run during this # script anyway, because dpkg holds the apt lock throughout. Starting it # straight afterwards would race the reboot that an OTA update performs # the moment this install finishes, and an apt run killed by that reboot # leaves dpkg half-configured. Every OTA reboots, so waiting for the next # boot costs nothing and cannot corrupt anything. # # A failure there must never fail this installation. systemctl enable ekklesia-classroom-provision.service || true exit 0