Sim, basta criar uma expressão para o pacote único. Você pode obter dependências do nixpkgs em pkgs = import <nixpkgs> {};
.
Todas as instruções que eu encontrei para criar um repositório local de pacotes Nix envolvem a criação de um clone local da principal árvore nixpkgs
e a adição a ele.
Existe alguma maneira de eu me importar com um pequeno repositório contendo apenas meus pacotes de complementos locais?
Sim, basta criar uma expressão para o pacote único. Você pode obter dependências do nixpkgs em pkgs = import <nixpkgs> {};
.
Esta postagem do blog tem alguns detalhes: link
Para mais detalhes de baixo nível, a série nix-pill: link
Mas acho que a abordagem básica é criar sua própria versão de ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix
, digamos mypkgs.nix
adicionando dependências do repositório padrão, importando <nixpkgs>
.
Instalar pacotes fazendo nix-env -f mypkgs.nix -i DERIVATION_NAME
Mas como o nix é baseado em uma linguagem completa, existem infinitas maneiras de fazer isso, eu acho.
Não sou de modo algum um especialista em Nix, então não sei se é o melhor caminho, mas é o que eu faço. Eu tenho um repositório local para pacotes em $HOME/nix-local
, que contém vários arquivos de pacotes vault/default.nix
, blackbox/default.nix
etc e um arquivo config.nix
que define packageOverrides
para chamá-los. Então, algo como:
$ cat nix-local/config.nix
{
packageOverrides = pkgs: rec {
vault = pkgs.callPackage ./vault {};
blackbox = pkgs.callPackage ./blackbox {};
# ...
}
$ export NIXPKGS_CONFIG=$HOME/nix-local/config.nix