Как стать автором
Обновить

Комментарии 6

Подскажите, пожалуйста, если мне нужно скомпилировать что-то для чего нет пакетов. Но есть зависимости. Я - разработчик.

То насколько это геморно на Nix?

Сейчас использую Calculate Linux, ранее Gentoo.

Второй вопрос: у меня есть многопользовательская машина. Насколько сложно будет для каждой группы пользователей создать своё окружение со своей версией php, mysql и т.п.

Меня интересует можно ли это сделать без дубляции файлов для каждого пользователя, при условии что эти пользователи используют одинаковые версии.

По первому вопросу — пакеты можно делать самостоятельно, так поступает большинство разработчиков. Для этого надо освоить язык программирования Nix и разобраться в деталях.

Есть неофициальная документация по этому вопросу, Nix Pills. Сейчас я её перевожу и публикую здесь на Habr. Можете прочитать быстро в оригинале, если владеете английским, или подождите, где-то в течение пары месяцев я закончу.

По второму вопросу — но машине одно хранилище пакетов Nix, в каталоге /nix/store, так что пакеты дублироваться не будут. Правда, есть тонкость. На обычных дистрибутивах, чтобы использовать Nix, надо зайти под пользователем nix. На NixOS это может быть действительно многопользовательская система.

С другой стороны, вам может быть, и не надо именно так детально управлять конфигурацией пользователей. В каждый проект можно сложить по файлу shell.nix. Перед работой запускать nix-shell, а по окончании выходить из него. В shell.nix описать, какие именно пакеты нужны для работы. Это окружение смогут разделить все участники проекта.

Да, вопросы можно задать в группе Tg, посвящённой Nix и NixOS: https://t.me/ru_nixos

Я не на все могу ответить, потому что я программист и у меня конфиги очень простые, буквально на несколько строк.

Пробую писать код в среде Nix на C++. Как указать пути к заголовочным файлам нестандартных библиотек, установленных через Nix? Я так понимаю, что нужно написать какую-то Nix-конфигурацию в корне проекта?

Да, обычно создают файл shell.nix, где получают пути к деривациям (пакетам) по именам.

Далее можно их добавить в существующие переменные окружения, либо описать новые. Я не силён в gcc, кажется, он использует переменные C_INCLUDE_PATH и CPLUS_INCLUDE_PATH.

Затем в каталоге запускаете nix-shell, выполняется shell.nix и у вас воссоздаётся нужная среда для разработки.

Я так и думал. Супер! Спасибо! Это должно быть удобно. Буду дальше разбираться.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории