#!/bin/sh
set -eu

username="$(getent passwd 1000 | cut -d: -f1)"
notify () { printf '\n\e[1;94m=== %s ====\e[0m\n\n' "$1" >&2; }

notify 'Installing Debian packages'
apt-get update
apt-get dist-upgrade --yes --purge
apt-get install --yes \
    amd64-microcode \
    btrfs-progs \
    cryptsetup \
    curl \
    docker.io \
    fonts-noto-cjk-extra \
    fonts-sil-ezra \
    fwupd-signed \
    git \
    intel-microcode \
    language-pack-gnome-he \
    libnotify-bin \
    make \
    openssh-client \
    openssh-server \
    python3 \
    rsync \
    sshfs \
    systemd-container \
    tmux \
    ufw \
    vim-nox \
;
apt-get autoremove --purge --yes
apt-get autoclean

notify 'Setting up the firewall'
ufw limit ssh
ufw default deny
ufw allow in on docker0
ufw enable

notify 'Mounting a tmpfs under /tmp'
sed -i '/\/tmp/d' /etc/fstab
echo 'tmpfs   /tmp    tmpfs   defaults,nodev,nosuid   0   0' >> /etc/fstab

notify 'Disabling swap'
sed -i '/swap/d' /etc/fstab

notify 'Passwordless sudo'
echo "$username  ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopasswd-user
chown root:root /etc/sudoers.d/nopasswd-user
chmod 440 /etc/sudoers.d/nopasswd-user

notify 'Set password and make a note in the user'\''s full name'
echo "$username:1234" | chpasswd
chfn --full-name 'Password is 1234' "$username"

notify 'Cloning the rcfiles repo to the home directory'
sudo -Hu "$username" sh -c 'git -C $HOME remote show >/dev/null' || \
sudo -Hu "$username" sh -c '
# Copied verbatim from https://git.shore.co.il/nimrod/rcfiles/#installation.
cd
git init
git remote add origin https://git.shore.co.il/nimrod/rcfiles.git/
git fetch
git reset --hard origin/master
git branch --set-upstream-to=origin/master
git bull
Documents/bin/install-git-hooks
.githooks/post-merge
'
update-desktop-database

notify 'Installing Flatpaks'
flathub_install () {
    wget "https://dl.flathub.org/repo/appstream/$1.flatpakref"
    sudo -Hu "$username" io.elementary.sideload "$1.flatpakref"
    rm "$1.flatpakref"
}
(
    cd /tmp
    flathub_install org.mozilla.firefox
    flathub_install org.libreoffice.LibreOffice
    flathub_install org.gnome.PasswordSafe
    flathub_install org.remmina.Remmina
)