Evaluation is the first step when it comes to building your project. It is performed by your agent as follows:

  1. At the top-level of your repository, the agent will search for a Nix file to evaluate in the following order: nix/ci.nix, ci.nix or default.nix

  2. NIX_PATH will be empty. Make sure you pin nixpkgs and not rely on <nixpkgs> search path. This is to ensure reproducability and purity also when it comes to nixpkgs

  3. If any of the attributes fail to evaluate, job evaluation phase will be marked as failed and error messages will be shown inline per attribute

Differences from nix-build

The agent expects the root of the file to be an attribute set and traverses it similarly to how nix build does it. A few differences exists:

  • All attribute names are allowed, including ones with characters like . that are ignored by nix build

  • The root must not be a list

like nix-build, the evaluator will only traverse a nested attribute set if the nested attribute set itself has an attribute recurseForDerivations = true. This can be set with the pkgs.recurseIntoAttrs function. For example: { myDrvs = recurseIntoAttrs { hello = pkgs.hello; }; }.