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

(각 디렉토리와 해당 내용을 나열해야 합니다.)

관련 정보