假设我创建了一个 Rails 项目并为 nix-shell 创建了一个 default.nix,它将通过 nix-shell .
为该项目创建开发环境。 .自然,这个 shell 将具有我需要的 Ruby on Rails 的任何依赖项。
现在假设我还创建了一个 AngularJS 项目并为此做同样的事情,创建了一个 default.nix
通过 nix-shell .
运行.
考虑一下,将来我可能有一个同时使用 Angular 和 Ruby on Rails 的项目(假设是这样)。有没有办法把我的 Angular 项目的 default.nix
和我的 Rails 项目的 default.nix
并在不诉诸复制粘贴的情况下将它们组合在一起?
此外,我们假设此项目稍后可能需要其他依赖项。我可以做一些类似拯救 Rails 的事情吗default.nix
如 rails-env.nix
和 Angular default.nix
如 angular-env.nix
,然后将它们包含在新的 default.nix
中用于我的 Rails-Angular + Extras 项目,以便我可以在 rails-env.nix
中声明两个依赖项和 angular-env.nix
,但还要声明除这些包含之外的其他依赖项,从而最大限度地提高 Nix 表达式的可重用性以创建开发环境?
最佳答案
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
关于development-environment - 有没有办法组合 Nix 表达式来为 `nix-shell` 创建开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041822/