set -eux

MAIN_DISK=/dev/sda
EFIPART=/dev/sda1
ROOTPART=/dev/sda2
ROOT_DIR=/mnt
ETH_ADDR="34:17:eb:e2:93:31"

parted "$MAIN_DISK" --script mklabel gpt
parted "$MAIN_DISK" --script mkpart EFI fat32 1MiB 513MiB
parted "$MAIN_DISK" --script set 1 esp on                
parted "$MAIN_DISK" --script mkpart ROOT ext4 513MiB 100%
mkfs.fat -F32 "${EFIPART}"
mkfs.ext4 -F "${ROOTPART}"

mount "${ROOTPART}" "$ROOT_DIR"
mkdir -p "${ROOT_DIR}/efiroot"
mount "${EFIPART}" "${ROOT_DIR}/efiroot"
pacstrap "${ROOT_DIR}" base linux-lts linux-firmware intel-ucode sudo openssh gptfdisk efibootmgr

SYS_NAME=media
ADMIN_USER=matelakat

tee "$ROOT_DIR/install.sh" << EOF
set -eux
echo "INSTALLATION START"
ln -sf /usr/share/zoneinfo/Europe/Budapest /etc/localtime
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
echo "KEYMAP=uk" > /etc/vconsole.conf
locale-gen
echo "$SYS_NAME" > /etc/hostname
cat > /etc/hosts << ENDHOSTS
127.0.0.1 localhost
::1 localhost
127.0.1.1 ${SYS_NAME}.localdomain $SYS_NAME
ENDHOSTS

tee "/etc/udev/rules.d/10-network.rules" << ENDUDEV
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="${ETH_ADDR}", NAME="wired0", ENV{NM_UNMANAGED}="1"
ENDUDEV

tee "/etc/systemd/network/20-wired.network" << ENDNETWORK
[Match]
Name=wired0

[Network]
DHCP=yes
ENDNETWORK
systemctl enable systemd-networkd.service

systemctl enable systemd-resolved.service

systemctl enable sshd.service
useradd --create-home --user-group ${ADMIN_USER}
mkdir /home/${ADMIN_USER}/.ssh
tee /home/${ADMIN_USER}/.ssh/authorized_keys << ENDKEY
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2qiUcal1RcloVTw35sJMYjZi2ErbZ3jCOgXA3ljfID
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKmHGDGzhks1bmaMfQOzpZk1cDR/U6KttSGNugSCS1aO
ENDKEY
chown -R ${ADMIN_USER}:${ADMIN_USER} /home/${ADMIN_USER}/.ssh
chmod 0644 /home/${ADMIN_USER}/.ssh/authorized_keys
chmod 0755 /home/${ADMIN_USER}/.ssh
gpasswd --add ${ADMIN_USER} wheel
tee "/etc/sudoers.d/wheel" << ENDSUDO
%wheel ALL=(ALL) NOPASSWD: ALL
ENDSUDO
echo "INSTALLATION END"
EOF
arch-chroot "$ROOT_DIR" /bin/bash /install.sh
rm -f "$ROOT_DIR/install.sh"
ln -sf ../run/systemd/resolve/stub-resolv.conf "$ROOT_DIR/etc/resolv.conf"

genfstab -U "$ROOT_DIR" >> "$ROOT_DIR/etc/fstab"
arch-chroot "$ROOT_DIR" bootctl --path=/efiroot install

mkdir -p "${ROOT_DIR}/efiroot/EFI/${SYS_NAME}"
tee "${ROOT_DIR}/etc/mkinitcpio-${SYS_NAME}.conf" << ENDMKINIT
MODULES=()
BINARIES=()
FILES=()
HOOKS=(base udev microcode autodetect keyboard keymap consolefont modconf block filesystems fsck)
ENDMKINIT

ESP_DIR="/efiroot/EFI/${SYS_NAME}"
tee "${ROOT_DIR}/etc/mkinitcpio.d/linux-lts.preset" << ENDPRESET
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="${ESP_DIR}/vmlinuz-linux-lts"

PRESETS=('${SYS_NAME}')

${SYS_NAME}_config="/etc/mkinitcpio-${SYS_NAME}.conf"
${SYS_NAME}_image="${ESP_DIR}/initramfs-linux-lts-${SYS_NAME}.img"
ENDPRESET

arch-chroot "$ROOT_DIR" pacman -S --noconfirm linux-lts

ROOT_UUID=$(blkid -o value -s UUID $ROOTPART)

tee "$ROOT_DIR/efiroot/loader/entries/${SYS_NAME}.conf" << EOF
title   Arch ${SYS_NAME}
linux   /EFI/${SYS_NAME}/vmlinuz-linux-lts
initrd  /EFI/${SYS_NAME}/initramfs-linux-lts-${SYS_NAME}.img
options root="UUID=$ROOT_UUID" rw
EOF

