Omniflake: один flake, чтобы править всеми
One Nix flake to rule them all

Автор, известный скептик по отношению к flakes, представляет omniflake — один flake, который содержит почти 12 000 других flakes. Вместо того чтобы добавлять каждый flake как input, omniflake использует таблицу пинов (JSONL) и ленивую загрузку: вы получаете доступ к любому flake по требованию, не платя за неиспользуемые. В статье объясняется, как это работает благодаря ленивости Nix, описывается квадратичная проблема с именованием узлов в flake.lock и её исправление, а также показывается, как использовать omniflake для пакетов, оверлеев, модулей NixOS и даже из командной строки.
Я люблю идею федерации, но хочу простоты централизации. Как пользователь Nix, я хочу и торт, и съесть его: omniflake — мой торт.
- jchw
Я не совсем уверен, что это хорошая идея как таковая, но, чёрт возьми, какой смысл делать всё по-настоящему ленивым, если нельзя было бы. Я имею в виду, лично я регулярно использую 20-30 flake-входов для больших системных конфигураций, и меня это никогда особо не напрягало. Единственная реальная проблема, которая у меня есть, — это то, что переопределение Nixpkgs для избежания дубликатов иногда может сломаться, потому что зависимость может быть не готова для последней версии Nixpkgs, но пока это случалось только с nix-vim, который, возможно, и так должен быть в Nixpkgs в какой-то форме (хотя я давно им не пользовался, так что не уверен, каков статус).
Поскольку надо, я поискал и обнаружил, что по крайней мере один из моих флейков там есть, nix-binary-ninja, который является Nix-флейком для проприетарного дизассемблера/декомпилятора Binary Ninja. Классно. (Хотя, к сведению, хоть я им и пользуюсь, я не уверен, что действительно рекомендую его; он делает грубые вещи, чтобы заставить binja использовать системные библиотеки для лучшей интеграции, что сейчас ломает некоторые расширения. Ну что ж...)
- AyanamiKaine
Вау, выглядит очень круто!
Я обязательно попробую! Если что-то и ломает меня, так это постоянная погоня за какой-нибудь общей библиотекой, например, при разработке чего-то с использованием SDL3 и его GPU API.
- digdugdirk
Это потрясающе и подчёркивает забавный опыт использования NixOS, который одновременно восхищает и ужасает.
Кстати, этот автор в последнее время на волне! Так много интересных статей, я понятия не имею, как им удаётся совмещать технические статьи с ведением регулярного политического шоу на CNN.