diff --git a/testing/typstyle/APKBUILD b/testing/typstyle/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..b894f7a26685e4dfe966f3ffa13b5ea75e91af6d
--- /dev/null
+++ b/testing/typstyle/APKBUILD
@@ -0,0 +1,40 @@
+maintainer="Hoang Nguyen <folliekazetani@protonmail.com>"
+pkgname=typstyle
+pkgver=0.12.14
+pkgrel=0
+pkgdesc="Beautiful and reliable typst code formatter"
+url="https://enter-tainer.github.io/typstyle/"
+arch="all"
+license="Apache-2.0"
+makedepends="cargo cargo-auditable openssl-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/Enter-tainer/typstyle/archive/refs/tags/v$pkgver.tar.gz
+	skip-sensitive-test.patch
+	"
+
+export OPENSSL_NO_VENDOR=1
+export PKG_CONFIG_ALL_DYNAMIC=1
+
+prepare() {
+	default_prepare
+
+	cargo fetch --target="$CTARGET" --locked
+}
+
+build() {
+	cargo auditable build --frozen --release --bin typstyle
+}
+
+check() {
+	# Remove the default `consistency` feature in typstyle-tests crate.
+	# The feature enables running repo-e2e tests, which easily panic on our builder.
+	cargo test --frozen --workspace --no-default-features
+}
+
+package() {
+	install -Dm755 target/release/typstyle -t "$pkgdir"/usr/bin/
+}
+
+sha512sums="
+76ed0780e03fcb4b22774fe01ae3d8ba6e47e0330d8c6635ac0d94acf507b199f110581d85e443738b8ffc678554e02deaf5be1bc6f7ad3775e6c23212e24dc9  typstyle-0.12.14.tar.gz
+466fedd6eef1fc6bf3408a4836e7271b797131761d046096da94f986c00e897bfcf14416758dd6469a08dbf2884e28a4467b929554422b866317b56d235ee0ce  skip-sensitive-test.patch
+"
diff --git a/testing/typstyle/skip-sensitive-test.patch b/testing/typstyle/skip-sensitive-test.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d28f863574ff0f24277c58716c1f2c59d4d97e2d
--- /dev/null
+++ b/testing/typstyle/skip-sensitive-test.patch
@@ -0,0 +1,15 @@
+The test is sensitive about the order of formatted files listed in the snapshot,
+compared to the actual stdout output when it is run.
+
+diff --git a/crates/typstyle/tests/test_format_all.rs b/crates/typstyle/tests/test_format_all.rs
+index 1b87b06..c069f47 100644
+--- a/crates/typstyle/tests/test_format_all.rs
++++ b/crates/typstyle/tests/test_format_all.rs
+@@ -72,6 +72,7 @@ fn test_all_2() {
+ }
+ 
+ #[test]
++#[ignore]
+ fn test_all_0_check() {
+     let mut space = Workspace::new();
+     space.write_tracked("a.typ", "#let a  =  0");