Pour appeler une fonction Nix qui utilise ensemble destructuration, vous devez passer un ensemble avec exactement les clés dont il a besoin, ni plus ni moins:Comment les fonctions d'appel de "callPackage" de Nix sont-elles définies sans ellipses?
nix-repl> ({ a }: a) { a = 4; b = 5; }
error: anonymous function at (string):1:2 called with unexpected argument ‘b’, at (string):1:1
L'exception à cette règle est si l'argument de la fonction liste contient des points de suspension à la fin:
nix-repl> ({ a, ... }: a) { a = 4; b = 5; }
4
Cependant, la plupart des paquets de nixpkgs sont constitués d'un fichier default.nix
contenant une fonction qui est définie pas avec cette ellipse. Pourtant, quand vous utilisez callPackage
, il parvient à appeler ces fonctions et à leur transmettre uniquement les arguments dont il a besoin. Comment cela est-il mis en œuvre?