此推导似乎递归地包括当前目录中的所有文件,如预期的那样:
src = builtins.path {
name = pname;
path = ./.;
};
我只想包括其中的一小部分;content/index.html
和package.json
。但我的过滤器似乎排除了一切:
src = builtins.path {
name = pname;
path = ./.;
filter = path: type:
builtins.elem path [
./content/index.html
./package.json
];
};
至少根据pkgs.mkYarnPackage
:
错误:打开文件“/nix/store/[…]/package.json”:没有这样的文件或目录
我的过滤器出了什么问题?
以下过滤器做工作,但有点黑客:
filter = path: type:
builtins.elem (baseNameOf path) [
"index.html"
"package.json"
];
./package.json
我猜想和条目的相等性存在一些问题src
。返回的路径与builtins.path
的数据类型/值不同吗./foo
?
答案1
找到了回答:将builtins.path
条目转换为路径就像这样简单:
filter = path: type:
builtins.elem (/. + path) [
./content
./content/index.html
./package.json
];
(您必须列出每个目录及其内容。)