diff --git a/systemd/mutter-mobile/APKBUILD b/systemd/mutter-mobile/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..a8b06d394a5875675b00e4f6231ef15e3213f8dc
--- /dev/null
+++ b/systemd/mutter-mobile/APKBUILD
@@ -0,0 +1,129 @@
+# Forked from Alpine to apply mobile adaptivity patches
+
+pkgname=mutter-mobile
+pkgver=99945_git20230908
+_pkgver=45_git20230908
+pkgrel=0
+pkgdesc="clutter-based window manager and compositor"
+url="https://wiki.gnome.org/Projects/Mutter/"
+# ricsv64: doesn't build currently:
+# https://builds.sr.ht/~postmarketos/job/869829#task-pmbootstrap_build-1224
+arch="all !riscv64"
+license="GPL-2.0-or-later"
+depends="
+	gnome-settings-daemon
+	gsettings-desktop-schemas
+	mutter-mobile-schemas
+	xkeyboard-config
+	xwayland
+	"
+makedepends="
+	at-spi2-core-dev
+	cairo-dev
+	dbus-dev
+	systemd-dev
+	eudev-dev
+	fribidi-dev
+	gdk-pixbuf-dev
+	glib-dev
+	gnome-desktop-dev
+	gnome-settings-daemon-dev
+	gobject-introspection-dev
+	graphene-dev
+	gtk+3.0-dev
+	json-glib-dev
+	libei-dev
+	libcanberra-dev
+	libdrm-dev
+	libgudev-dev
+	libice-dev
+	libinput-dev
+	libsm-dev
+	libwacom-dev
+	libx11-dev
+	libxau-dev
+	libxcb-dev
+	libxcomposite-dev
+	libxcursor-dev
+	libxdamage-dev
+	libxext-dev
+	libxfixes-dev
+	libxi-dev
+	libxinerama-dev
+	libxkbcommon-dev
+	libxkbfile-dev
+	libxrandr-dev
+	libxrender-dev
+	libxtst-dev
+	mesa-dev
+	meson
+	pango-dev
+	pipewire-dev
+	startup-notification-dev
+	wayland-dev
+	wayland-protocols
+	xorg-server
+	"
+options="!check" # Can't be run with release builds
+provides="mutter=$_pkgver-r$pkgrel"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-lang $pkgname-schemas::noarch"
+_commit="0f08f5aba4c9b5ac34b2d5711182d50b719d838e"
+source="mobile-mutter-$_commit.tar.gz::https://gitlab.gnome.org/verdre/mobile-mutter/-/archive/$_commit/mobile-mutter-$_commit.tar.gz
+	fixudev-req.patch
+	pcversion.patch
+	version.patch
+	"
+builddir="$srcdir/mobile-mutter-$_commit"
+
+prepare() {
+	default_prepare
+
+	sed -i "s/libmutter_api_version = '.*'/libmutter_api_version = '99'/g" meson.build
+}
+
+build() {
+	abuild-meson \
+		-Degl_device=true \
+		-Dudev=true \
+		-Dnative_backend=true \
+		-Dintrospection=true \
+		-Dxwayland_path=/usr/bin/Xwayland \
+		-Dremote_desktop=true \
+		-Dprofiler=false \
+		-Dtests=false \
+		-Dinstalled_tests=false \
+		. output
+	meson compile ${JOBS:+-j ${JOBS}} -C output
+}
+
+schemas() {
+	pkgdesc="Mutter schemas related files"
+	provides="mutter-schemas=$_pkgver-r$pkgrel"
+	depends=""
+
+	amove usr/share/glib-2.0/schemas
+	amove usr/share/GConf/gsettings
+	amove usr/share/gnome-control-center/keybindings
+}
+
+lang() {
+	default_lang
+	provides="mutter-lang=$_pkgver-r$pkgrel"
+}
+
+dev() {
+	default_dev
+
+	provides="mutter-dev=$_pkgver-r$pkgrel"
+}
+
+package() {
+	DESTDIR="$pkgdir" meson install --no-rebuild -C output
+}
+
+sha512sums="
+715c3efbbf416a11ae0a723184d1e018d3679c876bc419f110da1200f9dad3b7719255ac81cca301cff55e16ba36578bc9906805599ff009faeebf9455f5bcb1  mobile-mutter-0f08f5aba4c9b5ac34b2d5711182d50b719d838e.tar.gz
+6f21171bbd0ad0fc67cbaf5fb1478b22b482a9ae33b9328cc51a5dd31bcf7d95cd41e6cbbac21d3d8801cc064a62a64ae38ed7d0501ab605b861058c32f3bc30  fixudev-req.patch
+bb46a4692aaff0c9e6092d1ba80d19b336035e983f0f20a437a586757bc2530860f50fbd46b09f73e88f0dd80ea7188d1df467b8f762918717785e618b6e9c4b  pcversion.patch
+a9a82e945081480ae7ce59098aa3e46c87f5ea97481bd4c4933b3ef0a1757492ecb6e8453e8a2f74fb42edd51d39f76aaf9ef45ad8c52008acd6bbcbec219f83  version.patch
+"
diff --git a/systemd/mutter-mobile/fixudev-req.patch b/systemd/mutter-mobile/fixudev-req.patch
new file mode 100644
index 0000000000000000000000000000000000000000..93753ae0dbf323f9d2104be956f8fa2c1e83ed2a
--- /dev/null
+++ b/systemd/mutter-mobile/fixudev-req.patch
@@ -0,0 +1,16 @@
+Apparently the version limit is only required for systemd udev, it works
+just fine with our version of eudev.
+
+diff --git meson.build meson.build
+index dc210e6..6e080ca 100644
+--- a/meson.build
++++ b/meson.build
+@@ -168,7 +168,7 @@ endif
+ 
+ have_libgudev = get_option('udev')
+ if have_libgudev
+-  libudev_dep = dependency('libudev', version: udev_req)
++  libudev_dep = dependency('libudev')
+   gudev_dep = dependency('gudev-1.0', version: gudev_req)
+ endif
+ 
diff --git a/systemd/mutter-mobile/pcversion.patch b/systemd/mutter-mobile/pcversion.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d6b3f32f81d52abf47b2d11fd95573c210f2b91c
--- /dev/null
+++ b/systemd/mutter-mobile/pcversion.patch
@@ -0,0 +1,14 @@
+apk-tools 2.12.10 fails with this in a .pc depends file
+diff --git a/meson.build b/meson.build
+index 3550496..15b9e7d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -25,7 +25,7 @@ uprof_req = '>= 0.3'
+ pango_req = '>= 1.46.0'
+ cairo_req = '>= 1.10.0'
+ pangocairo_req = '>= 1.20'
+-gsettings_desktop_schemas_req = '>= 40.alpha'
++gsettings_desktop_schemas_req = '>= 40'
+ json_glib_req = '>= 0.12.0'
+ xcomposite_req = '>= 0.4'
+ xkbcommon_req = '>= 0.4.3'
diff --git a/systemd/mutter-mobile/version.patch b/systemd/mutter-mobile/version.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7fc2b946d992b39d2d921a7ebd59b28fdbb246a9
--- /dev/null
+++ b/systemd/mutter-mobile/version.patch
@@ -0,0 +1,17 @@
+diff --git a/meson.build b/meson.build
+index 80e1fc70e..1a3ca564f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,10 +1,10 @@
+ project('mutter', 'c',
+-  version: '45.rc',
++  version: '45_rc',
+   meson_version: '>= 0.60.0',
+   license: 'GPLv2+'
+ )
+ 
+-split_version = meson.project_version().split('.')
++split_version = meson.project_version().split('_')
+ 
+ # API version, bump each development cycle
+ libmutter_api_version = '13'