summaryrefslogtreecommitdiff
path: root/ci.nix
diff options
context:
space:
mode:
Diffstat (limited to 'ci.nix')
-rw-r--r--ci.nix35
1 files changed, 35 insertions, 0 deletions
diff --git a/ci.nix b/ci.nix
new file mode 100644
index 0000000..c2d3ae6
--- /dev/null
+++ b/ci.nix
@@ -0,0 +1,35 @@
+{self, ...}: {
+ perSystem = {
+ lib,
+ pkgs,
+ system,
+ config,
+ ...
+ }: {
+ packages = let
+ allConfigurations = [
+ "nixosConfigurations"
+ "darwinConfigurations"
+ "homeConfigurations"
+ ];
+
+ 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))
+ ];
+
+ required = [
+ configurations
+ (builtins.attrValues config.checks)
+ (builtins.attrValues config.devShells)
+ ];
+ in {
+ ciGate = pkgs.writeText "ci-gate" ''
+ ${lib.concatMapStringsSep "\n" toString required}
+ '';
+ };
+ };
+}