私は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."
'';
おっと、私は質問を編集します。これは実際に転写エラーです。コピー/貼り付けをしていないためです。それで、私は実際にこれをすでに行っていました。彼らは間違いなく同じディレクトリにあります。また、EDIT#2を編集して、完全な例を指し示します。 – bbarker
シンボリックリンクは、ファイルの実際の場所を知るためにリンクを間接的に参照するためにNixを使用しているように見えるので、怪しいです。私は確信していません。シンボリックリンクが含まれていない例を作ることができれば、助けになるかもしれません。 –
明らかに私の問題は、ビルダーのスクリプト相対パスの周りの引用符(なぜそれが問題なのかわからない)でした。私はそれ以上の問題を抱えていたので、インライン化された "ダミー"スクリプトを使用して終了しました。 – bbarker