From ca725e7fcdde8ec5cfcd9b470eb96fcae2ec720d Mon Sep 17 00:00:00 2001 From: talyz Date: Thu, 25 Feb 2021 11:33:06 +0100 Subject: [PATCH] nixos/gitlab: Add `gitlab.target` To make it easier to start and stop all GitLab services, introduce `gitlab.target` which wants all services (meaning they will start with it) and which all services are part of (meaning they will stop with it). --- nixos/modules/services/misc/gitlab.nix | 32 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix index 37073bfd386..1d45af36349 100644 --- a/nixos/modules/services/misc/gitlab.nix +++ b/nixos/modules/services/misc/gitlab.nix @@ -641,6 +641,11 @@ in { environment.systemPackages = [ pkgs.git gitlab-rake gitlab-rails cfg.packages.gitlab-shell ]; + systemd.targets.gitlab = { + description = "Common target for all GitLab services."; + wantedBy = [ "multi-user.target" ]; + }; + # Redis is required for the sidekiq queue runner. services.redis.enable = mkDefault true; @@ -656,7 +661,8 @@ in { systemd.services.gitlab-postgresql = let pgsql = config.services.postgresql; in mkIf databaseActuallyCreateLocally { after = [ "postgresql.service" ]; bindsTo = [ "postgresql.service" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; path = [ pgsql.package pkgs.util-linux @@ -737,7 +743,8 @@ in { systemd.services.gitlab-config = { - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; path = with pkgs; [ jq openssl @@ -845,7 +852,8 @@ in { "gitlab-config.service" ] ++ optional (cfg.databaseHost == "") "postgresql.service" ++ optional databaseActuallyCreateLocally "gitlab-postgresql.service"; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; serviceConfig = { Type = "oneshot"; User = cfg.user; @@ -879,7 +887,8 @@ in { "gitlab-config.service" "gitlab-db-config.service" ] ++ optional (cfg.databaseHost == "") "postgresql.service"; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; environment = gitlabEnv; path = with pkgs; [ postgresqlPackage @@ -907,7 +916,8 @@ in { systemd.services.gitaly = { after = [ "network.target" "gitlab-config.service" ]; bindsTo = [ "gitlab-config.service" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; path = with pkgs; [ openssh procps # See https://gitlab.com/gitlab-org/gitaly/issues/1562 @@ -932,7 +942,8 @@ in { description = "GitLab static pages daemon"; after = [ "network.target" "gitlab-config.service" ]; bindsTo = [ "gitlab-config.service" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; path = [ pkgs.unzip ]; @@ -951,7 +962,8 @@ in { systemd.services.gitlab-workhorse = { after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; path = with pkgs; [ exiftool git @@ -982,7 +994,8 @@ in { description = "GitLab incoming mail daemon"; after = [ "network.target" "redis.service" "gitlab-config.service" ]; bindsTo = [ "gitlab-config.service" ]; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; environment = gitlabEnv; serviceConfig = { Type = "simple"; @@ -1009,7 +1022,8 @@ in { "gitlab-config.service" "gitlab-db-config.service" ] ++ optional (cfg.databaseHost == "") "postgresql.service"; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "gitlab.target" ]; + partOf = [ "gitlab.target" ]; environment = gitlabEnv; path = with pkgs; [ postgresqlPackage