diff options
Diffstat (limited to 'modules/flake/githubWorkflow.nix')
| -rw-r--r-- | modules/flake/githubWorkflow.nix | 96 |
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) + ); + }; + }; } |
