Jak utworzyć lokalne repozytorium dla NixOS / nixpkgs?


17

Wszystkie instrukcje dotyczące tworzenia lokalnego repozytorium pakietów Nix obejmują tworzenie lokalnego klonu głównego nixpkgsrepozytorium i dodawanie do niego.

Czy istnieje sposób na utworzenie małego repozytorium zawierającego tylko moje lokalne pakiety dodatków?

Odpowiedzi:


6

Tak, po prostu utwórz wyrażenie dla pojedynczego pakietu. Możesz uzyskać zależności od nixpkgs przez pkgs = import <nixpkgs> {};.


5

Ten post na blogu zawiera pewne szczegóły: http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

Więcej szczegółowych informacji od podstaw można znaleźć w serii nix-pill: http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it- try.html

Ale myślę, że podstawowym podejściem jest stworzenie własnej wersji ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix, powiedzmy, mypkgs.nixdodania zależności od domyślnego „repo” poprzez import <nixpkgs>.

Zainstaluj pakiety, wykonując nix-env -f mypkgs.nix -i DERIVATION_NAME

Ale ponieważ nix opiera się na pełnym języku, nieskończenie wiele sposobów możesz to zrobić.


1

W żadnym wypadku nie jestem ekspertem od Nix, więc nie wiem, czy to najlepszy sposób, ale właśnie to robię. Mam lokalnego repo dla pakietów w $HOME/nix-local, który zawiera pewną liczbę plików pakietów vault/default.nix, blackbox/default.nixetc i config.nixplik, który definiuje packageOverridesje nazwać. Więc coś takiego:

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

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

Możesz zobaczyć pełne repo na https://github.com/telent/nix-local


4
Dla każdego, kto to czyta od około 2017 r., To repozytorium nie jest obecnie utrzymywane i zdecydowanie zalecam przeczytanie „nakładek”, o wiele czystszego sposobu robienia tego, co zwykło robić
packageOverrides
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.