#!/bin/sh -e

# Enable udev OpenRC services and runlevels
# https://github.com/alpinelinux/aports/blob/master/main/eudev/setup-udev
setup-udev -n

# Enable other OpenRC services
for service in devfs dmesg devmappings; do
	rc-update -q add $service sysinit
done
for service in hwclock modules sysctl hostname bootmisc swclock syslog; do
	rc-update -q add $service boot
done
for service in dbus haveged sshd swapfile wpa_supplicant chronyd local networkmanager; do
	rc-update -q add $service default
done
for service in mount-ro killprocs savecache; do
	rc-update -q add $service shutdown
done

# Prime swclock with a reasonable date/time on first boot
mkdir -p /run/openrc
touch /run/openrc/shutdowntime

# Replace a config file from stock Alpine, unless apk reports that the user has
# modified it (note that this does not allow properly updating these configs
# when postmarketos-base gets updated yet, see issue pmaports#258).
write_unless_modified() {
	# Redirect the stdin to the file unless it has been modified
	# $1: file path
	if apk audit "$(dirname "$1")" | grep -q "${1:1}"; then
		echo "- NOT modifying (file was changed before): $1"
	else
		echo "- Modifying: $1"
		cat > "$1"
	fi
}

# Install /etc/fstab
{
	echo '# <file system> <mount point>   <type>  <options>               <dump>  <pass>'
	echo 'LABEL="pmOS_root"	/	ext4	relatime,data=ordered	0	1'
	echo 'LABEL="pmOS_boot"	/boot	auto	defaults		0	2'
} | write_unless_modified /etc/fstab

# Set /etc/issue
{
	echo 'Welcome to postmarketOS'
	echo 'Kernel \r on an \m (\l)'
	# setterm -powersave on -blank 5
	echo -ne "\033[9;5]"
} | write_unless_modified /etc/issue

# Set /etc/motd
{
	echo 'Welcome to postmarketOS!'
	echo ''
	echo 'This distribution is based on Alpine Linux.'
	echo 'Read both our wikis to find a large amount of how-to guides and'
	echo 'general information about administrating and development.'
	echo 'See <https://wiki.postmarketos.org> and <https://wiki.alpinelinux.org>.'
	echo ''
	echo 'You may change this message by editing /etc/motd.'
	echo ''
} | write_unless_modified /etc/motd

# Enable syslog to SHM. Note: size is 4048KiB, which *should* be More Than Enough(TM) for all but the most chattiest of devices.
echo "- Modifying: /etc/conf.d/syslog"
sed s/=\"/=\""-C4048 "/  -i /etc/conf.d/syslog

# Enable nl80211,wext & dbus control for wpa_supplicant
if ! grep -q Dnl80211,wext /etc/conf.d/wpa_supplicant; then
	echo "- Modifying: /etc/conf.d/wpa_supplicant"
	sed -i 's/wpa_supplicant_args=\"/wpa_supplicant_args=\" -u -Dnl80211,wext/' \
		/etc/conf.d/wpa_supplicant
fi
touch /etc/wpa_supplicant/wpa_supplicant.conf

# Enable the 'wheel' group
echo "- Modifying: /etc/sudoers"
sed -i 's/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers

# Set chrony to quickly correct system time on first boot, if necessary
if ! grep -q "makestep" /etc/chrony/chrony.conf; then
	echo "- Modifying: /etc/chrony/chrony.conf"
	echo "makestep 1 -1" >> /etc/chrony/chrony.conf
fi
