summaryrefslogtreecommitdiff
path: root/dev/ci.nix
diff options
context:
space:
mode:
Diffstat (limited to 'dev/ci.nix')
-rw-r--r--dev/ci.nix35
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
+ )
+ ];
+}