11

我正在学习 nixos 和 nix 表达式。在一个项目文件夹中,我创建了一个 shell.nix,当我运行时,nix-shell我希望它为我预设一个环境变量。例如设置 PGDATA 环境变量。

我知道有几种方法可以编写 nix 表达式文件(我还没有习惯其中的大多数)。这是我的示例:

shell.nix

let 
  pkgs = import <nixpkgs> {};
  name = "test";
in pkgs.myEnvFun {
  buildInputs = [
    pkgs.python
    pkgs.libxml2
  ];
  inherit name;
  extraCmds = ''
    export TEST="ABC"
  '';
 }
4

2 回答 2

10

使用 buildPythonPackage 函数(使用 mkDerivation)。向它传递任何东西都会在 bash shell 中设置环境变量:

with import <nixpkgs> {};

buildPythonPackage {
  name = "test";

  buildInputs = [ pkgs.python pkgs.libxml2 ];

  src = null;

  PGDATA = "...";
}
于 2014-12-31T09:54:05.377 回答
2

您也可以使用pkgs.stdenv.mkDerivation.shellHook.

let 
  pkgs = import <nixpkgs> {};
  name = "test";
in pkgs.stdenv.mkDerivation {
  buildInputs = [
    pkgs.python
    pkgs.libxml2
  ];
  inherit name;
  shellHook = ''
    export TEST="ABC"
  '';
 }
于 2020-04-04T05:56:58.017 回答