summaryrefslogtreecommitdiff
path: root/ci.nix
blob: 0dda2c0ed1a49842d9abf67c545ea6bff751fa61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{self, ...}: {
  perSystem = {
    lib,
    pkgs,
    system,
    config,
    ...
  }: let
    # get applicable system configurations
    configurations = lib.getAttrs ["darwinConfigurations" "homeConfigurations" "nixosConfigurations"] self;

    systems = lib.pipe (builtins.attrValues configurations) [
      (builtins.foldl' (acc: attr: acc // attr) {})
      (lib.filterAttrs (_: v: v.pkgs.system == system))
      (lib.mapAttrsToList (_: v: v.config.system.build.toplevel or v.activationPackage))
    ];

    required = lib.concatLists [
      systems
      # and other checks
      (builtins.attrValues (builtins.removeAttrs config.checks ["ciGate"]))
    ];

    paths =
      builtins.foldl' (
        acc: deriv:
          acc // {${deriv.pname or deriv.name} = deriv.path or deriv.outPath;}
      ) {}
      required;
  in {
    packages.ciGate = pkgs.linkFarm "ci-gate" paths;
  };
}