summaryrefslogtreecommitdiff
path: root/ci.nix
blob: 1eb78e3abdab4400f1e6e55c561e6938bce8f8de (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
34
35
{
  lib,
  self,
  ...
}: {
  nix2workflow.output = self.hydraJobs;

  flake.hydraJobs = let
    ciSystems = ["x86_64-linux" "x86_64-darwin"];
    recursiveMerge = builtins.foldl' lib.recursiveUpdate {};
  in
    recursiveMerge [
      (let
        outputs = lib.getAttrs ["checks" "devShells"] self;
        isCompatible = system: _: lib.elem system ciSystems;
      in
        lib.mapAttrs (_: lib.filterAttrs isCompatible) outputs)

      (
        let
          configurations =
            lib.getAttrs [
              "nixosConfigurations"
              "darwinConfigurations"
              "homeConfigurations"
            ]
            self;

          isCompatible = _: configuration: lib.elem configuration.pkgs.system ciSystems;
          toDeriv = _: configuration: configuration.config.system.build.toplevel or configuration.activationPackage;
        in
          lib.mapAttrs (_: v: lib.mapAttrs toDeriv (lib.filterAttrs isCompatible v)) configurations
      )
    ];
}