Nix paketlerinin yerel havuzunu oluşturmak için bulduğum tüm talimatlar, ana nixpkgs
havuzun 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ı?
Nix paketlerinin yerel havuzunu oluşturmak için bulduğum tüm talimatlar, ana nixpkgs
havuzun 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:
Evet, tek bir paket için bir ifade oluşturun. Nixpkgs den bağımlılıkları alabilirsiniz pkgs = import <nixpkgs> {};
.
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.nix
ithal 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.
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-local
bir 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.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
Reponun tamamını https://github.com/telent/nix-local adresinde görebilirsiniz.