我有一个nix表达式文件(.nix
)和一个shell脚本构建器,指定如下:
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
)。
编辑:我刚注意到nix-shell ./ my-env.nix
工作正常;到目前为止,我实际上并没有构建任何东西,所以我应该省略builder
。
修改#2 : 我的具体例子如下:
This line将nix表达式和构建器放在同一目录中。 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."
'';
答案 0 :(得分:1)
尝试在行尾添加分号并删除单引号:
builder = ./my-builder.sh;
然后仔细检查以确保my-builder.sh
与您编写该文件的.nix
文件位于同一目录中。