Documentation

menu
Nix FlakesHostingIntroductionBranch HostingPull-request DeploymentsSecretsPersistenceDebuggingMultiple ServersCustom DomainsExample: Typescript & GoExample: JitsiExample: RSS BridgeExample: Tiny Tiny RSSExample: SearxGarnyaml configWhat Garnix CI doesIncremental BuildsUsing Private InputsCachingGitHub Actions IntegrationBadges

What Garnix CI doesshare

When we run your builds, here is what we do.

  1. Check whether either a flake.nix or a garnix.yaml exist. If neither do, stop, without creating checks.
  2. Run nix eval .#<type>.x86_64-linux --apply builtins.attrNames --json, in the top level dir, substituting for type: packages, checks, devShells, homeConfigurations, darwinConfigurations, and nixosConfigurations. This gives a list of attributes.
  3. Check whether defaultPackage.x86_64-linux and devShell.x86_64-linux exist. If so, add them to the list of attributes.
  4. For each item in the list, run
    1. nix eval <attribute> --apply 'pkg: pkg.drvPath' --raw
    2. nix build '<drvpath>^*' --log-lines 0 --print-build-logs
  5. Use the drvPath obtained from nix eval to query nix log. (If that's not available, other heuristics for logs may be used.)

If the build fails, you can always run these steps yourself to understand why.

Note: The eval stage is limited to 4GB. This limit does not apply to IFD packages that are built during eval, but instead just memory consumed directly by nix.