NixOS/nixpkgs용 로컬 저장소를 만드는 방법은 무엇입니까?

NixOS/nixpkgs용 로컬 저장소를 만드는 방법은 무엇입니까?

Nix 패키지의 로컬 저장소를 생성하기 위해 찾은 모든 지침에는 nixpkgs기본 저장소의 로컬 복제본을 생성하고 추가하는 작업이 포함됩니다.

로컬 추가 기능 패키지만 포함하는 작은 저장소를 만드는 방법이 있습니까?

답변1

예, 단일 패키지에 대한 표현식을 생성하면 됩니다. nixpkgs 에서 종속성을 가져와서 이를 수행할 수 있습니다 pkgs = import <nixpkgs> {};.

답변2

이 블로그 게시물에는 몇 가지 세부정보가 있습니다.http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

보다 낮은 수준의 스크래치 제작 세부 사항을 보려면 nix-pill 시리즈가 있습니다.http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it-try.html

하지만 기본적인 접근 방식은 자신만의 버전을 만드는 것입니다 ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix. 예를 들어 mypkgs.niximport 를 통해 기본 "repo"에서 종속성을 추가합니다 <nixpkgs>.

다음을 수행하여 패키지를 설치하십시오.nix-env -f mypkgs.nix -i DERIVATION_NAME

하지만 nix는 성숙한 언어를 기반으로 하기 때문에 이를 수행할 수 있는 방법은 무수히 많을 것입니다.

답변3

저는 결코 Nix 전문가가 아니기 때문에 이것이 최선의 접근 방식인지는 모르겠지만 이것이 제가 하는 일입니다. $HOME/nix-local여러 패키지 파일 vault/default.nix등을 포함하는 로컬 패키지 저장소 blackbox/default.nix와 해당 패키지에 대한 호출을 config.nix정의하는 파일이 있습니다 packageOverrides. 그래서 이렇게 :

$ cat nix-local/config.nix
{
  packageOverrides = pkgs: rec {
    vault = pkgs.callPackage ./vault {};
    blackbox = pkgs.callPackage ./blackbox {};
    # ...
}

$ export NIXPKGS_CONFIG=$HOME/nix-local/config.nix    

다음에서 전체 저장소를 볼 수 있습니다.https://github.com/telent/nix-local

관련 정보