#!/bin/bash
set -euo pipefail

# 1. Back up original files
cp -a "/etc/default/rrdcached" "/etc/default/rrdcached.bak"
cp -a "/etc/init.d/rrdcached" "/etc/init.d/rrdcached.bak"
cp -a "/usr/share/perl5/Proxmox/Sys/Block.pm" "/usr/share/perl5/Proxmox/Sys/Block.pm.bak"

# Patch installer to allow installing to an emmc device
sed -i '/elsif (\$dev =~ m|\^\/dev\/nvme\\d+n\\d+\$|) {/,/return "\${dev}p\$partnum";/ {
    /return "\${dev}p\$partnum";/ a\
 } elsif ($dev =~ m|^/dev/mmcblk\\d+$|) {\
     return "${dev}p$partnum";
}' /usr/share/perl5/Proxmox/Sys/Block.pm

# Save emmc life
sysctl vm.swappiness=0
swapoff -a
sed -i.bak '/\bswap\b/s/^/#/' /etc/fstab
lvremove /dev/pve/swap

# Disable logging
ln -sfn /dev/null /var/log/lastlog
mkdir -p /etc/systemd/journald.conf.d
cat << 'EOF' > /etc/systemd/journald.conf.d/00-volatile-limit.conf
[Journal]
Storage=volatile
RuntimeMaxUse=8M
EOF
systemctl restart systemd-journald


# Disable unneeded services

SERVICES = (pve-ha-lrm, pve-ha-crm, pvefw-logger, spiceproxy, corosync)

for service in "${!SERVICES[@]}"
do
    systemctl stop $service
done




# rrdcached

if grep -qE '^[#]?\s*WRITE_TIMEOUT=' "/etc/default/rrdcached"; then
    sed -i -E 's|^[#]?\s*WRITE_TIMEOUT=.*|WRITE_TIMEOUT=3600|' "/etc/default/rrdcached"
else
    echo "WRITE_TIMEOUT=3600" >> "/etc/default/rrdcached"
fi

sed -i -E 's|^(\s*JOURNAL_PATH=.*)|#\1|' "/etc/default/rrdcached"

if grep -qE '^[#]?\s*FLUSH_TIMEOUT=' "/etc/default/rrdcached"; then
    sed -i -E 's|^[#]?\s*FLUSH_TIMEOUT=.*|FLUSH_TIMEOUT=7200|' "/etc/default/rrdcached"
else
    echo "FLUSH_TIMEOUT=7200" >> "/etc/default/rrdcached"
fi

if ! grep -q 'FLUSH_TIMEOUT' "/etc/init.d/rrdcached"; then
    sed -i '/\${WRITE_TIMEOUT:+-w \${WRITE_TIMEOUT}}/ a\
\t\t${FLUSH_TIMEOUT:+-f ${FLUSH_TIMEOUT}} \\' "/etc/init.d/rrdcached"
fi

systemctl daemon-reload
systemctl restart rrdcached.service