diff --git a/device/testing/device-pine64-pinenote/001-pinenote-gschema.override b/device/testing/device-pine64-pinenote/001-pinenote-gschema.override
new file mode 100644
index 0000000000000000000000000000000000000000..c0199c470715330cc9083c258573c7ee0b0a7767
--- /dev/null
+++ b/device/testing/device-pine64-pinenote/001-pinenote-gschema.override
@@ -0,0 +1,2 @@
+[org.gnome.desktop.interface]
+gtk-theme='postmarketos-paper'
diff --git a/device/testing/device-pine64-pinenote/APKBUILD b/device/testing/device-pine64-pinenote/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..529c90e26fa40339910238ff1c94e1992a650ad1
--- /dev/null
+++ b/device/testing/device-pine64-pinenote/APKBUILD
@@ -0,0 +1,58 @@
+# Maintainer: Caleb Connolly <caleb@connolly.tech>
+pkgname=device-pine64-pinenote
+pkgdesc="Pine64 PineNote"
+pkgver=1
+pkgrel=0
+url="https://postmarketos.org"
+license="MIT"
+arch="aarch64"
+options="!check !archcheck"
+depends="
+	linux-pine64-pinenote
+	mesa-dri-gallium
+	postmarketos-base
+"
+# jankily depend on the firmware package to overwrite
+# the postmarketos-splash config
+makedepends="devicepkg-dev firmware-pine64-pinenote"
+source="deviceinfo
+	extlinux.conf
+	001-pinenote-gschema.override
+	rootston.ini
+"
+subpackages="$pkgname-nonfree-firmware:nonfree_firmware $pkgname-phosh"
+
+build() {
+	devicepkg_build $startdir $pkgname
+}
+
+package() {
+	devicepkg_package $startdir $pkgname
+
+	install -Dm644 "$srcdir"/extlinux.conf "$pkgdir"/boot/extlinux.conf
+}
+
+nonfree_firmware() {
+	pkgdesc="WiFi, Bluetooth and display firmware"
+	depends="firmware-pine64-pinenote"
+	mkdir "$subpkgdir"
+}
+
+# Set the postmarketos-paper theme by default!
+phosh() {
+	install_if="$pkgname=$pkgver-r$pkgrel phosh"
+	depends="postmarketos-theme"
+
+	install -Dm644 "$srcdir"/rootston.ini \
+		"$subpkgdir"/etc/phosh/rootston.ini
+
+	install -Dm644 "$srcdir"/001-pinenote-gschema.override \
+		"$pkgdir"/usr/share/glib-2.0/schemas/001-pinenote.gschema.override
+}
+
+sha512sums="
+45cc17882baceb06b46ea3aadbbda115f7a1099c8c684a988a92c3badf6f5e23f7477ce64e19e1ca4b91c38848e2bac10e969779a34a4a2026d83fc9c693aeec  deviceinfo
+2aa3851b6a176cda5fd04a48e0ba2284c53e44f176cb3ee6dd382b590772d3decbf2eae8a87ed70f3f94caf11670a3ffdfa216381dbd37665cd81869af0cf5c9  extlinux.conf
+987c7ba6cf2fa41eb6ef4046577ba65542c0f05f7e897b2e6a568ded87290ef4f7b81b96dc48a296903cf38c2b9a421a1c8632ae528317cfb75e3b4d22eed4af  001-pinenote-gschema.override
+20f50e7e786a35583ee1652ba3a0d250c169f7cc434adb679370593099362a956d6ee7bbc8c932c713eefd51a503c701ece19b536dc1cf56c2975595f049d153  rootston.ini
+"
diff --git a/device/testing/device-pine64-pinenote/deviceinfo b/device/testing/device-pine64-pinenote/deviceinfo
new file mode 100644
index 0000000000000000000000000000000000000000..be09dcbec1add4efdf2dc188bbc6e00263455753
--- /dev/null
+++ b/device/testing/device-pine64-pinenote/deviceinfo
@@ -0,0 +1,30 @@
+# Reference: <https://postmarketos.org/deviceinfo>
+# Please use double quotes only. You can source this file in shell
+# scripts.
+
+deviceinfo_format_version="0"
+deviceinfo_name="Pine64 PineNote"
+deviceinfo_manufacturer="Pine64"
+deviceinfo_codename="pine64-pinenote"
+deviceinfo_year="2021"
+deviceinfo_dtb="rockchip/rk3566-pinenote"
+deviceinfo_arch="aarch64"
+deviceinfo_gpu_accelerated="true"
+
+# Device related
+deviceinfo_chassis="tablet"
+deviceinfo_keyboard="false"
+deviceinfo_external_storage="false"
+deviceinfo_screen_width="1872"
+deviceinfo_screen_height="1404"
+deviceinfo_getty="ttyS2;1500000"
+
+# initfs
+deviceinfo_modules_initfs="tps65185-regulator rockchip_ebc drm_kms_helper drm_shmem_helper pvi_waveform"
+
+# Bootloader related
+deviceinfo_flash_method="rkdeveloptool"
+deviceinfo_flash_sparse="true"
+
+deviceinfo_flash_rk_partition_kernel="cache"
+deviceinfo_flash_rk_partition_system="userdata"
diff --git a/device/testing/device-pine64-pinenote/extlinux.conf b/device/testing/device-pine64-pinenote/extlinux.conf
new file mode 100644
index 0000000000000000000000000000000000000000..b7d298cc79fe3ca492b4f3106e17840a7ed0272c
--- /dev/null
+++ b/device/testing/device-pine64-pinenote/extlinux.conf
@@ -0,0 +1,9 @@
+timeout 10
+default postmarketOS
+menu title boot prev kernel
+
+label POSTMARKETOS
+  kernel /vmlinuz
+  fdt /rk3566-pinenote.dtb
+  initrd /initramfs
+  append earlycon console=tty0 console=ttyS2,1500000n8 PMOS_NO_OUTPUT_REDIRECT vt.default_red=0xFF,0xBC,0x4F,0xB4,0x56,0xBC,0x4F,0x00,0xA1,0xCF,0x84,0xCA,0x8D,0xB4,0x84,0x68 vt.default_grn=0xFF,0x55,0xBA,0xBA,0x4D,0x4D,0xB3,0x00,0xA0,0x8F,0xB3,0xCA,0x88,0x93,0xA4,0x68 vt.default_blu=0xFF,0x58,0x5F,0x58,0xC5,0xBD,0xC5,0x00,0xA8,0xBB,0xAB,0x97,0xBD,0xC7,0xC5,0x68 PMOS_FORCE_PARTITION_RESIZE
diff --git a/device/testing/device-pine64-pinenote/rootston.ini b/device/testing/device-pine64-pinenote/rootston.ini
new file mode 100644
index 0000000000000000000000000000000000000000..94f44a6156f45d4724ea0e3849e6e921c9259c1c
--- /dev/null
+++ b/device/testing/device-pine64-pinenote/rootston.ini
@@ -0,0 +1,6 @@
+# /etc/phosh/rootston.ini
+# Overwrites values set in /usr/share/phosh/phoc.ini
+
+# e-ink is an "Unknown" display type for now in mainline
+[output:Unknown-1]
+scale = 2.0