nix - 如何使用 Nix 搭建开发环境?

标签 nix

假设我需要 PostgreSQL 9.6.3 和 Ruby 2.3.1 以及其他各种工具。我找不到解释我需要做什么的教程。

从 Nix 手册中,我似乎需要写一个 Nix expression安装所需的依赖项,但我无法从:

{ stdenv, fetchurl, perl }:

stdenv.mkDerivation {
  name = "hello-2.1.1";
  builder = ./builder.sh;
  src = fetchurl {
    url = ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz;
    md5 = "70c9ccf9fac07f762c24f2df2290784d";
  };
  inherit perl;
}

到将安装正确的 PostgreSQL 和 Ruby 版本的表达式。我完全不清楚将安装 PostgreSQL 和 Ruby 的文件放在哪里,或者如何在给定目录中运行单个文件。

有人可以提供指向此类教程的指针,或指出我正确的方向吗?

最佳答案

您可以使用nix-shell为了这。它会将您放入配置为给定 nix 表达式的 shell。最初,该表达式可能只是沿着 buildInputs = [ pkgs.ruby ]; 的行。你可以从中开发它。 nix 用户在线撰写了许多有用的文章,提供了更多使用 nix-shell 的示例,例如 garbas.si 中的这篇文章

您可能还会发现更好地了解 nix 包的工作原理很有用。有一个单独的 nixpkgs手册更详细地介绍了使用 nix 创建包表达式。快速浏览第 3 部分应该有助于加深理解。还有一章关于将 nix 与 ruby​​ bundler 一起使用,可能对您有用。还有一些文章提供了更多使用示例,例如来自 stesie.github.io 的文章。 .

如果您需要在您的环境中实际运行的 postgresql,nix 不会为您管理;它的功能仅仅是包的构建和管理,而不是它们的激活。您可以简单地手动激活 postgres,使用 nix-shell Hook ,或创建与 nix 的其他集成,但我认为最强大的选择是使用构建在 Nix 之上的 Linux 发行版 - NixOS . NixOS 与 nix 包集成并管理包提供的服务。您可以在 postgres 处于事件状态且您的开发环境存在的情况下创建 NixOS 配置。此实用程序来自 github.com/chrisfarms也可能感兴趣。

关于nix - 如何使用 Nix 搭建开发环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732370/

相关文章:

nix - 将运行时依赖注入(inject) nix 包

nix - 如何使用 nix 打包单个 Python 脚本?

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

nix - 如何导入 nixos 配置并将其与 nixops 部署表达式合并

nix-env -qa 不显示最新的软件包

haskell - 如何让 cabal 和 nix 一起工作

haskell - ihp/nix 如何将 wreq 添加到依赖项而不编译失败?

docker - 我可以通过 dockerTools.buildImage 制作 docker 镜像并使用 nixos 配置进行配置吗

nix - 以下 cmdline 参数的最短 `shell.nix` 等价物是什么?

haskell - 如何通过 Nix 覆盖 nixpkgs 中的 Haskell 包?