_setup_user(){
    useradd -s /usr/bin/zsh -m -U -G wheel,network,realtime,docker,wheel,lxd,i2c fox
}

_setup_aurutils(){
    # We only have one user....
    install -d /srv/pub.linderud.dev/repos/aur -o 1000
    repo-add /srv/pub.linderud.dev/repos/aur
}

_setup_systemd(){
    # tlp
    # systemctl enable --now tlp
    # systemctl enable tlp-sleep.service
    systemctl mask systemd-rfkill.socket
    systemctl enable --now NetworkManager
    systemctl enable --now systemd-resolved.service
    systemctl enable --now auditd
    systemctl enable --now bolt
    systemctl enable --now bluetooth
    systemctl enable --now udisks2.service
    systemctl enable --now btrfs-scrub@-.timer
    systemctl enable --now btrfs-scrub@home.timer
}


_btrfs_setup(){
    [ -d "/var/btrfs" ] && return
    mkdir /var/btrfs
    mount /dev/mapper/root /var/btrfs || true
    genfstab -U -f /var/btrfs >> /etc/fstab
}

_btrfs_setup_swap(){
    [ -d "/var/swap" ] && return
    mkdir /var/swap
    btrfs subvolume create /var/btrfs/@swap
    mount -t btrfs -o subvol=@swap /dev/mapper/root /var/swap
    truncate -s 0 /var/swap/swap
    chattr +C /var/swap/swap
    fallocate -l 8G /var/swap/swap
    chmod 0600 /var/swap/swap
    mkswap /var/swap/swap
    swapon /var/swap/swap
    genfstab -U -f "/var/swap" / >> /etc/fstab
}

_btrfs_mksubvol(){
    [ -d "$1" ] && return
    btrfs subvolume create "/var/btrfs/$2"
    genfstab -U -f "$1" >> /etc/fstab
    mkdir -p "$1_tmp"
    cp --reflink=auto "$1/" "$1_tmp/"
    mount -t btrfs -o subvol="$2" /dev/mapper/root "$1"
    cp --reflink=auto "$1_tmp/" "$1/"
    rm -rf "$1_tmp"
}


post_install () {
    _setup_user
    _setup_systemd
    if [[ "$(stat -f -c %T /)" == btrfs ]]  ; then
        _btrfs_mksubvol /srv @srv
        _btrfs_mksubvol /var @var
        _btrfs_mksubvol /home @home
        _btrfs_mksubvol /opt @opt
        _btrfs_setup
        _btrfs_setup_swap
    fi
    _setup_aurutils
}
