inputs

Definições mais dentro do repositório devem evitar importar outros arquivos.

Porque? Loops!

E também porque não fica com um aspecto tão limpo.

Para utilizar as definições que usam este design pattern é usada a função callPackage do nixpkgs!

Exemplo

Antes da aplicação do design pattern

let
  pkgs = import <nixpkgs> {};
  mkDerivação = import ./autotools.nix pkgs;
in mkDerivação {
  name = "graphviz";
  src = ./graphviz-2.38.0.tar.gz;
  buildInputs = with pkgs; [ gd fontconfig libjpeg bzip2 ];
}

Depois da aplicação do design pattern

{ mkDerivação, gdSupport ? true, gd, fontconfig, libjpeg, bzip2 }:

mkDerivação {
  name = "graphviz";
  src = ./graphviz-2.38.0.tar.gz;
  buildInputs = if gdSupport then [ gd fontconfig libjpeg bzip2 ] else [];
}