diff --git a/mkosi.extra/usr/bin/_kde-linux-volatile-flatpak b/mkosi.extra/usr/bin/_kde-linux-volatile-flatpak new file mode 100755 index 0000000..8ae6c14 --- /dev/null +++ b/mkosi.extra/usr/bin/_kde-linux-volatile-flatpak @@ -0,0 +1,29 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: 2024 Harald Sitter + +set -eux + +if ! grep "kdeos.live=1" /proc/cmdline; then + echo "kdeos.live=1 not in cmdline" + exit 1 +fi + +if [ "$(readlink --canonicalize /dev/disk/by-label/KDEOSLive)" != "$(readlink --canonicalize /dev/gpt-auto-root)" ]; then + echo "gpt-auto-root is not KDEOSLive" + exit 1 +fi + +# Replicate what systemd-volatile-root does. Unfortunately we can't just use the volatile root because you can't +# overlay with an overlay. This means we potentialy claim a lot of RAM (25% for root + 15% for flatpaks). +# Not ideal but there's no way I can see to get access to the volatile-sysroot (it gets unmounted and removed +# before systemd-volatile-root exits). + +mkdir --mode 0700 /run/kde-linux/ +mkdir --mode 0700 /run/kde-linux/overlay-var-lib-flatpak +mount -t tmpfs tmpfs /run/kde-linux/overlay-var-lib-flatpak -o mode=0755,size=15%,nr_inodes=1m +mkdir --mode 0755 /run/kde-linux/overlay-var-lib-flatpak/upper +mkdir --mode 0755 /run/kde-linux/overlay-var-lib-flatpak/work + +mount -t overlay overlay /var/lib/flatpak \ + -o lowerdir=/var/lib/flatpak,upperdir=/run/kde-linux/overlay-var-lib-flatpak/upper,workdir=/run/kde-linux/overlay-var-lib-flatpak/work diff --git a/mkosi.extra/usr/lib/systemd/system-generators/kde-linux-live-generator b/mkosi.extra/usr/lib/systemd/system-generators/kde-linux-live-generator index f2c6a33..06fe72f 100755 --- a/mkosi.extra/usr/lib/systemd/system-generators/kde-linux-live-generator +++ b/mkosi.extra/usr/lib/systemd/system-generators/kde-linux-live-generator @@ -44,7 +44,7 @@ cat <<- EOF > "$normal_dir/var-lib-flatpak.mount" # Generated by $(basename "$0") [Unit] Description=Mount unit for /var/lib/flatpak -Before=systemd-volatile-root.service +Before=kde-linux-volatile-var-lib-flatpak.service [Mount] What=/dev/disk/by-label/KDEOSLive diff --git a/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset b/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset index 21bb037..d537641 100644 --- a/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset +++ b/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset @@ -13,6 +13,7 @@ enable cups.service enable kde-linux-btrfs.service enable kde-linux-live-setup.service +enable kde-linux-volatile-var-lib-flatpak.service enable plasma-setup-live-system.service enable kdeos-overlay.service enable var-lib-snapd-snap.mount diff --git a/mkosi.extra/usr/lib/systemd/system/kde-linux-volatile-var-lib-flatpak.service b/mkosi.extra/usr/lib/systemd/system/kde-linux-volatile-var-lib-flatpak.service new file mode 100644 index 0000000..69f2fe3 --- /dev/null +++ b/mkosi.extra/usr/lib/systemd/system/kde-linux-volatile-var-lib-flatpak.service @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: 2024 Harald Sitter + +[Unit] +Description=Volatile /var/lib/flatpak File Systems +Before=display-manager.service +After=var.mount +ConditionKernelCommandLine=kdeos.live=1 + +[Service] +ExecStart=/usr/bin/_kde-linux-volatile-flatpak + +[Install] +WantedBy=multi-user.target