nixos buildFHSUserEnvに環境変数を渡すには?

nixos buildFHSUserEnvに環境変数を渡すには?

私はJavascriptビルド環境を持っており、最近FHS環境でビルドコマンド(yarnこの場合)をラップしました。このビルドでは、NixOSファイルシステムと互換性のない複数のバイナリ依存関係が排除されるため、FHS環境でビルドプロセス全体をラップするのが有利であるnpmため、これが必要です。yarn

ただし、ビルドプロセスを調整するためにYarnに渡す必要がある環境変数があります。コマンドラインにどのように渡すことができますか?

私の糸環境ファイルは次のとおりです。

{ pkgs ? import <nixos> {}
, fetchurl ? pkgs.fetchurl
, nodejs ? pkgs.nodejs
, buildFHS ? pkgs.buildFHSUserEnv
, mkDerivation ? pkgs.stdenv.mkDerivation
}:
let
    version = "0.19.1";
    pkgUrl = "https://github.com/yarnpkg/yarn/releases/download/v${version}/yarn-v${version}.tar.gz";
    pkgSha = "751e1c0becbb2c3275f61d79ad8c4fc336e7c44c72d5296b5342a6f468526d7d";
in rec {
    yarn-env = mkDerivation {
        name = "yarn-env";

        src = fetchurl {
            url = pkgUrl;
            sha256 = pkgSha;
        };

        phases = [ "unpackPhase" "installPhase" ];

        installPhase = ''
            mkdir -p $out
            cp -r * $out
        '';

    };
    yarn = buildFHS {
        name = "yarn";
        targetPkgs = pkgs: [ nodejs
                             yarn-env
                             pkgs.git
                             pkgs.stack
                             pkgs.haskell.compiler.ghc802
                             pkgs.zlib
                             pkgs.ncurses5
                             pkgs.gmp
                             pkgs.neovim 
                             ];
        runScript = "yarn";
        profile="export DEPENDENCY_BRANCH=2310-nifty-unmerged-feature";
    };
}

したがって、このファイルをより大きなファイルに含めてshell.nixYarnコマンドを使用できるようにしました。ビルドおよびデプロイに使用する他のいくつかのコマンドもあります。

ファイルではなくコマンドラインで対応する依存関係ブランチを指定できるようにしたいですyarn-env.nix

ベストアンサー1

nix-shellとは、両方とを介したnix-buildパラメータ渡しをサポートします。 nix 式で評価され、文字列リテラルとして扱われます。質問に提供された式を使用すると、次の値をオーバーライドできます。--arg--argstr--arg--argstr
pkgs

nix-shell -A yarn --arg pkgs 'import /home/me/nixpkgs {}'

依存ブランチを表す式に他のパラメータを追加できます。

branch ? "2310-nifty-unmerged-feature"

式でこれを参照します。

profile="export DEPENDENCY_BRANCH=${branch}";

これにより、次のいずれかの方法でコマンドラインからブランチを渡すことができます。

nix-shell --arg branch \"somebranch\"
nix-shell --argstr branch somebranch

これにより、同様の方法で外部式を調整し、パラメータを伝播させる必要がありますbranch

nix-shellマニュアルページ--argには--argstr

おすすめ記事