pkgname=postmarketos-base
pkgver=42
pkgrel=1
pkgdesc="Meta package for minimal postmarketOS base"
url="https://postmarketos.org"
arch="noarch"
license="GPL-3.0-or-later"
makedepends="postmarketos-initramfs"
depends="
	alpine-base
	devicepkg-utils>=0.2.0
	eudev
	openssh-server-pam
	postmarketos-bootsplash
	postmarketos-ramdisk
	postmarketos-mvcfg
	postmarketos-keys
	sudo-virt
	zram-init
	"
_pmb_recommends="
	doas
	doas-sudo-shim
"
install="$pkgname.post-install"
triggers="$pkgname.trigger=/usr/share/deviceinfo"
subpackages="
	$pkgname-mesa
	$pkgname-nftables
	$pkgname-nftables-openrc:nftables_openrc
	$pkgname-openrc
	"
options="!check"

# alpine-base and busybox-initscripts can be removed from here after 23.01 is out
replaces="
	alpine-base
	alpine-baselayout
	alpine-baselayout-data
	alpine-release
	busybox-initscripts
	sudo
	sudo-ldap
	"
replaces_priority=100  # leave plenty for alpine

_source440="
	etc/sudoers
	etc/doas.d/10-postmarketos.conf
	"
_source644="
	etc/apk/config
	etc/conf.d/swapfile
	etc/conf.d/zram-init
	etc/conf.d/syslog
	etc/fstab
	etc/issue
	etc/motd
	usr/lib/os-release
	etc/sysctl.d/90-disable-rp-filter.conf
	etc/sysctl.d/90-steam.conf
	etc/udev/udev.conf
	usr/lib/udev/rules.d/20-imagis-input.rules
	usr/lib/udev/rules.d/20-tm2-touchkey-input.rules
	usr/lib/udev/rules.d/20-tm2-touchkey-leds.rules
	usr/lib/udev/rules.d/20-zinitix-input.rules
	usr/lib/udev/rules.d/50-firmware.rules
	usr/lib/udev/rules.d/90-feedbackd-regulator-haptic.rules
	usr/share/mkinitfs/files/postmarketos-base.files
	"
_source755="
	etc/init.d/deferred-initcalls
	etc/init.d/swapfile
	etc/init.d/tmpfs
	usr/bin/swapfile
	usr/bin/zram-size-calc
	usr/lib/firmwareload.sh
	"

# Avoid filename based checksum conflicts by including the whole path:
# https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10013
flatpath() {
	local i
	for i in $@; do
		echo "rootfs-$i" | sed s./.-.g
	done
}

source="$(flatpath $_source440 $_source644 $_source755)"

prepare() {
	default_prepare

	# setterm -powersave on -blank 5
	echo -ne "\033[9;5]" >> rootfs-etc-issue
}

package() {
	local i
	for i in $_source440; do
		install -Dm440 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
	done
	for i in $_source644; do
		install -Dm644 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
	done
	for i in $_source755; do
		install -Dm755 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
	done

	# /etc/os-release should be a relative symlink, see:
	# https://www.man7.org/linux/man-pages/man5/os-release.5.html
	ln -s ../usr/lib/os-release "$pkgdir"/etc/os-release
}

mesa() {
	replaces=""
	depends="mesa-dri-gallium mesa-gles"
	install_if="$pkgname=$pkgver-r$pkgrel mesa"
	mkdir "$subpkgdir"
}

nftables() {
	install_if="$pkgname=$pkgver-r$pkgrel nftables"
	depends="postmarketos-config-nftables"

	mkdir "$subpkgdir"
}

nftables_openrc() {
	install_if="$pkgname-openrc=$pkgver-r$pkgrel nftables"
	depends="nftables-openrc"
	install="$subpkgname.post-install"

	mkdir -p "$subpkgdir"
}

openrc() {
	install_if="$pkgname=$pkgver-r$pkgrel openrc"
	install="$subpkgname.post-install $subpkgname.post-upgrade"
	replaces="
		busybox-openrc
		eudev
		openrc
		zram-init-openrc
		"
	depends="
		eudev-openrc
		logbookd
		logbookd-openrc
		openssh-server-common-openrc
		udev-init-scripts-openrc
		zram-init-openrc
		"

	amove etc/conf.d/swapfile
	amove etc/conf.d/zram-init
	amove etc/conf.d/syslog
	amove etc/init.d/deferred-initcalls
	amove etc/init.d/swapfile
	amove etc/init.d/tmpfs
	amove etc/udev/udev.conf
}

