Aqui está como você configura o servidor e o cliente para usar um cache binário com sinal fornecido por meio do comando nix-serve
. Isso não requer o uso de nix-push
para gerar o cache e você pode servir seu /nix/store
diretamente usando este método.
Isso está documentado na man
-page para nix-push
, por isso, se você quiser mais detalhes, também pode verificar isso.
Configuração do servidor
Este exemplo assume que o nome do host do seu servidor é cache.example.com
.
Primeiro, você precisa gerar um par de chaves de assinatura usando nix-store --generate-binary-cache-key
, assim:
$ nix-store --generate-binary-cache-key cache.example.com-1 nix-serve.sec nix-serve.pub
... apenas substituindo cache.example.com
por qualquer nome de host apropriado para seu servidor. Ele não precisa corresponder ao nome do host real, mas ajuda se eles corresponderem para que você possa distinguir facilmente a qual servidor uma chave pública pertence.
Se o seu servidor de cache estiver executando NixOS
, você poderá servir seu cache adicionando essas duas linhas ao arquivo de configuração NixOS
:
nix-serve = {
enable = true;
secretKeyFile = "/path/to/nix-serve.sec";
};
... e certifique-se de que o usuário nix-serve
tenha acesso de leitura à chave nix-serve.sec
.
Se você não estiver usando NixOS
e quiser servir seu cache diretamente usando o executável nix-serve
, será necessário usar a variável de ambiente NIX_SECRET_KEY_FILE
para especificar o caminho para a chave secreta, desta forma:
NIX_SECRET_KEY_FILE=/path/to/nix-serve.sec nix-serve ...
Configuração do cliente
Se a sua máquina cliente for uma máquina NixOS
, você poderá adicionar essas linhas ao arquivo de configuração NixOS
:
nix.binaryCaches = [
"https://cache.nixos.org/"
# This assumes that you use the default 'nix-serve' port of 5000
"http://cache.example.com:5000"
];
nix.binaryCachePublicKeys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
# Replace the following string with the contents of the
# 'nix-serve.pub' file you generated in the "Server configuration"
# section above
"cache.example.com-1:...="
];
Se você não estiver em uma máquina NixOS
, poderá editar manualmente o arquivo nix.conf
para ter as seguintes configurações:
binary-caches = https://cache.nixos.org/ http://cache.example.com
binary-cache-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= cache.example.com-1:...=
Se você preferir ativar um cache binário para apenas uma compilação, poderá passar esses flags de configuração de cache binário diretamente para qualquer utilitário Nix como nix-build
ou nixos-rebuild
, desta forma:
nixos-rebuild build --option binary-caches "https://cache.nixos.org/ http://cache.example.com" --option binary-cache-public-keys "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= cache.example.com-1:...="