# Multiple Pipelines With V2, Nix GitLab CI can generate different pipelines, depending on the pipeline source (`$CI_PIPELINE_SOURCE`). By default, no matter which source, the `default` pipeline is built and ran. `$NIX_CI_PIPELINE` can override that, eg. when manually triggering a run. To configure which source should be 1-to-1 translated to a pipeline with the same name, set `$NIX_CI_DEFAULT_SOURCES` to a regex which explicitly does not match these sources. Or set it to an impossible to match regex, then it will always run the pipeline named after `$CI_PIPELINE_SOURCE`. ## Example 1: always run default If you only have a single pipeline, you just have to call it `default`. Everything else works out of the box. ## Example 2: default and merge_request_event If you want the source `merge_request_event` to trigger a different pipeline, name it like that and set `$NIX_CI_DEFAULT_SOURCES` to `^(merge_request_event)$`. Now a merge request will run this pipeline, while everything else runs `default`. ## Example 3: default, push and web Set `$NIX_CI_DEFAULT_SOURCES` to `^(push|web)$`. ## Example 4: always run the specific pipelines, never default Set `$NIX_CI_DEFAULT_SOURCES` to any regex that never matches the sources, like `a\A` or `nothing`.