sha512sums="
e529f5cef1f31481b577f99b8917704f2cfefb963d98bf40a14b017938e55a00134d2033f81d2cb0b8489c5e9b4a92fdc0a788013f1adb4cd46d9580c9988186  rootfs-etc-sudoers
ab09e67203bb82226b0c9e600c8bc231a5c0111977b80edb355e55be101d008ac3c06798c263f0ca50e203758e1bfbf25767ad12f2654d082fb007c0411bbd1f  rootfs-etc-doas.d-10-postmarketos.conf
224d58717f7f95851c91914753f4aefaf8964a2e62350ed898783c295c509cdadd85c325ee00baceb21ff2763ca2f4c7b1478a5638eb7d86836f91336b739376  rootfs-etc-apk-config
e0d2d48b82a03239a4c0a00acaf83e00d397c23a8d7c71053d4e2a383357c22dcedef9e81b0e12a1d7514e1fdbe0bb3eb82613d18b29034a7ce5447f13c84a53  rootfs-etc-conf.d-swapfile
a286c261dbab800b4bd2891c679cae1fbbf3e3169014bf7e89451961bbd3cbe0f6e34465cd1409aa4373f32ed74f38eb042b166767512be9ee7104e26cd712fa  rootfs-etc-conf.d-zram-init
e4576c58c35f80bedddb1e89e186f37d31a186d3e9eb046581b8c5d7b7d435e18924539e851d3e67dc0ede80f9d44d16bd9ef52e73350d3f13224edc31d73a34  rootfs-etc-conf.d-syslog
9b8d0493bb64457fe176fea801e0771d3c5279302c61559824bf81b3d2b66d2c1e076f4aaac65f55389005acb18c27e44bed858c2bdbad37d74199f07c86c354  rootfs-etc-fstab
45bd0742a64a9d3c4a88e152b97edcf3fa1edca28884f9ea69e7c4c365f1e41ef9056dbe204545de7d4b2ba92e1e5872b2a929c2dcc1dd468e627cc3f090b8e6  rootfs-etc-issue
01403df3b5a2be0dd70387a3c32cf24a77bc097679fbefca585082a0970b7d756723c33687be3809351b5e31c85947db84861118bfeced8f5f865fe2452555ec  rootfs-etc-motd
6593a61cb4cbb5d557bdd0f98ce09bf91a6e076cfe0023fe3f495e17044c8d586708328a0fae52b58b3ff008a347b1f63a222a2a4d4f3f4d95777531f8a5c1a8  rootfs-usr-lib-os-release
b70ee1b39b5f33c9a3e6bf4259158519691c82c8cefb700d4df49eb749a2cce208082e00d4905b9eea2c4f75b6da62f73931931c92157b4132adb35dcf0e0a6f  rootfs-etc-sysctl.d-90-disable-rp-filter.conf
6b16fd00756926c6fdc6f01960f59c854c90920dd9c0e67c19506a90fd26ac887a8dbfd5b1ec2712fff91f0369ddc5b91d56041360018d4d0c4d78e49733b644  rootfs-etc-sysctl.d-90-steam.conf
6025282c9513835ae8e8d71a17ee81a6ef75c9651a5db9d6f018867264705f4eb874089abe2f01e31808486951c44d9dd8191ac0298734d905e772494b363f43  rootfs-etc-udev-udev.conf
560d30c08856714f4bec805ca95fad767330d6fb3760096ffebdf35cad42d4ebea7dd2f5ee2e4d88596743e6717ca6ac2339d4d753feb3ca28e0090c585bf81e  rootfs-usr-lib-udev-rules.d-20-imagis-input.rules
b61c6116f972df08f460494cf3b511b7cb4046a65bb3bd840cddb5ca98518c4514dc5f8a9330bc9ac630e5adbfecc839cbd21f70cac5000a30fd2daeab0f02d7  rootfs-usr-lib-udev-rules.d-20-tm2-touchkey-input.rules
de4d8f258cb2ce654be15abe0188caa6ca9cc163fd45350f2025e7e9d043878e3f1202ef9033b1b15d7e18c4b40c3b19db387ee050a3baf03c4bd4293f4721e3  rootfs-usr-lib-udev-rules.d-20-tm2-touchkey-leds.rules
7396c2adc7808a995162cd20c0e8b327675eb5e616e936e65887a4581eb4d134f9911202bb269e0541643d0c1cb6955bf590bc4df8bafc6ecf2bf7fc63385e3c  rootfs-usr-lib-udev-rules.d-20-zinitix-input.rules
0b098828080055d3646ea54891cb0e1b578cbc30f5e16f7284f2814c08192f18079a38fb686d192715ae6a3d2cd6625d9e3cf99f234a6f0d94088bb0cb2ce43d  rootfs-usr-lib-udev-rules.d-50-firmware.rules
f5c6913040a0448c346fdd0b5dbea865a3ac92ac1a21646d32753e6521642a27b061c314f10a14b612b78aa6bc8d3209e51f7ced95c478f1be55e478ff04067b  rootfs-usr-lib-udev-rules.d-90-feedbackd-regulator-haptic.rules
d89a7e4b9d601431c62c11f83c9c72fdb90384d9100ee5fc4aff25dda0836fd3bf9e48c0536615be791374459eb8fbaf36d27358d4402ce768a9b9a32bed4f93  rootfs-usr-share-mkinitfs-files-postmarketos-base.files
3c049c5e6fbe3079ac333f416cbaf5d3890a7941b79d68741bfc861ee94358fba6d8b72614fe99ab84563f9208613037c6702a7d0fc5a6dfa9d0518b5a13b0cb  rootfs-etc-init.d-deferred-initcalls
42d6bce78b6e3c118dcbd9228b138661a05f8f321f17457e8df8f2398c0b780399d8d056f0a7c50d91557ac8698ab37dde61ec1a13fd69a7b3faad092f126580  rootfs-etc-init.d-swapfile
0cd9a0b8490028d854b65d0648aaf84e4703921b8b7797517dd65ffaa1ec9e225487007dcccd42c249a9f2470e5adacf95760536c9508138b14de7252de38473  rootfs-etc-init.d-tmpfs
23df2632e8ef372dccd6b9abac61441dd0ee447ccc7428fba495e28f1b697ebc415f7580dbb9a39d22d162a175d7264b47bdf9f66552347e35d9d0bb7828647d  rootfs-usr-bin-swapfile
0d128f044e60a882c189e3286dd1609f0d4c18682c501f6a40f18ee99e9ba5a4185cb57504074bc6c213b4b71f3186b120fdd29992ed256016631977ff831f7d  rootfs-usr-bin-zram-size-calc
72c73bd67bfe2a659c469781e4def038a9b2482e014c0304150fbc25c5325fc7a36b288de76447837741bb9a828eb1db6df0d33b41cf67c7a25bb27b03777b1f  rootfs-usr-lib-firmwareload.sh
"