summaryrefslogtreecommitdiff
path: root/ci.nix
diff options
context:
space:
mode:
Diffstat (limited to 'ci.nix')
-rw-r--r--ci.nix62
1 files changed, 30 insertions, 32 deletions
diff --git a/ci.nix b/ci.nix
index c2d3ae6..94eac3e 100644
--- a/ci.nix
+++ b/ci.nix
@@ -1,35 +1,33 @@
-{self, ...}: {
- perSystem = {
- lib,
- pkgs,
- system,
- config,
- ...
- }: {
- packages = let
- allConfigurations = [
- "nixosConfigurations"
- "darwinConfigurations"
- "homeConfigurations"
- ];
+{
+ lib,
+ self,
+ ...
+}: {
+ 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)
- configurations = lib.pipe allConfigurations [
- (configs: lib.getAttrs configs self)
- builtins.attrValues
- (lib.concatMap builtins.attrValues)
- (lib.filter (deriv: deriv.pkgs.system == system))
- (map (deriv: deriv.config.system.build.toplevel or deriv.activationPackage))
- ];
+ (
+ let
+ configurations =
+ lib.getAttrs [
+ "nixosConfigurations"
+ "darwinConfigurations"
+ "homeConfigurations"
+ ]
+ self;
- required = [
- configurations
- (builtins.attrValues config.checks)
- (builtins.attrValues config.devShells)
- ];
- in {
- ciGate = pkgs.writeText "ci-gate" ''
- ${lib.concatMapStringsSep "\n" toString required}
- '';
- };
- };
+ 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
+ )
+ ];
}