No description
Find a file
Clayton Craft dceffe8a46
main/postmarketos-duranium: new aport
Duranium is an immutable variant of postmarketOS that uses systemd's
image-based OS model: dm-verity verified /usr, A/B slots managed by
systemd-sysupdate, LUKS2-encrypted root, and systemd-boot with UKIs.

This package ships systemd-repart, systemd-sysusers, tmpfiles, and
first-boot service configuration needed at runtime in both the initramfs
and the booted system, as well as sysupdate transfer definitions for
finding and upgrading images. Build-time repart and sysupdate config
lives in the mkosi config repo[1].

The pmOS initramfs is not used. Rather than re-implement partition
setup, verity, factory reset, and switch_root in shell script and
risk regressions for mutable pmOS installs, an initramfs is built by
mkosi containing systemd. This lets the standard systemd initrd
machinery handle everything, with no modifications to the pmOS
initramfs required.

On Android devices, subpartition logic from the pmOS initramfs is
essentially copied into a new systemd unit that runs in the initramfs
and sets up subpartitions so that they are available to tooling that
runs later in the boot process. In the future, this functionality should
be moved upstream into systemd.

Boot flows:

"Normal boot": the verified /usr partition is mounted and the LUKS
root partition is unlocked (empty passphrase by default, with fallback
to a graphical unlock prompt for user-set passphrases). switch_root
hands off to the real rootfs.

"First boot": systemd-repart creates the root partition, always as a
LUKS volume with an empty passphrase. After switch_root, a first-boot
app runs before the display manager to collect a username and password,
create the user account, and optionally set a LUKS passphrase. The
passphrase can also be changed later via systemd-cryptenroll or
cryptsetup.

"Factory reset": detected in the initramfs by systemd, which uses
systemd-repart to wipe and recreate the root partition. Boot then
continues with the first boot flow above. Factory reset can be triggered
while booting in the rootfs by starting a systemd unit that configures
an EFI variable to signal to the initramfs on next boot.

Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7059>
2026-04-03 19:23:17 +00:00
.ci CI: Run dint job on all files on deviceinfo_schema.toml change 2026-03-20 01:57:32 +00:00
.githooks githooks/pre-commit: remove file size check 2025-12-22 23:53:09 +00:00
.gitlab/issue_templates .gitlab: update issue template to reflect new default branch 2026-03-15 17:47:41 +00:00
.well-known well-known/funding-manifest-urls: new file (MR 6074) 2025-01-20 18:59:41 +01:00
cross cross/systemd-boot-x86: upgrade to 260.1 2026-03-25 12:31:40 +00:00
device device-fairphone-fp6: update for DPU & GPU support 2026-04-03 17:58:26 +00:00
docs docs: device-categorization: new main requirements 2026-03-29 16:47:50 +02:00
extra-repos/systemd systemd/systemd: add patches to fix sysupdate issues 2026-04-02 13:31:46 -07:00
main main/postmarketos-duranium: new aport 2026-04-03 19:23:17 +00:00
modem */*: rely on abuild's systemd integration 2026-04-01 21:40:48 +00:00
temp temp/plasma-bigscreen: upgrade to 6.6.80_git20260402 2026-04-02 19:19:26 +02:00
.clang-format Add .clang-format file (!465) 2019-06-26 22:36:15 +02:00
.ecrc CI: .ecrc: Exclude temp from check (MR 4858) 2024-02-27 08:24:53 -08:00
.editorconfig editorconfig: use spaces instead of tabs for markdown 2025-11-05 11:21:30 +00:00
.gitignore docs: add auto-generated deviceinfo reference 2025-11-23 20:26:30 +00:00
.gitlab-ci.yml CI: Run dint job on all files on deviceinfo_schema.toml change 2026-03-20 01:57:32 +00:00
.mailmap */*: update my name and email 2026-01-11 18:52:28 +01:00
channels.cfg channels.cfg: branch_pmaports: master -> main 2026-03-15 12:39:44 +01:00
COMMITSTYLE.md editorconfig: use spaces instead of tabs for markdown 2025-11-05 11:21:30 +00:00
deviceinfo_schema.toml deviceinfo_schema: update reference to configfs mount point 2026-03-20 17:05:42 -07:00
kconfig-generic.toml kconfig-generic: add, amdgpu, intel, nouveau, and nvme configs 2026-03-23 17:49:06 +01:00
kconfigcheck.toml kconfigcheck: version gate DRM_FBDEV_EMULATION 2026-03-19 22:21:03 +01:00
LICENSE Add GPLv3 again 2018-08-23 21:44:22 +02:00
pmaports.cfg pmaports.cfg: Bump pmbootstrap minimum version to 3.9.0 2026-01-24 10:30:46 +01:00
README.md readme: update link to approval rules 2026-04-02 05:18:48 +00:00

postmarketOS aports repository

This repository contains the APKBUILD files for postmarketOS-specific packages, along with the required patches and scripts, if any.

There are many more packages defined in the Alpine Linux aports on which these packages depend.

Helpful resources:

Git Hooks

You can find some useful git hooks in the .githooks directory. To use them, run the following command after cloning this repository:

git config --local core.hooksPath .githooks