Комментарии 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 и у вас воссоздаётся нужная среда для разработки.
Разрабатываем Nix в России