development-environment - 有没有办法组合 Nix 表达式来为 `nix-shell` 创建开发环境

标签 development-environment code-reuse nix

假设我创建了一个 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.nixrails-env.nix和 Angular default.nixangular-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/

相关文章:

ios - Xcode: Storyboard太困惑且“忙碌”

java - 有什么方法可以使用基于 Linux 的 Java SDK 运行基于 Windows 的 Eclipse?

language-agnostic - 是否存在 : Repeated Code Finder?

nix - 如何撤消 `nix-channel --update`

nix - 如何使用 Nix niv 引用 github 项目?

android - MAKE for Android 操作系统源代码失败

java - Android XML 混合和小困难

algorithm - 有没有网站可以查找常见的、已经编写好的函数?

angular - 如何在 Angular 8/9/10/11 中访问可重用组件中的子模板

nix - 为什么 Nix lambdas 和 ?运营商这样互动?