From 262729e9bb1622589400d96ca0222545fc68e568 Mon Sep 17 00:00:00 2001 From: technofab Date: Sat, 27 Jan 2024 13:06:34 +0100 Subject: [PATCH] fix: add most gitlab options --- flakeModule.nix | 97 +++++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/flakeModule.nix b/flakeModule.nix index a408955..6ef2e09 100644 --- a/flakeModule.nix +++ b/flakeModule.nix @@ -19,6 +19,11 @@ else v; subType = options: lib.types.submodule {inherit options;}; + mkNullOption = type: + lib.mkOption { + default = null; + type = lib.types.nullOr type; + }; configType = with lib; subType { @@ -45,18 +50,10 @@ default = []; }; # gitlab opts - before_script = mkOption { - type = types.listOf types.str; - default = []; - }; script = mkOption { type = types.listOf types.str; default = []; }; - after_script = mkOption { - type = types.listOf types.str; - default = []; - }; stage = mkOption { type = types.str; }; @@ -64,34 +61,34 @@ type = types.str; default = cfg.default-nix-image; }; - variables = mkOption { - type = types.nullOr types.attrs; - default = null; - }; - artifacts = mkOption { - type = types.nullOr types.attrs; - default = null; - }; - when = mkOption { - type = types.nullOr types.str; - default = null; - }; - start_in = mkOption { - type = types.nullOr types.str; - default = null; - }; - allow_failure = mkOption { - type = types.nullOr types.bool; - default = null; - }; - needs = mkOption { - type = types.nullOr (types.listOf types.str); - default = null; - }; - rules = mkOption { - type = types.nullOr (types.listOf types.attrs); - default = null; - }; + after_script = mkNullOption (types.listOf types.str); + allow_failure = mkNullOption (types.either types.attrs types.bool); + artifacts = mkNullOption (types.attrs); + before_script = mkNullOption (types.listOf types.str); + cache = mkNullOption (types.attrs); + coverage = mkNullOption (types.str); + dependencies = mkNullOption (types.listOf types.str); + environment = mkNullOption (types.either types.attrs types.str); + extends = mkNullOption (types.str); + hooks = mkNullOption (types.attrs); + id_tokens = mkNullOption (types.attrs); + "inherit" = mkNullOption (types.attrs); + interruptile = mkNullOption (types.bool); + needs = mkNullOption (types.listOf types.str); + publish = mkNullOption (types.str); + pages = mkNullOption (types.attrs); + parallel = mkNullOption (types.either types.int types.attrs); + release = mkNullOption (types.attrs); + retry = mkNullOption (types.either types.int types.attrs); + rules = mkNullOption (types.listOf types.attrs); + resource_group = mkNullOption (types.str); + secrets = mkNullOption (types.attrs); + services = mkNullOption (types.listOf types.attrs); + start_in = mkNullOption (types.str); + tags = mkNullOption (types.listOf types.str); + timeout = mkNullOption (types.str); + variables = mkNullOption (types.attrs); + when = mkNullOption (types.str); }; in { options = with lib; { @@ -104,22 +101,12 @@ ''; default = {}; }; - image = mkOption { - type = types.nullOr types.str; - default = null; - }; - variables = mkOption { - type = types.nullOr types.attrs; - default = null; - }; - default = mkOption { - type = types.nullOr types.attrs; - default = null; - }; - stages = mkOption { - type = types.nullOr (types.listOf types.str); - default = null; - }; + image = mkNullOption (types.str); + variables = mkNullOption (types.attrs); + default = mkNullOption (types.attrs); + stages = mkNullOption (types.listOf types.str); + include = mkNullOption (types.attrs); + workflow = mkNullOption (types.attrs); jobs = mkOption { type = types.lazyAttrsOf jobType; default = {}; @@ -141,7 +128,7 @@ // lib.optionalAttrs job.nix { before_script = arr - ++ job.before_script; + ++ job.before_script or []; }; jobs = filterAttrsRec (n: v: v != null) config.ci.jobs; @@ -153,7 +140,7 @@ jobsMappedForDeps = mapAttrs (key: job: { name = "gitlab-ci-job-deps:${key}"; - value = pkgs.writeShellScript "gitlab-ci-jobs:${key}" '' + value = pkgs.writeShellScript "gitlab-ci-job-deps:${key}" '' export PATH="${lib.makeBinPath job.deps}:$PATH"; ''; }) @@ -162,7 +149,7 @@ jobsMappedForScript = mapAttrs (key: job: { name = "gitlab-ci-job:${key}"; - value = pkgs.writeShellScriptBin "gitlab-ci-jobs:${key}" (lib.strings.concatLines (job.before_script ++ job.script ++ job.after_script)); + value = pkgs.writeShellScriptBin "gitlab-ci-job:${key}" (lib.strings.concatLines (job.before_script or [] ++ job.script ++ job.after_script or [])); }) jobs; # build the deps specific for this job before anything, this way the deps should be fetched from the cache