Lei da Derivação

Seja

  • uma derivação D(a, b, c, ...) = z que transforma as entradas em z.
  • uma função de hash H(x) que calcula um hash de algum x, pode ser por exemplo a SHA256.

Uma realização de uma derivação precisa:

  • Para ter acesso a internet: H(z) pré-definido
  • Para conseguir executar sem H(z) definido: a definição de todas as derivações de entrada já em formato de closure, ou seja, executadas e acessíveis através da nix store.

Exemplos

  • Derivações que baixam coisas da internet para poderem realizar este trabalho DEVEM ter o hash do arquivo baixado definido junto.
  • Para compilar o Python é necessário um compilador de C, como por exemplo o GCC. Não é possível realizar a derivação do Python sem um compilador assumindo que a derivação do Python não vai baixar do cache.
  • É possível usar o Nix para conversão de vídeos e para realizar a conversão em sí é necessário, por exemplo, um programa chamado ffmpeg. Se a derivação do ffmpeg ainda não estiver realizada em uma closure não é possível iniciar a conversão.
  • A closure de uma derivação pode ser exportada para outra máquina evitando assim que ela seja re-realizada, e é assim que caches binários funcionam.