summaryrefslogtreecommitdiff
path: root/modules/flake/githubWorkflow.nix
diff options
context:
space:
mode:
authorseth <[email protected]>2023-11-05 13:54:06 -0500
committerseth <[email protected]>2023-11-05 13:54:06 -0500
commit602193a4d8d0c8a886f9bb4f7e2bca2b968771fc (patch)
tree95f5b4356ba63d44aefb8830ff73267301d2f715 /modules/flake/githubWorkflow.nix
parent48b17c233c9ecf100d03d6fc8f7ac2eea6f74340 (diff)
modules/githubWorkflow: separate lib
Diffstat (limited to 'modules/flake/githubWorkflow.nix')
-rw-r--r--modules/flake/githubWorkflow.nix96
1 files changed, 22 insertions, 74 deletions
diff --git a/modules/flake/githubWorkflow.nix b/modules/flake/githubWorkflow.nix
index bb36bf7..923682d 100644
--- a/modules/flake/githubWorkflow.nix
+++ b/modules/flake/githubWorkflow.nix
@@ -1,4 +1,4 @@
-{
+workflowLib': {
config,
lib,
self,
@@ -15,15 +15,22 @@
inherit
(lib)
elem
- flatten
getAttrs
literalExpression
mapAttrsToList
mdDoc
+ mkIf
mkOption
types
;
+ workflowLib = workflowLib' (
+ {inherit self;}
+ // mkIf (cfg.platforms != {}) {
+ inherit (cfg) platforms;
+ }
+ );
+
supportedOutputs = [
"apps"
"checks"
@@ -61,60 +68,6 @@
};
};
};
-
- mkMatrix = {
- output,
- systems ? (attrNames cfg.platforms),
- }:
- if (lib.elem output ["nixosConfigurations" "darwinConfigurations"])
- then
- mkMatrixFlat {
- inherit output;
- suffix = ".config.system.build.toplevel";
- }
- else if (output == "homeConfigurations")
- then
- mkMatrixFlat {
- inherit output;
- suffix = ".activationPackage";
- }
- else
- flatten (
- mapAttrsToList
- (
- system:
- mapAttrsToList (
- attr: _: {
- inherit (cfg.platforms.${system}) os arch;
- attr = "${output}.${system}.${attr}";
- }
- )
- )
- (getAttrs systems self.${output})
- );
-
- mkMatrixFlat = {
- output,
- suffix ? "",
- }:
- mapAttrsToList (
- attr: deriv: {
- inherit (cfg.platforms.${deriv.pkgs.system}) os arch;
- attr = "${output}.${attr}${suffix}";
- }
- )
- self.${output};
-
- jobs = let
- self' = getAttrs cfg.outputs self;
- in
- flatten (
- mapAttrsToList (
- output: _:
- mkMatrix ({inherit output;} // cfg.overrides.${output} or {})
- )
- self'
- );
in {
options = {
githubWorkflowGenerator = {
@@ -129,22 +82,7 @@ in {
an attrset that can map a nix system to an architecture and os supported by github
'';
type = types.attrsOf (types.submodule platformMap);
- default = {
- "x86_64-linux" = {
- arch = "x86_64";
- os = "ubuntu-latest";
- };
-
- "aarch64-linux" = {
- arch = "aarch64";
- os = "ubuntu-latest";
- };
-
- "x86_64-darwin" = {
- arch = "x86_64";
- os = "macos-latest";
- };
- };
+ default = {};
};
overrides = mkOption {
@@ -153,7 +91,7 @@ in {
default = {};
example = literalExpression ''
{
- githubworkflowGenerator.overrides = {
+ githubWorkflowGenerator.overrides = {
checks.systems = [ "x86_64-linux" ];
};
}
@@ -162,5 +100,15 @@ in {
};
};
- config.flake.githubWorkflow = {matrix.include = jobs;};
+ config.flake = {
+ githubWorkflow = {
+ matrix.include = lib.concatLists (
+ mapAttrsToList (
+ output: _:
+ workflowLib.mkMatrix ({inherit output;} // cfg.overrides.${output} or {})
+ )
+ (getAttrs cfg.outputs self)
+ );
+ };
+ };
}