Skip to content

NIX_PATH Personalizado e Registro de Flake

Introdução ao NIX_PATH

O caminho de busca do Nix é controlado pela variável de ambiente NIX_PATH, que segue o mesmo formato da variável de ambiente PATH do Linux, consistindo de múltiplos caminhos separados por dois-pontos.

Caminhos em expressões do Nix que se parecem com <name> são resolvidos para o caminho com o nome name definido no NIX_PATH.

Este padrão de uso não é mais recomendado com o recurso Flakes, porque resulta em construções que dependem de uma variável de ambiente mutável, a NIX_PATH, o que compromete a reprodutibilidade.

No entanto, em certos cenários, ainda precisamos usar o NIX_PATH, scomo quando usamos frequentemente o comando nix repl '<nixpkgs>', que utiliza o Nixpkgs encontrado através da busca pelo NIX_PATH.

Introdução ao Registro de Flakes

O Registro de Flakes é um centro para registro de Flakes que nos ajuda a usar IDs mais curtos em vez de endereços longos de repositório de flake ao usar comandos como nix run, nix shell, e outros.

Por padrão, o Nix procura o endereço do repositório correspondente no GitHub para este ID a partir de https://github.com/NixOS/flake-registry/blob/master/flake-registry.json.

Por exemplo, se executarmos nix run nixpkgs#ponysay hello, o Nix irá automaticamente recuperar o endereço do repositório do GitHub para nixpkgs a partir do arquivo JSON mencionado. Ele então baixa o repositório, localiza o flake.nix dentro, e executa o pacote ponysay correspondente.

NIX_PATH Personalizado e Registro de Flake

NOTA: Iniciantes devem pular esta seção! Desabilitar o nix-channel de forma incorreta pode causar algumas dores de cabeça.

Os papéis do NIX_PATH e do Registro de Flakes foram explicados anteriormente. No uso diário, nós geralmente queremos que o nixpkgs usado em comandos como nix repl '<nixpkgs>' e nix run nixpkgs#ponysay hello corresponda ao nixpkgs. do sistema. Isso é feito por padrão a partir do NixOS 24.05. Além disso, embora o nix-channel possa coexistir com o recurso Flakes, na prática, os Flakes podem substituí-lo completamente, então podemos também desabilitá-lo.

Na sua configuração do NixOS, adicionar o seguinte módulo irá cumprir os requisitos mencionados:

nix
{ nixpkgs, ... }: {
  nix.channel.enable = false; # Remover ferramentas e configurações relacionadas ao nix-channel, pois usamos flakes no lugar.

  # isso é definido automaticamente por nixpkgs.lib.nixosSystem
  # mas pode ser necessário caso não se esteja usando isso:
  # nixpkgs.flake.source = nixpkgs;
}

Referências