{ lib, helpers, }: let inherit (lib) toList optionalAttrs optional; inherit (helpers) prependToBeforeScript appendToAfterScript filterJobVariables; in { key, job, pipelineName, nixConfig, }: job // (optionalAttrs nixConfig.enable ( (prependToBeforeScript ["source setup_nix_ci \"gitlab-ci:pipeline:${pipelineName}:job-deps:${key}\""] job) // (appendToAfterScript ["finalize_nix_ci"] job) )) // optionalAttrs nixConfig.enable { variables = (filterJobVariables false job) // optionalAttrs nixConfig.enableRunnerCache { NIX_CI_CACHE_STRATEGY = "runner"; }; cache = (toList (job.cache or [])) ++ (optional nixConfig.enableRunnerCache { key = nixConfig.runnerCacheKey; paths = [".nix-cache/"]; }); }