diff options
Diffstat (limited to 'dev/ci.nix')
| -rw-r--r-- | dev/ci.nix | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/dev/ci.nix b/dev/ci.nix new file mode 100644 index 0000000..1eb78e3 --- /dev/null +++ b/dev/ci.nix @@ -0,0 +1,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 + ) + ]; +} |
