#!/bin/bash

# Use "o" to create GPT table
# "n" to create partitions:
# Number  Start (sector)    End (sector)  Size       Code  Name
#    1            2048         1050623   512.0 MiB   EF00  EFI System
#    2         1050624         1460223   200.0 MiB   8300  Linux filesystem
#    3         1460224      1679181823   800.0 GiB   8E00  Linux LVM
# "w" to write changes
# "q" to quit

echo 'If you are not sure, press C-c to exit'
read
# Make filesystem for EFI
mkfs.fat -F32 /dev/sda1

# Create crypted /boot container
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptboot
mkfs.ext2 /dev/mapper/cryptboot

# Create crypted LVM with /root and swap
cryptsetup luksFormat /dev/sda3
cryptsetup open /dev/sda3 cryptlvm
pvcreate /dev/mapper/cryptlvm
vgcreate vg0 /dev/mapper/cryptlvm
lvcreate -L 8G vg0 -n swap
lvcreate -l 100%FREE vg0 -n root
mkfs.ext4 /dev/mapper/vg0-root
mkswap /dev/mapper/vg0-swap

# Mount
swapon /dev/mapper/vg0-swap
mount /dev/mapper/vg0-root /mnt
mkdir /mnt/boot
mount /dev/mapper/cryptboot /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

# Check
lsblk

# You will have something like this:
#
# NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
# loop0            7:0    0 347.9M  1 loop  /run/archiso/sfs/airootfs
# sdb              8:32   1   3.8G  0 disk
# ├─sdb2           8:34   1    40M  0 part
# └─sdb1           8:33   1   797M  0 part  /run/archiso/bootmnt
# sda              8:0    0 931.5G  0 disk
# ├─sda2           8:2    0   200M  0 part
# │ └─cryptboot  254:0    0   198M  0 crypt /mnt/boot
# ├─sda3           8:3    0   800G  0 part
# │ └─cryptlvm   254:1    0   800G  0 crypt
# │   ├─vg0-swap 254:2    0    16G  0 lvm   [SWAP]
# │   └─vg0-root 254:3    0   784G  0 lvm   /mnt
# └─sda1           8:1    0   512M  0 part  /mnt/boot/efi

