4

假设我创建了一个 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.nixasrails-env.nix和 Angular default.nixas保存的方式做一些事情angular-env.nix,然后将它们包含在default.nix我的 Rails-Angular + Extras 项目的新项目中,以便我可以在rails-env.nix和 中声明依赖项angular-env.nix,但也可以声明除了这些之外的其他依赖项,从而最大限度地提高我的 Nix 表达式的可重用性以创建开发环境?

4

1 回答 1

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

于 2018-03-09T14:48:24.683 回答