「src」に特定のファイルのリストを含める方法は?

「src」に特定のファイルのリストを含める方法は?

この派生は、予想どおり、現在のディレクトリ内のすべてのファイルを再帰的に含むように見えます。

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
  ];

(各ディレクトリとその内容を一覧表示する必要があります。)

関連情報