aboutsummaryrefslogtreecommitdiff
path: root/modules/services/cgit.nix
blob: 9b1b3c416fa7bec93243ece38e10d6ac8e64394d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  flake.modules.nixos.cgit =
    {
      config,
      lib,
      pkgs,
      ...
    }:
    {
      services.cgit."git-server" = {
        enable = true;

        scanPath = "/var/lib/git-server";

        user = "git";
        group = "git";

        nginx.virtualHost = "git.schererleander.de";

        gitHttpBackend = {
          enable = true;
          checkExportOkFiles = false;
        };

        settings = {
          "root-title" = "My Git Repositories";
          "root-desc" = "Self-hosted NixOS Git server";
          "clone-url" =
            "https://git.schererleander.de/$CGIT_REPO_URL ssh://git@git.schererleander.de/$CGIT_REPO_URL";
          "enable-http-clone" = 1;
          "enable-commit-graph" = 1;
          "enable-log-filecount" = 1;
          "enable-log-linecount" = 1;
          "branch-sort" = "age";

          readme = ":README.md";

          "about-filter" = "${pkgs.writeShellScript "cgit-about-filter" ''
            case "$1" in
              *.md) 
                ${pkgs.lowdown}/bin/lowdown -Thtml --html-no-skiphtml --html-no-escapehtml 
                ;;
              *) 
                ${pkgs.coreutils}/bin/cat 
                ;;
            esac
          ''}";
        };
      };

      services.nginx.virtualHosts."git.schererleander.de" = {
        forceSSL = true;
        sslCertificate = config.sops.secrets."cert_fullchain".path;
        sslCertificateKey = config.sops.secrets."cert_private".path;
      };
    };
}