如何使用Nix来设置开发环境?

时间:2017-06-24 03:11:57

标签: 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的文件,或者如何在给定目录中运行单个文件。

有人可以提供指向这些教程的指示,还是指向正确的方向?

1 个答案:

答案 0 :(得分:18)

您可以使用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钩子,或者用nix创建一些其他集成,但我认为最强大的选择是利用构建在Nix之上的Linux发行版 - NixOS。 NixOS与nix软件包集成,并管理软件包提供的服务。您可以创建一个具有postgres活动并且您的开发环境存在的NixOS配置。来自github.com/chrisfarms的此实用程序也可能是有意义的。