nixOs 패키지 시스템을 사용하여 프로젝트를 구축 중입니다. 다른 구성 파일이 포함된 원격 git repo가 있습니다. 원격 저장소를 편집하지 않고 nix를 사용하여 해당 파일에 액세스하고 싶습니다.
프로젝트는 특정 커밋 해시를 사용하여 원격 저장소에 액세스합니다. 누구든지 나를 도울 수 있습니까? 감사합니다.
답변1
다음은 Nix 구성이 포함되지 않은 원격 git 저장소에서 파일을 읽는 짧은 파생입니다.
with (import <nixpkgs> { });
let
repo = fetchFromGitHub {
owner = "nix-community";
repo = "awesome-nix";
rev = "c4adba38dc2ec33aa0f692cc5fcb9677b123087c";
sha256 = "cF9sh3vrDwTh64ZkgyEuJKmmA4UhbnXw8x4cnBMeGHk=";
};
in stdenv.mkDerivation {
name = "count-repo-lines";
src = repo;
buildPhase = ''
mkdir $out
wc -l ./README.md > linecount
'';
installPhase = ''
cp linecount $out/linecount
'';
system = builtins.currentSystem;
}
라는 파일에 저장된 경우 명령 count-remote-lines.nix
은 nix-build
출력을 다음이라는 로컬 폴더에 저장합니다 result
.
$ nix-build ./count-remote-lines.nix
...various log messages...
$ cat ./result/linecount
154 ./README.md
또는 대화형 셸에서 단계별로 파생 빌드 프로세스의 문제를 해결하려면 다음을 시도해 보세요.
$ nix-shell ./count-repo-lines.nix --pure
$ unpackPhase
unpacking source archive /nix/store/xaff1yqipbpazhp9jz22rjp7izbglzr5-source
source root is source
$ cd source
$ ls
CONTRIBUTING.md LICENSE README.md
나머지 빌드 명령은 man nix-shell
예제 아래에 설명되어 있습니다.또한 이와 같은 위키 페이지에도 있습니다.