Возможности NixOS и GuixSD в сравнении с Gentoo
Сам я использую Gentoo на десктопе примерно 8 лет. Сейчас заинтересовался дистрибутивами NixOS и GuixSD - очень уж фантастические возможности они обещают, судя по описанию. Прошу отозваться тех, кто использует эти дистрибутивы. Хочу задать вопросы:
1. Насколько сильно несоблюдение FHS портит жизнь пользователю? Часто ли в процессе написания nixlang-конфига приходится мучиться с поиском причин, по которым программа не работает в виртуальном окружении, поиском нужных переменных типа LUA_PATH_OVERRIDE_ЧТО_ТО_ТАМ, которые следует глобально экспортировать и так далее? И что приходится делать, если такой переменной нет в принципе, а программа из апстрима жестко прибита гвоздями к FHS? Патчить код?
2. Как обстоят дела со всеми этими «консистентностями», «DevOps-friendly», «декларативностями», «бит-в-бит-точностью» и так далее в следующем случае? Случай: пользователь поставил Firefox 25, которая в /home хранит preferences.js, запустил, закрыл, потом поставил Firefox 53 вместо 20, запустил, закрыл. Если, допустим, формат preferences.js для этих версий очень разный, то что будет в итоге? Не испортится ли конфиг в /home? И можно ли декларативно хранить информацию о всех файлах в /home и /root, чтобы в случае их потери можно было nix-скриптом DevOps-дружелюбно перенастроить весь софт со сбитыми юзерскими настройками?
3. Я слышал, что там какую-то директорию наподобие /nix/... то ли нельзя модифицировать, то ли нельзя даже читать. Это правда? Если да, то как эта защита от юзера и рута реализована - xattrs, chmod или ACL? Есть ли в системе в принципе места, которые модифицировать можно только через загрузку с LiveDVD и chroot вовнутрь?
4. Не хочется ли пользователю NixOS стать из ДевОпса обратно админом локалхоста? Иными словами, что вам привычнее сейчас - править любые мелочи в /etc руками или править/дописывать декларативные nix-скрипты, после чего «пересобирать» систему, чтобы применились nix-скрипты? Допустим, нужно что-то мелкое срочно поправить в NetworkManager-хуке или самописном cron-скрипте, или X11-конфиге, или /etc/wgetrc.
5. Удается ли в целом добиться пресловутой бит-в-бит-ДевОпс-френдли-консистентности? Пример. Допустим, я удалил некоторые файлы-симлинки из /usr/lib, понапихал лишних файлов в /etc/X11, поменял mode некоторым файлам в /usr/share, также некоторым случайным файлам в /opt поменял стандартные атрибуты, расширенные атрибуты, owner-юзера, группу, ACL. Могу ли запустить менеджер пакетов, чтобы он без rollback'ов мне восстановил все в системе, как было? Ну то есть чтобы он прошелся по системе, проверил у всех файлов md5sum, ACL, mode, owner, group, стандартные атрибуты и xattrs, и в случае несоответствия пересобрал пакет из Hydra/AWS или локально. Консистентность такого высокого уровня NixOS может обеспечить сейчас?
6. Супер-бит-в-бит-ДевОпс-консистентность в NixOS может обеспечить проверку типа файлов? Пример. Допустим, было 3 обычных файла - /etc/issue, /etc/issue.logo, /etc/issue.new_logo - которые мне накатил пакетный менеджер при установке чего-нибудь. Я /etc/issue из файла превратил в симлинк, а /etc/issue.logo из файла превратил в юниксовый доменный IPC-сокет, а /etc/issue.new_logo из файла превратил в директорию. Поймет ли пакетный менеджер, что тут что-то не так? Сможет ли он сам мне вернуть это все, как было?
7. Планируют ли мейнтейнеры дистрибутива Gentoo в ближайшем будущем развивать reproducible builds, проверку консистентности (имею в виду проверку того, что emerge --emptytree @world пересоздает в / абсолютно все файлы, лежащие в stage3-тарболле), integrity и портировать на Gentoo возможности GuixSD/NixOS?
sudo cast frigate_freedom Camel Pinkbyte