nixO를 사용하여 원격 저장소에서 파일 읽기

nixO를 사용하여 원격 저장소에서 파일 읽기

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.nixnix-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예제 아래에 설명되어 있습니다.또한 이와 같은 위키 페이지에도 있습니다.

관련 정보