pmaports/main
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
..
0xffff {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
abootimg {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
abuild-sign-noinclude */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
adsp-audio treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
boot-deploy main/boot-deploy: upgrade to 0.23.0 2026-02-11 14:55:16 +00:00
bootmac main/bootmac: upgrade to 0.7.1 2026-02-07 23:56:13 +00:00
bootrr main/bootrr: upgrade to git20240706 2026-03-12 19:17:32 +00:00
cros-keyboard-map */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
deviceinfo-converter main/deviceinfo-converter: profile.d script fixes 2026-02-26 03:00:27 +00:00
devicepkg-dev main/devicepkg-dev: add comment about modules-extra-initfs 2026-02-04 15:29:18 +00:00
devicepkg-utils main/devicepkg-utils: remove cmdline_append from example deviceinfo 2026-01-27 12:33:05 -08:00
dint main/dint: upgrade to 0.2.0 2026-03-31 17:28:23 +02:00
dtbloader main/dtbloader: upgrade to 1.5.3 2026-02-14 18:05:17 +05:00
dtbtool */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
dtbtool-exynos {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
dtbtool-sprd */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
f0rmz */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
gcc4 {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
gcc6 {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
gnome-shell-theme-e-ink */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
hello-world */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
hello-world-rust */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
hello-world-wrapper */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
hisi-wlan */*: fix invalid maintainer comment 2026-01-15 11:15:21 +00:00
hwtest */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
iskey */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
ldpath {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
librem5-agps */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
lk2nd main/lk2nd: upgrade to 22.0 2026-02-27 16:39:27 +00:00
make-dynpart-mappings */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
mdss-fb-init-hack */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
mipi-dbi-cmd */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
mkbootimg-osm0sis {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
mobile-config-thunderbird */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
msm-fb-refresher treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
msm-firmware-loader {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
mtk-mkimage treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
ofonoctl */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
pbsplash */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
pinephone-callaudiod */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
postmarketos-android-recovery-installer */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-artwork */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-base main/postmarketos-base: move udev.conf to /usr/lib/udev/ 2026-04-02 20:29:28 +00:00
postmarketos-base-downstream main/postmarketos-base-downstream: enable msm-modem-downstream openrc service on post-install 2026-02-20 15:31:54 +01:00
postmarketos-base-eink */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-base-nofde main/postmarketos-base-nofde: set provides version 2025-11-30 15:50:26 +01:00
postmarketos-base-ui main/postmarketos-base-ui: add ModemManager config override 2026-02-01 13:17:40 -08:00
postmarketos-base-ui-cage */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-base-ui-gnome main/postmarketos-base-ui-gnome: remove fractional scaling override 2026-03-17 11:31:57 +00:00
postmarketos-base-ui-gnome-mobile main/postmarketos-ui-phosh: recommend phosh-tour 2026-03-08 20:54:00 +01:00
postmarketos-base-ui-plasma main/postmarketos-base-ui-plasma: move plasma-camera to -ui-plasma-mobile 2026-04-01 14:18:40 +02:00
postmarketos-boot-hwtest {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
postmarketos-bootsplash */*: rely on abuild's systemd integration 2026-04-01 21:40:48 +00:00
postmarketos-config-nftables main/postmarketos-config-nftables: add rule for rdp 2026-03-27 15:54:13 +00:00
postmarketos-cros-common */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-demos */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-dev */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-duranium main/postmarketos-duranium: new aport 2026-04-03 19:23:17 +00:00
postmarketos-initramfs main/postmarketos-initramfs: install udev.conf from /usr/lib/udev/udev.conf 2026-04-02 20:29:28 +00:00
postmarketos-install-recommends */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
postmarketos-installkernel */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-keys {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
postmarketos-mkinitfs main/postmarketos-mkinitfs: upgrade to 2.9.0 2026-02-11 14:55:16 +00:00
postmarketos-mkinitfs-hook-apx */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-mkinitfs-hook-ci main/postmarketos-mkinitfs-hook-ci: add myself as Co-Maintainer 2026-03-12 19:17:36 +00:00
postmarketos-mkinitfs-hook-debug-shell {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
postmarketos-mkinitfs-hook-kernel-panic treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
postmarketos-mkinitfs-hook-maximum-attention treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
postmarketos-mkinitfs-hook-netboot main/postmarketos-mkinitfs-hook-netboot: remove maintainer 2026-01-23 17:33:02 +01:00
postmarketos-mkinitfs-hook-verbose-initfs treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
postmarketos-qemu-common */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-release-upgrade main/postmarketos-release-upgrade: fix Ollie's email address 2026-01-15 11:05:38 +00:00
postmarketos-release-upgrade-notification main/postmarketos-release-upgrade-notification: new aport 2026-01-27 15:20:22 +00:00
postmarketos-test main/postmarketos-test: add myself as Co-Maintainer 2026-03-12 19:17:36 +00:00
postmarketos-tweaks-setting-definitions */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-buffyboard */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-cage */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-ui-console */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-cosmic main/postmarketos-ui-cosmic: update pmos-base-ui pw audio name 2026-01-18 12:20:33 +00:00
postmarketos-ui-fbkeyboard main/postmarketos-ui-fbkeyboard: update maintainer 2026-03-03 22:11:33 +01:00
postmarketos-ui-gnome */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-gnome-mobile main/postmarketos-ui-phosh: recommend phosh-tour 2026-03-08 20:54:00 +01:00
postmarketos-ui-i3wm */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-kodi */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-lomiri main/postmarketos-ui-lomiri: various fixes and improvements 2026-02-26 03:00:27 +00:00
postmarketos-ui-lxqt */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-mate */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-mediaberry */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-moonlight */*: remove maintainership by inactive maintainers 2026-01-15 11:05:38 +00:00
postmarketos-ui-niri */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-openbox */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-os-installer main/postmarketos-ui-os-installer: switch from doas to sudo 2026-04-02 22:35:35 +00:00
postmarketos-ui-phosh main/postmarketos-ui-phosh: recommend phosh-tour 2026-03-08 20:54:00 +01:00
postmarketos-ui-plasma-bigscreen main/postmarketos-ui-plasma-bigscreen: re-enable 2026-03-31 17:48:41 +00:00
postmarketos-ui-plasma-desktop main/postmarketos-ui-plasma-desktop: only depend on plasma-login-manager for systemd 2026-03-03 19:16:53 +00:00
postmarketos-ui-plasma-mobile */*: rely on abuild's systemd integration 2026-04-01 21:40:48 +00:00
postmarketos-ui-retroarch */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-shelli */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-sway */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-sxmo-de-dwm */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-sxmo-de-i3 */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-sxmo-de-river */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-sxmo-de-sway */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-weston */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-ui-xfce4 */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-usb-moded main/postmarketos-usb-moded: improve systemd unit override 2026-03-20 17:05:42 -07:00
postmarketos-welcome */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
postmarketos-zram main/postmarketos-zram: override vm.min_free_kbytes if >= 1GB RAM 2026-03-12 15:55:24 +00:00
pxa-mkbootimg treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
qca-swiss-army-knife */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
reboot-mode */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
shutdown-clear-rtc-wakealarm treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
sm-sparse-image-tool */*: rebuild against python 3.14 2026-03-31 14:25:42 +00:00
swclock-offset main/swclock-offset: upgrade to 0.3.0 2026-02-11 14:18:44 +00:00
tizen-mkdzimage treewide: add !check to options of packages without tests 2026-02-22 15:39:25 +00:00
ttyescape */*: move to maintainer= variables 2026-01-12 17:01:35 +01:00
unixbench */*: update my name and email 2026-01-11 18:52:28 +01:00
unl0kr main/unl0kr: upgrade to 3.5.1 2026-03-06 19:51:31 +00:00
watchdog-kick {main,modem,device/community}: add missing maintainer lines 2026-01-03 18:36:33 +00:00
wcnss-wlan */*: fix invalid maintainer comment 2026-01-15 11:15:21 +00:00
woa-firmware-yoinker */*: rely on abuild's systemd integration 2026-04-01 21:40:48 +00:00