# Reference: <https://postmarketos.org/devicepkg>
# Co-Maintainer: Aster Boese <asterboese@mailbox.org>
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=device-lenovo-21bx
pkgdesc="Lenovo ThinkPad X13s"
pkgver=23
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck !strip"
depends="
	alsa-ucm-conf
	dtbloader
	libmbim-tools
	linux-firmware-ath11k
	linux-firmware-qca
	linux-firmware-qcom
	postmarketos-base
	qmi-utils
	systemd-boot
"
makedepends="devicepkg-dev"
source="
	deviceinfo
	firmware.files
	modules-initfs
	pipewire.conf
	usbguard.conf
	kernel-cmdline.conf
	remove-capsules.sh
"
subpackages="
	$pkgname-kernel-stable:kernel_stable
	$pkgname-kernel-lts:kernel_lts
	$pkgname-kernel-mainline:kernel_mainline
	$pkgname-pipewire
	$pkgname-usbguard
	$pkgname-vulkan
"

build() {
	devicepkg_build $startdir $pkgname
}

package() {
	# Cannot be top-level since this is provided by subpackages of this package
	depends="$depends $pkgname-kernel-any"

	devicepkg_package $startdir $pkgname

	install -Dm644 "$srcdir"/firmware.files \
		-t "$pkgdir"/usr/share/mkinitfs/files
	install -Dm644 "$srcdir"/pipewire.conf \
		-t "$pkgdir"/usr/share/pipewire.conf.d
	install -Dm755 "$srcdir"/remove-capsules.sh \
		-t "$pkgdir"/usr/share/boot-deploy/hooks
	install -Dm600 "$srcdir"/usbguard.conf \
		"$pkgdir"/etc/usbguard/rules.d/"$pkgname".conf
}

pipewire() {
	install_if="$pkgname=$pkgver-r$pkgrel postmarketos-base-ui-audio-backend-pipewire"

	amove usr/share/pipewire.conf.d/pipewire.conf
}

vulkan() {
	install_if="$pkgname=$pkgver-r$pkgrel vulkan-loader"
	depends="mesa-vulkan-freedreno"
	mkdir "$subpkgdir"
}

usbguard() {
	install_if="$pkgname=$pkgver-r$pkgrel usbguard"

	amove etc/usbguard/rules.d/"$pkgname".conf
}

kernel_stable() {
	pkgdesc="Stable kernel (recommended, best balance between stability and features)"
	depends="linux-postmarketos-stable"
	provides="$pkgname-kernel-any"
	provider_priority=3
	replaces="linux-postmarketos-qcom-laptop"
	devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}

kernel_lts() {
	pkgdesc="Long-term maintenance kernel (most stability, not all security fixes & new features)"
	depends="linux-postmarketos-lts"
	provides="$pkgname-kernel-any"
	provider_priority=2
	devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}

kernel_mainline() {
	pkgdesc="Upstream development kernel (regular breakage, latest features)"
	depends="linux-postmarketos-mainline"
	provides="$pkgname-kernel-any"
	provider_priority=1
	devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}

sha512sums="
7a685de71e512b5b2bf21448fb8fc1055bb33c72149acd57e1754c212c40218a2b93ab603d3262c2c37ace051c5872b2fcaeb5379a5beaac680b7a2a0f115a1e  deviceinfo
eabb3e9c6946bb065244f129f1a432842b09b0f2a9a4b41289c3c289f52076c63d51205dd7ccaa1a7621dd8eb0e4b1a3df27f9dc6b55445fbd738be13c2031bb  firmware.files
45d56b8d6157dd7d679d0d4af4866973e6e0365c276fa56c008cbc8373f64626c881b6097ad1b9fa9c0d5b769e61b5a81466d6a773e2848c9ee89f06c0302249  modules-initfs
52bbb9564ec713db5d46937701b121afe0c6c644fffe189a05766f491b4997b1bbc4c1f90229efb5764d795df8d40a57d4c840ee4b32d426e7a84520364b8bf5  pipewire.conf
0d0412eb1f01af39000c39391f622640461305d83dae1a53aa7eef640cc17fd265cabca4e4e57dea053c47a4e50f9feb90f12ee5310d5b6425783e83efc5f9d8  usbguard.conf
7e60772bdefc4fc9d459cf2daa9fe09f605240f261b2e8f046ec992593144d26e0c80863ea3b9cb67025fef8fad45dacf54e022d0d57afb321778a5bb2eadaf4  kernel-cmdline.conf
bf6d6e5cdd4942651eaa424445773e9475eb9b284a5be8e3eb131f6ffcb8a652ce963a04a1f1d44cdcc00a58e00dd1a9797d3e624ecde931f816026fbb583640  remove-capsules.sh
"
