#!/bin/sh
# Configura Snapper per / (R02): l'opzione Snapper di archinstall viene ignorata (report 01, E2).
# Da eseguire una volta, dall'installer (custom_commands, nel chroot) o da root sul sistema installato.
# Richiede il sottovolume @snapshots montato su /.snapshots (layout della wiki Arch): così le snapshot
# non stanno dentro @ e restano utilizzabili per un ripristino.
# Non usa "snapper create-config": vuole creare lui /.snapshots, quindi bisognerebbe smontare @snapshots,
# e nel chroot di archinstall lo smontaggio stacca il mount anche fuori, che poi manca in fstab (report 06).
# Scrive lo stesso file di configurazione a partire dal template, senza toccare i mount.
set -eu
if [ -e /etc/snapper/configs/root ]; then echo "configurazione root già presente"; exit 0; fi
mountpoint -q /.snapshots || { echo "/.snapshots non è montato: manca il sottovolume @snapshots" >&2; exit 1; }
# Solo snapshot di pacman (snap-pac), niente snapshot orarie. Ritenzione del template CachyOS cachyos-root
# (50/15, S31); sotto i 128 GB 20/8, per non riempire dischi piccoli.
if [ "$(findmnt -bno SIZE /)" -lt 128000000000 ]; then LIMITE=20; IMPORTANTI=8; else LIMITE=50; IMPORTANTI=15; fi
sed -e 's/^SUBVOLUME=.*/SUBVOLUME="\/"/' -e 's/^FSTYPE=.*/FSTYPE="btrfs"/' \
    -e 's/^TIMELINE_CREATE=.*/TIMELINE_CREATE="no"/' \
    -e "s/^NUMBER_LIMIT=.*/NUMBER_LIMIT=\"$LIMITE\"/" -e "s/^NUMBER_LIMIT_IMPORTANT=.*/NUMBER_LIMIT_IMPORTANT=\"$IMPORTANTI\"/" \
    /usr/share/snapper/config-templates/default > /etc/snapper/configs/root
SNAPPER_CONFIGS=""
. /etc/conf.d/snapper
sed -i "s/^SNAPPER_CONFIGS=.*/SNAPPER_CONFIGS=\"${SNAPPER_CONFIGS:+$SNAPPER_CONFIGS }root\"/" /etc/conf.d/snapper
chmod 750 /.snapshots
systemctl enable snapper-cleanup.timer
# Tiene allineate le voci "Snapshots" del menu di Limine con le snapshot di Snapper (disabilitato di suo).
systemctl enable limine-snapper-sync.service
# Snapshot lasciati dai ripristini sotto pulizia automatica (R36).
systemctl enable stidda-snapshot-orfani.service
snapper --no-dbus -c root list >/dev/null
echo "Snapper configurato per /"
