{ config, pkgs, ... }:
{
  users.extraUsers.git = { home = config.services.gogs.stateDir; extraGroups = [ "git" ]; };
  users.extraGroups.git = { };

  services.gogs = rec {
    enable = true;
    stateDir = "/srv/git.gebner.org";
    user = "git";
    group = "git";
    appName = "Gabriel Ebner's git server";
    domain = "git.gebner.org";
    rootUrl = "https://git.gebner.org/";
    httpPort = 8001;
    cookieSecure = true;
    extraConfig = ''
      [picture]
      DISABLE_GRAVATAR = false
      AVATAR_UPLOAD_PATH = ${stateDir}/data/avatars

      [log]
      ROOT_PATH = ${stateDir}/logs
      MODE = file
      LEVEL = Info

      [service]
      DISABLE_REGISTRATION = true
    '';
  };

  services.nginx = {
    recommendedProxySettings = true;
    virtualHosts."git.gebner.org" = {
      forceSSL = true;
      useACMEHost = "gebner.org";
      locations."/" = {
        proxyPass = "http://127.0.0.1:${toString config.services.gogs.httpPort}";
        extraConfig = ''
          proxy_buffering off;
          client_max_body_size 30M;
        '';
      };
    };
  };
}