Если вы пользуетесь NixOS, то наверняка слышали о Nixpkgs — огромной коллекции программных пакетов. Она позволяет устанавливать практически всё, что угодно, в вашей системе NixOS. Но когда что-то становится очень большим, управлять этим может быть сложно. В этом вам поможет Ekapkgs — он делает всё более организованным и эффективным.
Представьте, что Nixpkgs — это большой захламлённый шкаф, в котором хранятся сотни тысяч программных пакетов. Он хорошо работает, но поддерживать в нём порядок и вносить большие изменения может быть сложно. Ekapkgs пытается решить эту проблему.
Ekapkgs — это полирепозиторий, созданный на основе Nixpkgs. Вместо того чтобы хранить все пакеты в одной большой коллекции, Ekapkgs разделяет их на более мелкие, хорошо организованные разделы, называемые репозиториями.
Вот как будут организованы эти репозитории (или боксы):
Основная цель — улучшить организацию и упростить обслуживание. В Nixpkgs есть много похожих, но немного отличающихся способов выполнения задач. Разделив обязанности между небольшими репозиториями, будет проще управлять ими и поддерживать высокое качество.
Другая цель — более быстрое внедрение улучшений и изменений. В Nixpkgs для внесения крупных обновлений требуется длительный процесс запроса комментариев (RFC). Это может занять много времени и не всегда может быть одобрено. Ekapkgs ускорит этот процесс с помощью предложений по целенаправленному улучшению (EEP).
Эти предложения будут рассмотрены специальной командой, которая оперативно предоставит обратную связь и примет решения. Поскольку репозитории будут меньше, обновления будут выходить быстрее, а тестировать новые идеи будет проще.
Иногда в Nixpkgs при внесении серьёзных изменений необходимо перестраивать всё. Это может быть медленным и вызывать проблемы. Ekapkgs стремится сократить количество таких масштабных обновлений, изолируя наборы пакетов.
Даже если corepkgs изменится, это затронет лишь несколько тысяч пакетов, что избавит от необходимости в сложном процессе «подготовки». Вместо этого обновления будут применяться осторожно, путём непосредственного обновления источников программного обеспечения.
В Nixpkgs качество программного обеспечения зависит от отдельных разработчиков. Автоматизированные проверки (например, ofBorg) выявляют только основные ошибки сборки. В Ekapkgs будет представлен инструмент под названием eka-ci. Этот инструмент предоставит подробную информацию об обновлениях программного обеспечения. Он будет проверять:
Это сделает проверку обновлений более простой и надёжной. В разных репозиториях также будут разные стандарты качества, поэтому пользователи будут знать, чего ожидать.
В Nixpkgs пользователи могут добавлять собственное программное обеспечение с помощью наложений. Ekapkgs улучшит эту функцию, позволив пользователям включать определённые репозитории, например corepkgs
, в систему Ekala.
Также появится функция под названием config.overlays.<scope>
, которая позволит пользователям лучше контролировать добавление или изменение пакетов в определённых областях (например, Python или CUDA).
Ekapkgs создаст стабильное ядро с репозиториями lib
и corepkgs
и позволит реализовывать новые идеи и проводить эксперименты в userpkgs
. Пользователи могут выбрать:
Ekapkgs берёт лучшее из Nixpkgs и делает лучше:
Таким образом, проект Ekapgs направлен на то, чтобы сделать упаковку программного обеспечения более эффективной, надёжной и удобной для пользователей для всех.