Merge pull request #93426 from helsinki-systems/feat/gitlab-pages

nixos/gitlab: Support pages

Changed files
+64
nixos
modules
services
misc
pkgs
servers
http
gitlab-pages
top-level
+38
nixos/modules/services/misc/gitlab.nix
···
redisConfig.production.url = cfg.redisUrl;
+
pagesArgs = [
+
"-pages-domain" gitlabConfig.production.pages.host
+
"-pages-root" "${gitlabConfig.production.shared.path}/pages"
+
] ++ cfg.pagesExtraArgs;
+
gitlabConfig = {
# These are the default settings from config/gitlab.example.yml
production = flip recursiveUpdate cfg.extraConfig {
···
description = "Reference to the gitaly package";
};
+
packages.pages = mkOption {
+
type = types.package;
+
default = pkgs.gitlab-pages;
+
defaultText = "pkgs.gitlab-pages";
+
description = "Reference to the gitlab-pages package";
+
};
+
statePath = mkOption {
type = types.str;
default = "/var/gitlab/state";
···
default = "peer";
description = "How OpenSSL checks the certificate, see http://api.rubyonrails.org/classes/ActionMailer/Base.html";
};
+
};
+
+
pagesExtraArgs = mkOption {
+
type = types.listOf types.str;
+
default = [ "-listen-proxy" "127.0.0.1:8090" ];
+
description = "Arguments to pass to the gitlab-pages daemon";
};
secrets.secretFile = mkOption {
···
Restart = "on-failure";
WorkingDirectory = gitlabEnv.HOME;
ExecStart = "${cfg.packages.gitaly}/bin/gitaly ${gitalyToml}";
+
};
+
};
+
+
systemd.services.gitlab-pages = mkIf (gitlabConfig.production.pages.enabled or false) {
+
description = "GitLab static pages daemon";
+
after = [ "network.target" "redis.service" "gitlab.service" ]; # gitlab.service creates configs
+
wantedBy = [ "multi-user.target" ];
+
+
path = [ pkgs.unzip ];
+
+
serviceConfig = {
+
Type = "simple";
+
TimeoutSec = "infinity";
+
Restart = "on-failure";
+
+
User = cfg.user;
+
Group = cfg.group;
+
+
ExecStart = "${cfg.packages.pages}/bin/gitlab-pages ${escapeShellArgs pagesArgs}";
+
WorkingDirectory = gitlabEnv.HOME;
};
};
+24
pkgs/servers/http/gitlab-pages/default.nix
···
+
{ buildGoModule, lib, fetchFromGitLab }:
+
+
buildGoModule rec {
+
pname = "gitlab-pages";
+
version = "1.21.0";
+
+
src = fetchFromGitLab {
+
owner = "gitlab-org";
+
repo = "gitlab-pages";
+
rev = "v${version}";
+
sha256 = "0f317lx4iarlsbnq2ipcm4lpx66xzl8wfilj8xajq1csz19ws24z";
+
};
+
+
vendorSha256 = "186rxvl523n1d87jz4zzbj83ikzw9d0c1wrj78xs4iqzm8z3snh0";
+
subPackages = [ "." ];
+
doCheck = false; # Broken
+
+
meta = with lib; {
+
description = "Daemon used to serve static websites for GitLab users";
+
homepage = "https://gitlab.com/gitlab-org/gitlab-pages";
+
license = licenses.mit;
+
maintainers = with maintainers; [ das_j ];
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
gatling = callPackage ../servers/http/gatling { };
+
gitlab-pages = callPackage ../servers/http/gitlab-pages { };
+
glabels = callPackage ../applications/graphics/glabels { };
nats-server = callPackage ../servers/nats-server { };