Come posso creare un repository locale per NixOS / nixpkgs?


17

Tutte le istruzioni che trovo per la creazione di un repository locale di pacchetti Nix implicano la creazione di un clone locale del nixpkgsrepository principale e l'aggiunta a quello.

Esiste un modo per creare un piccolo repository contenente solo i miei pacchetti di componenti aggiuntivi locali?

Risposte:


6

Sì, basta creare un'espressione per il singolo pacchetto. Puoi ottenere dipendenze da nixpkgs da pkgs = import <nixpkgs> {};.


5

Questo post sul blog contiene alcuni dettagli: http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

Per ulteriori dettagli di basso livello da zero, c'è la serie nix-pill: http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it- try.html

Ma penso che l'approccio di base sia quello di creare la tua versione di ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix, diciamo mypkgs.nixaggiungendo dipendenze dal "repository" predefinito importando <nixpkgs>.

Installa i pacchetti facendo nix-env -f mypkgs.nix -i DERIVATION_NAME

Ma dal momento che nix è basato su un linguaggio in piena regola, immagino che ci siano infiniti modi in cui potresti farlo.


1

Non sono affatto un esperto di Nix, quindi non so se questo è il modo migliore, ma è quello che faccio. Ho un repository locale per i pacchetti in $HOME/nix-local, che contiene un numero di file di pacchetto vault/default.nix, blackbox/default.nixecc. E un config.nixfile che definisce packageOverridesper chiamarli. Quindi qualcosa del tipo:

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

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

Puoi vedere il repository completo su https://github.com/telent/nix-local


4
A chiunque legga questo dal 2017 circa, questo repository non è attualmente gestito e suggerirei caldamente di leggere "sovrapposizioni", un modo molto più pulito di fare il pacchetto che faceva Overrides
telent
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.