diff --git a/nixos/modules/services/misc/gitlab.xml b/nixos/modules/services/misc/gitlab.xml
index 30bc39d2568..a8147b3a74f 100644
--- a/nixos/modules/services/misc/gitlab.xml
+++ b/nixos/modules/services/misc/gitlab.xml
@@ -14,29 +14,22 @@
/run/gitlab/gitlab-workhorse.socket. You need to configure a
webserver to proxy HTTP requests to the socket.
-For instance, this could be used for Nginx:
+For instance, the following configuration could be used to use nginx as
+ frontend proxy:
-services.nginx.httpConfig = ''
- server {
- server_name git.example.com;
- listen 443 ssl spdy;
- listen [::]:443 ssl spdy;
-
- ssl_certificate /var/lib/acme/git.example.com/fullchain.pem;
- ssl_certificate_key /var/lib/acme/git.example.com/key.pem;
-
- location / {
- proxy_http_version 1.1;
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-Ssl on;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- proxy_pass http://unix:/run/gitlab/gitlab-workhorse.socket;
- }
- }
+ services.nginx = {
+ enable = true;
+ recommendedGzipSettings = true;
+ recommendedOptimisation = true;
+ recommendedProxySettings = true;
+ recommendedTlsSettings = true;
+ virtualHosts."git.example.com" = {
+ enableACME = true;
+ forceSSL = true;
+ locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
+ };
+ };
'';
@@ -49,10 +42,10 @@ services.nginx.httpConfig = ''
both services. In the case of PostgreSQL, a database and a role will be created.
-The default state dir is /var/gitlab/state. This is where all data like
-the repositories and uploads will be stored.
+The default state dir is /var/gitlab/state. This is where
+all data like the repositories and uploads will be stored.
-A basic configuration could look like this:
+A basic configuration with some custom settings could look like this:
services.gitlab = {
@@ -64,8 +57,16 @@ services.gitlab = {
port = 443;
user = "git";
group = "git";
+ smtp = {
+ enable = true;
+ address = "localhost";
+ port = 25;
+ };
extraConfig = {
gitlab = {
+ email_from = "gitlab-no-reply@example.com";
+ email_display_name = "Example GitLab";
+ email_reply_to = "gitlab-no-reply@example.com";
default_projects_features = { builds = false; };
};
};