2014-12-30 2 views
3

나는 nixos와 nix 표현에 대해 배우고있다. 프로젝트 폴더에서 shell.nix를 만들었고 실행할 때 nix-shell 나는 나를 위해 환경 변수를 미리 설정하고 싶습니다. 예를 들어 PGDATA env var.nix-shell : 사용자 정의 환경 변수를 지정하는 방법은 무엇입니까?

nix 표현식 파일을 작성하는 방법은 여러 가지가 있습니다. (아직 익숙하지 않습니다.)

shell.nix

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

답변

2

사용 buildPythonPackage 기능 (즉 mkDerivation 사용) : 여기 내 샘플입니다. 아무것도 전달하지 않으면 bash 쉘에 env 변수가 설정됩니다.

with import <nixpkgs> {}; 

buildPythonPackage { 
    name = "test"; 

    buildInputs = [ pkgs.python pkgs.libxml2 ]; 

    src = null; 

    PGDATA = "..."; 
} 
+0

감사합니다. 필자는 예제로 파이썬을 샘플로 사용했습니다. 나는 보통 그것을 haskell 프로젝트에 사용한다. 나는 조금 이상하게 보이지만 내 haskell 프로젝트에도이 함수를 사용할 수 있다고 생각한다. buildPythonPackage에서 작동하지만 myEnvFun에서는 작동하지 않는 이유는 무엇입니까? myEnvFun (또는 기능 요청)의 버그입니까? – dvekeman

+0

myEnvFun은 패키지가 아니므로 빌드 환경을 구축하십시오. nix-shell에서는 작동하지 않습니다. – iElectric

+0

'stdenv.mkDerivation' 함수를 사용한다면 이것을하기 위해'shellHook'을 사용할 수 있습니다. – CMCDragonkai

관련 문제