NixOS / nixpkgs için nasıl yerel bir depo oluşturabilirim?


17

Nix paketlerinin yerel havuzunu oluşturmak için bulduğum tüm talimatlar, ana nixpkgshavuzun yerel bir klonunu oluşturmayı ve buna eklemeyi içerir.

Yalnızca yerel eklenti paketlerimi içeren küçük bir havuz oluşturmanın bir yolu var mı?

Yanıtlar:


6

Evet, tek bir paket için bir ifade oluşturun. Nixpkgs den bağımlılıkları alabilirsiniz pkgs = import <nixpkgs> {};.


5

Bu blog yazısında bazı ayrıntılar var: http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

Sıfırdan daha düşük düzeyli ayrıntılar için nix-pill serisi vardır: http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it- try.html

Ama temel yaklaşım kendi sürümünü oluşturmak olduğunu düşünüyorum ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix, diyelim ki mypkgs.nixithal tarafından varsayılan "repo" bağımlılıkları ekleme <nixpkgs>.

Paketleri yaparak yükleyin nix-env -f mypkgs.nix -i DERIVATION_NAME

Ama nix tam gelişmiş bir dile dayandığı için bunu yapabileceğiniz sonsuz yollar var sanırım.


1

Hiç bir şekilde bir Nix uzmanıyım, bu yüzden bunun en iyi yol olup olmadığını bilmiyorum, ama yaptığım şey bu. Paketler , vb $HOME/nix-localbir dizi paket dosyaları ve bunları çağırmak için tanımlayan bir dosya içeren yerel bir repo var . Yani şöyle bir şey:vault/default.nixblackbox/default.nixconfig.nixpackageOverrides

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

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

Reponun tamamını https://github.com/telent/nix-local adresinde görebilirsiniz.


4
2017 hakkında beri herkes bu okuma, bu repo, packageOverrides ne yapardık yapmak için daha temiz bir yol şu anda korunmaz ve şiddetle "bindirmeleri" kadar okumak öneririz
TELENT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.