#!/usr/bin/env bash

disk="/dev/sda"
sharef='/usr/local/share/sec-box-installer'

make_gpt() {
    sfdisk ${disk} << EOF
    label: gpt
    ,1G,U
    ,,L
EOF
}

make_fs() {
    mkfs.fat -F 32 ${disk}1
    mkfs.btrfs -f ${disk}2
    mount ${disk}2 /mnt
    btrfs subvolume create /mnt/@
    btrfs subvolume create /mnt/@home
    btrfs subvolume create /mnt/@cache
    btrfs subvolume create /mnt/@log
    btrfs subvolume create /mnt/@swap
    btrfs subvolume create /mnt/@srv
    umount /mnt
}

mount_fs(){
    mount -o subvol=@,noatime,compress=zstd ${disk}2 /mnt
    mount --mkdir -o subvol=@home,noatime,compress=zstd ${disk}2 /mnt/home
    mount --mkdir -o subvol=@cache,noatime,compress=zstd ${disk}2 /mnt/var/cache
    mount --mkdir -o subvol=@log,noatime,compress=zstd ${disk}2 /mnt/var/log
    mount --mkdir -o subvol=@swap,noatime,compress=zstd ${disk}2 /mnt/swap
    mount --mkdir -o subvol=@srv,noatime,compress=zstd ${disk}2 /mnt/srv
    mount --mkdir ${disk}1 /mnt/boot
}

make_swap() {
    btrfs filesystem mkswapfile --size 4g --uuid clear /mnt/swap/swapfile
    swapon /mnt/swap/swapfile
}

do_pacstrap() {
    pacstrap -C ${sharef}/pacman.conf -K /mnt sec-box-l1 networkmanager openssh nano zsh grml-zsh-config zsh-completions
}

make_fstab(){
    genfstab -U /mnt >> /mnt/etc/fstab
}

do_chroot() {
    cp ${sharef}/chrooted  /mnt
    cp ${sharef}/pacman.conf  /mnt/etc/
    cp ${sharef}/locale.gen  /mnt/etc/
    cp ${sharef}/locale.conf  /mnt/etc/
    cp ${sharef}/vconsole.conf  /mnt/etc/
    cp ${sharef}/zram-generator.conf  /mnt/etc/systemd
    cp ${sharef}/hostname  /mnt/etc/
    sed -i /mnt/etc/default/grub -e "s|GRUB_DISTRIBUTOR=.*|GRUB_DISTRIBUTOR=sec-box|"
    arch-chroot /mnt sh /chrooted
    rm /mnt/chrooted
}


make_gpt
make_fs
mount_fs
make_swap
do_pacstrap
make_fstab
do_chroot
