diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml
index 1e488b59343..ff00c4feb31 100644
--- a/nixos/doc/manual/configuration/configuration.xml
+++ b/nixos/doc/manual/configuration/configuration.xml
@@ -26,6 +26,7 @@ effect after you run nixos-rebuild.
+
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index b4eb3cde81b..4eda7f94ab4 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -56,6 +56,7 @@ let
cp -prd $sources/* . # */
chmod -R u+w .
cp ${../../modules/services/databases/postgresql.xml} configuration/postgresql.xml
+ cp ${../../modules/services/misc/gitlab.xml} configuration/gitlab.xml
cp ${../../modules/security/acme.xml} configuration/acme.xml
cp ${../../modules/misc/nixos.xml} configuration/nixos.xml
ln -s ${optionsDocBook} options-db.xml
diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml
index 22e605718e3..5bad7f63b61 100644
--- a/nixos/doc/manual/release-notes/rl-unstable.xml
+++ b/nixos/doc/manual/release-notes/rl-unstable.xml
@@ -231,6 +231,14 @@ programs.ibus.plugins = with pkgs; [ ibus-anthy mozc ];
overriden by anything else.
+
+ Large parts of the services.gitlab module has been
+ been rewritten. There are new configuration options available. The
+ stateDir option was renamned to
+ statePath and the satellitesDir option
+ was removed. Please review the currently available options.
+
+
diff --git a/nixos/modules/services/misc/gitlab.xml b/nixos/modules/services/misc/gitlab.xml
new file mode 100644
index 00000000000..b630fe42113
--- /dev/null
+++ b/nixos/modules/services/misc/gitlab.xml
@@ -0,0 +1,103 @@
+
+
+Gitlab
+
+Gitlab is a feature-rich git hosting service.
+
+Prerequisites
+
+The gitlab service exposes only an Unix socket at
+/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:
+
+
+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;
+ }
+ }
+'';
+
+
+
+
+
+Configuring
+
+Gitlab depends on both PostgreSQL and Redis and will automatically enable
+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.
+
+A basic configuration could look like this:
+
+
+services.gitlab = {
+ enable = true;
+ databasePassword = "eXaMpl3";
+ initialRootPassword = "UseNixOS!";
+ https = true;
+ host = "git.example.com";
+ port = 443;
+ user = "git";
+ group = "git";
+ extraConfig = {
+ gitlab = {
+ default_projects_features = { builds = false; };
+ };
+ };
+};
+
+
+
+Refer to for all available configuration
+options for the services.gitlab module.
+
+
+
+Maintenance
+
+You can run all Gitlab related commands like rake tasks with
+gitlab-runner which will be available on the system
+when gitlab is enabled. You will have to run the commands as the user that
+you configured to run gitlab.
+
+For instance, to backup a Gitlab instance:
+
+
+$ sudo -u git -H gitlab-runner exec rake gitlab:backup:create
+
+
+A list of all availabe rake tasks can be obtained by running:
+
+
+$ sudo -u git -H gitlab-runner exec rake -T
+
+
+
+
+
+