#!/usr/bin/env bash

set -euo pipefail

DISK="/dev/nvme0n1"

echo "[+] Fixing GPT (safe)"
sgdisk -e $DISK

echo "[+] Current layout:"
sgdisk -p $DISK

echo "[+] Creating partitions in free space"

# /boot (1G)
sgdisk -n 5:0:+1G -t 5:8300 -c 5:"Linux /boot" $DISK

# LVM PV (rest)
sgdisk -n 6:0:0 -t 6:8e00 -c 6:"Linux LVM" $DISK

echo "[+] Reloading partition table"
partprobe $DISK
sleep 2

BOOT_PART="${DISK}p5"
PV_PART="${DISK}p6"

echo "[+] Creating filesystems"
mkfs.xfs -f $BOOT_PART

echo "[+] Setting up LVM"
pvcreate $PV_PART
vgcreate vg00 $PV_PART

echo "[+] Creating logical volumes"

lvcreate -L 10G -n root vg00
lvcreate -L 10G -n home vg00
lvcreate -L 2G  -n tmp vg00
lvcreate -L 4G  -n var vg00
lvcreate -L 2G  -n var_log vg00
lvcreate -L 1G  -n var_log_audit vg00
lvcreate -L 1G  -n var_tmp vg00

# swap (adjust if you want dynamic sizing)
lvcreate -L 2G -n swap vg00

echo "[+] Creating filesystems on LVs"

mkfs.xfs -f /dev/vg00/root
mkfs.xfs -f /dev/vg00/home
mkfs.xfs -f /dev/vg00/tmp
mkfs.xfs -f /dev/vg00/var
mkfs.xfs -f /dev/vg00/var_log
mkfs.xfs -f /dev/vg00/var_log_audit
mkfs.xfs -f /dev/vg00/var_tmp

mkswap /dev/vg00/swap

echo "[+] Final layout:"
lsblk -f

echo "[+] Done"