Поставим вопрос ребром.
Какие преимущества имеет Nix перед Flatpak на десктопе?
Опираюсь на такую статью
https://serokell.io/blog/what-is-nix
Интересно и достаточно доступно расписано про Nix. Но! Я не могу понять, чем это лучше Flatpak?
Вот такие преимущества у Nix:
-
Повторяемая сборка. С Flatpak, имея манифест, я могу делать сборку пакета в том окружении, которое прописано в манифесте, и получать гарантированно такой же пакет каждый раз. Не всегда это так, хеш коммита используемого SDK может в манифесте указываться а может нет, но если надо - то так делают.
-
Бинарный кеш - конечно же есть у Flatpak, только называется не кеш а сами пакеты. Кроме того есть все манифесты для их сборки в гите, и внутри каждого пакета. То есть все как у Nix.
-
Разные версии пакета одновременно. И там, и там это конечно же возможно.
-
Распределенная сборка. Flatpak точно так же можно собирать на любой другой машине, результат получится таким же, между машинами передается через OSTree который хеширует все файлы, гарантирует целостность копии и осуществляет атомарное обновление пакета.
-
Сборка без привилегий для пользователя. Точно так же flatpak-builder не требует никаких привилегий и не использует ничего из хостовой системы.
Как видим, все перечисленное в равной мере характерно для Nix и для Flatpak. Так в чем тогда преимущество Nix?
Далее - у Nix есть возможности еще и по управлению конфигами. Эта функциональность выходит за границы пакетного менеджера и у Flatpak вообще отсутствует. Я предлагаю пока разделить эти сферы, и обсудить отдельно непосредственно сборку и управление пакетами.
Необходимость наличия у пакетного менеджера возможностей по управлению конфигами лично для меня является спорной на данный момент.