2017-09-08 5 views
0

私はnixの式ファイル(.nix)とシェルスクリプトビルダーのように指定します:スタンドアロンのnix式用のビルダースクリプトはどこに配置する必要がありますか?

stdenv.mkDerivation rec { 
    name = "my-env"; 
    builder = './my-builder.sh'; 
    ... 

./my-builder.sh: No such file or directory私はnix-build ./my-env.nixを実行します。 nix式ファイルとビルダースクリプトが私のホームディレクトリに並べてあります。

このnix式ファイルを使用して、nix-buildを使用して環境を準備し、使用するたびにすぐに環境を実行するようにします(nix-shellを使用)。

EDIT:私はちょうどnix-shell ./ my-env.nixがうまく動作することに気づいた。今のところ私は実際には何も構築していないので、おそらくちょうどbuilderを省略する必要があります。

EDIT#2

This lineプットnixの発現と同じディレクトリにビルダーの両方: 私の具体的な例は次のようです。 This other lineは、環境を準備するためにnix-shellを使用していますが、私は同様のnix-buildコマンドを使用することができると仮定し(1は環境の一部として、カスタムパッケージをインストールしたい場合は特に、多分それは、ニックスで非常に慣用ではありません)

ソリューション

ビルダーの道を囲む引用符は、明らかにno-noでした。私は他の問題を抱えてしまった、そして最終的に実行するためのものを得るために一緒にこれをつなぎ:

builder = builtins.toFile "builder.sh" '' 
    source $stdenv/setup 
    mkdir -p $out 
    echo "" > $out/Done 
    echo "Done setting up Scala environment." 
''; 

答えて

1

は、行の末尾にセミコロンを置くと、単一引用符を削除してください:

builder = ./my-builder.sh; 

その後my-builder.shがあなたが書いたファイル.nixと同じディレクトリにあることを確認してください。

+0

おっと、私は質問を編集します。これは実際に転写エラーです。コピー/貼り付けをしていないためです。それで、私は実際にこれをすでに行っていました。彼らは間違いなく同じディレクトリにあります。また、EDIT#2を編集して、完全な例を指し示します。 – bbarker

+0

シンボリックリンクは、ファイルの実際の場所を知るためにリンクを間接的に参照するためにNixを使用しているように見えるので、怪しいです。私は確信していません。シンボリックリンクが含まれていない例を作ることができれば、助けになるかもしれません。 –

+0

明らかに私の問題は、ビルダーのスクリプト相対パスの周りの引用符(なぜそれが問題なのかわからない)でした。私はそれ以上の問題を抱えていたので、インライン化された "ダミー"スクリプトを使用して終了しました。 – bbarker

関連する問題