如何在“src”中包含特定的文件列表?

如何在“src”中包含特定的文件列表?

此推导似乎递归地包括当前目录中的所有文件,如预期的那样:

src = builtins.path {
  name = pname;
  path = ./.;
};

我只想包括其中的一小部分;content/index.htmlpackage.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
  ];

(您必须列出每个目录及其内容。)

相关内容