Сейчас выдам нефильтрованный мыслепоток.
Даже если мы напишем pfs-pacman (не знаю как без С программистов) - придется переконвертировать всю арч репу в .pfs
Зачем этот титанический труд?
Во-первых, не придётся. Во-вторых, это делается автоматически.
Суть в чем. Итак, вы используете сборочные утилиты арча. (Или берете собранные арчепакеты, что то же самое.) Что происходит потом...
Пакеты (ванильные от арча + специфические для PRA) + конфигурация + releng для всего этого дела = производный от Арча дистрибутив. Дистрибутив этот логически разбит на модули типа "базовая система" + "иксы" + "настроенная рабочая среда" + "LAMP" и т.п.
Этот дистрибутив даже можно в таком виде поставить через pacman и получить обычную настольную систему. В этом месте "обычные дистрибутивы" останавливаются. Но поскольку ваша идея в том, чтобы использовать оверлеи, вы не останавливаетесь.
Модули, которые у нас имеются логически, что с ними делаем: пакеты разворачиваются в дерево каталогов и конвертируются в сжатые образы squashfs. Т.е. получаются модули уже в физическом воплощении. Конвертация выполняется полностью автоматически, тут никаких проблем возникнуть не должно.
Теперь у конечного пользователя есть выбор: использовать модульный подход с монтированием слоями или поставить пакеты традиционным способом.
Однако. Хотелось бы иметь единую точку управления конфигурацией системы. Пока у нас были только пакеты, ею был пакман. Теперь у нас черт знает что: кто-то отвечает за монтирование слоёв, кто-то отвечает за обновление модулей (если вообще кто-то будет за это отвечать), плюс еще можно поставить пакмановские пакеты поверх...
А выход следующий: надо научить пакмана понимать, что образ squashfs — это такой особый формат пакета. В этом случае на плечи пакмана снова можно возложить все задачи управления конфигурацией:
Когда пользователь делает "pacman -S какой-то-модуль", pacman:
* Ищет файл модуля в кэше.
* Автоматически скачивает его, если его нет.
* Видит, что это образ squashfs:
* * Монтирует его во временный каталог, читает из него данные о входящих в его состав пакетах, размонтирует. Регистрирует в своей базе данных установку одного виртуального пакета, который предоставляет (provides) все имена пакетов, из которых был собран этот модуль.
* * Делает симлинк на образ в специальном каталоге, указанном в настройках. Данный каталог служит местом, где перечисляются все установленные и смонтированные модули.
* * Запускает указанную в настройках команду для обновления слоёной точки монтирования.
При удалении через pacman такого модуля-пакета, соответственно, виртуальный пакет стирается из базы данных, а симлинк удаляется из каталога. Аналогично на плечи пакмана можно полностью возложить обновление системы.
При этом если даже кто-то хочет закатать в образ пакеты не арчевского происхождения, достаточно поместить в модуль немного метаинформации чтобы пакман признал его за "своего". Таким образом отслеживание зависимостей между всеми компонентами системы будет идти через единую базу данных.