summary refs log tree commit diff
path: root/hosts/vps/git.nix
blob: 3ad26c0c1b77514d504fef04bbd82f207a55aed1 (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
{ pkgs, config, ... }:

{
  config = {
    users.users.git = {
      isSystemUser = true;
      description = "git";
      home = "/home/git";
      shell = "${pkgs.git}/bin/git-shell";
      openssh.authorizedKeys.keys = [
        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMDyzrs9sbstv3KFK5FV8qYlSknnEy8Cn+qch4dJLmHA"
      ];
    };
    services = {
      fcgiwrap.enable = true;
      caddy = {
        virtualHosts."http://localhost".extraConfig = ''
          reverse_proxy localhost:5678 { 
            transport fastcgi {
              env SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi
              env CGIT_CONFIG ${pkgs.writeText "cgitrc" (lib.generators.toKeyValue { } {
                clone-url = (lib.concatStringsSep " " [
                  "http://$HTTP_HOST$SCRIPT_NAME/$CGIT_REPO_URL"
                  "ssh://git@git.example.com:$CGIT_REPO_URL"
                ]);
                enable-log-filecount = 1;
                enable-log-linecount = 1;
                enable-git-config = 1;
                root-title = "git.example.com";
                root-desc = "Tzlil's Git Repositories";
                scan-path = "/home/git";
              })}
            } 
          }
        '';
      }
    };
    environment.persistence."/nix/persist".directories = [ "/home/git" ];
  };
}