我有一個尼克斯表達式文件(.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-build
的環境,然後每當我想用它(使用nix-shell
)實際快速運行環境。
編輯:我剛剛注意到,nix-shell ./ my-env.nix
工作正常;到目前爲止,我實際上沒有構建任何東西,所以我應該忽略builder
。
EDIT#2: 我的具體例子如下:
This line放兩個尼克斯表達並以相同的目錄中的助洗劑。 This other line使用nix-shell
準備環境,但我認爲可以用類似的nix-build
命令(特別是如果想安裝一個定製的包作爲環境的一部分,但也許這是不是在尼克斯很地道)
解決方案圍繞構建器的路徑
行情顯然是一個禁忌。我最後不得不等問題,並拼湊了一起,最終得到的東西運行:
builder = builtins.toFile "builder.sh" ''
source $stdenv/setup
mkdir -p $out
echo "" > $out/Done
echo "Done setting up Scala environment."
'';
哎呀,我會編輯的問題。這實際上是一個抄本錯誤 - 我得到的不是複製/粘貼。所以,我事實上已經做到了。他們肯定在同一個目錄中。我也會用編輯#2編輯一下,指出一個完整的例子。 – bbarker
符號鏈接是可疑的,因爲它看起來像你可能會指望尼克斯爲你取消引用該鏈接,以便它知道文件的真實位置。雖然我不確定。如果你可以做一個不涉及符號鏈接的例子,它可能會有所幫助。 –
顯然,我的問題是,周圍的報價我周圍的建設者腳本相對路徑(不知道爲什麼這是一個問題)。除此之外,我還有其他問題,所以最後使用了一個內置的「虛擬」腳本。我會發布解決方案,我最後與 – bbarker