#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;

ARCH_TIMEZONE="${ARCH_TIMEZONE:-"Europe/Zurich"}";
ARCH_DISK="${ARCH_DISK}";
ARCH_HOSTNAME="${ARCH_HOSTNAME}";
ARCH_MOUNT_ROOT="${ARCH_MOUNT_ROOT:-"/mnt"}";
ARCH_LANG="${ARCH_LANG:-"en_US.UTF-8"}";
ARCH_KEYMAP="${ARCH_KEYMAP:-"de_CH-latin1"}";
ARCH_X11_KEYMAP="${ARCH_X11_KEYMAP:-"ch"}";
LOCALE_PATTERN="${LOCALE_PATTERN:-\(de_CH\|en_US\)}";

USER_NAME="${USER_NAME:-"manuel"}";
USER_DISPLAYNAME="${USER_DISPLAYNAME}";
USER_GROUPS="${USER_GROUPS}";

projectRoot="$(realpath ../../..)";
projectName="$(basename "$projectRoot")";
relativeDir="$(realpath --relative-to "$projectRoot" "$(pwd)")";
tempRoot="/root/$(basename "$projectName")";
tempDir="$tempRoot/$relativeDir";

loadkeys "$ARCH_KEYMAP";
timedatectl set-timezone "$ARCH_TIMEZONE";
. "./partition.sh";

pacman-key --init;
pacman-key --populate;

pacstrap -K "$ARCH_MOUNT_ROOT" \
    base \
    linux \
    linux-firmware \
    networkmanager \
    man-db \
    man-pages \
    texinfo \
    maliit-keyboard;

cp -r "$projectRoot" "${ARCH_MOUNT_ROOT}$tempRoot";
genfstab -U "$ARCH_MOUNT_ROOT" >> "$ARCH_MOUNT_ROOT/etc/fstab";

arch-chroot "$ARCH_MOUNT_ROOT" systemctl enable NetworkManager;

arch-chroot "$ARCH_MOUNT_ROOT" ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime;
arch-chroot "$ARCH_MOUNT_ROOT" hwclock --systohc;

arch-chroot "$ARCH_MOUNT_ROOT" sed -i "s/^#\?\($LOCALE_PATTERN.*\)$/\1/" /etc/locale.gen;
arch-chroot "$ARCH_MOUNT_ROOT" locale-gen;

{
    echo "LANG=de_CH.UTF-8"
    echo "LANGUAGE=en_US.UTF-8"
    echo "LC_MESSAGES=en_US.UTF-8"
} | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/locale.conf > /dev/null;

echo "KEYMAP=$ARCH_KEYMAP" | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/vconsole.conf > /dev/null;

echo "$ARCH_HOSTNAME" | arch-chroot "$ARCH_MOUNT_ROOT" tee /etc/hostname;
arch-chroot "$ARCH_MOUNT_ROOT" mkinitcpio -P;

arch-chroot "$ARCH_MOUNT_ROOT" pacman -Syu;
arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Software/GRUB/install.sh";
arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Software/sudo/install.sh";
pacstrap -K "$ARCH_MOUNT_ROOT" sddm;
arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Config/sddm/install.sh";
arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/../Software/KDE/install.sh";


USER_NAME="${USER_NAME}" \
USER_DISPLAYNAME="${USER_DISPLAYNAME}" \
USER_GROUPS="${USER_GROUPS}" \
    arch-chroot "$ARCH_MOUNT_ROOT" bash "$tempDir/user.sh";

cp ./set-keymap.service "$ARCH_MOUNT_ROOT/etc/systemd/system";
systemd-nspawn -D "$ARCH_MOUNT_ROOT" systemctl enable set-keymap;
systemd-nspawn -bD "$ARCH_MOUNT_ROOT" -E "ARCH_X11_KEYMAP=${ARCH_X11_KEYMAP}";
systemd-nspawn -D "$ARCH_MOUNT_ROOT" systemctl disable set-keymap;
rm "$ARCH_MOUNT_ROOT/etc/systemd/system/set-keymap.service";

arch-chroot "$ARCH_MOUNT_ROOT" systemctl enable bluetooth;

arch-chroot "$ARCH_MOUNT_ROOT" rm -rf "$tempRoot";

popd > /dev/null;