Есть ли способ составить Nix Expressions для создания среды разработки для `nix-shell`

Допустим, я создаю проект Rails и создаю default.nix для nix-оболочки, которая создаст среду разработки для этого проекта через nix-shell .. Естественно, эта оболочка будет иметь любые зависимости, которые мне понадобятся для Ruby on Rails.

Теперь предположим, что я также создаю проект AngularJS и делаю то же самое для него, создавая default.nix для запуска через nix-shell ..

Учтите, что в будущем у меня может быть проект, использующий и Angular, и Ruby on Rails (гипотетически). Есть ли способ взять default.nix моего проекта Angular и default.nix моего проекта Rails и скомпоновать их вместе, не прибегая к копированию-вставке?

Далее предположим, что этому проекту позже могут потребоваться другие зависимости. Могу ли я сделать что-то вроде сохранения Rails default.nix как rails-env.nix и Angular default.nix как angular-env.nix, а затем включить их в новый default.nix для моего проекта Rails-Angular + Extras, чтобы я мог иметь обе зависимости, объявленные в rails-env.nix и angular-env.nix, но также объявить дополнительные зависимости помимо включенных, тем самым максимизировав возможность повторного использования моих выражений Nix для создания сред разработки?


person josiah    schedule 09.10.2015    source источник
comment
Добавление этого комментария просто для того, чтобы сообщество знало, что я все еще смотрю этот вопрос и буду продолжать делать это, пока не будет получен ответ. Могу ли я предоставить какую-либо дополнительную информацию, которая была бы полезна?   -  person josiah    schedule 21.10.2015
comment
У меня это открыто, так как его спросили, и ответ: да, вы можете, к сожалению, я никогда не нахожу времени, чтобы написать полный ответ, и поэтому могу только указать вам на nixos.org/wiki/Development_Environments и nixos.org/nix/manual/#sec-arguments и дам вам подсказку, что выражения nix - это функции, которые вы можете создавать относительно свободно.   -  person Daniel Jour    schedule 05.01.2016


Ответы (1)


Файл Nix — это просто выражение, которое вы можете импортировать с помощью import ./path/to/other.nix. Вы можете выделить любое выражение, которое вам нравится, в отдельный файл и использовать его повторно. Стандартной практикой является сделать его функцией, чтобы вы могли по-разному параметризовать его для разных проектов или сборок.

Вот несколько хороших примеров импорта: http://sandervanderburg.blogspot.ro/2014/07/managing-private-nix-packages-outside.html

И введение в язык выражений Nix, который довольно прост: https://medium.com/@MrJamesFisher/nix-by-example-a0063a1a4c55

person brainrape    schedule 09.03.2018
comment
Добро пожаловать в СО. Спасибо за ваш ответ, но в целом в StackOverflow не рекомендуется отвечать в основном на ссылки, вы можете прочитать больше здесь. Пожалуйста, рассмотрите возможность редактирования своего ответа, добавив сумму содержания ваших ссылок. - person Pado; 09.03.2018