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:...="