]> Repositories - machines.git/blob - levanter/git-server.nix
Add words to spell check
[machines.git] / levanter / git-server.nix
1 { ayo_public_key, pkgs, config, ... }: let
2         group = "git";
3         user = "git";
4         home = "/srv/${user}";
5 in {
6         users = {
7                 groups.${group} = {};
8
9                 users = {
10                         "caddy".extraGroups = [ "git" ];
11
12                         ${user} = {
13                                 isSystemUser = true;
14                                 inherit group home;
15                                 homeMode = "750";
16                                 createHome = true;
17                                 useDefaultShell = true;
18                                 openssh.authorizedKeys.keys = [ ayo_public_key ];
19                         };
20                 };
21         };
22
23         home-manager = {
24                 useUserPackages = true;
25                 useGlobalPkgs = true;
26
27                 users.${user} = {
28                         home.stateVersion = "26.05";
29
30                         programs.git = {
31                                 enable = true;
32                                 settings.init.defaultBranch = "main";
33                         };
34                 };
35         };
36
37         services = {
38                 caddy.virtualHosts."git.ayoreis.com".extraConfig = let
39                         gitweb = pkgs.gitweb;
40                 in ''
41                         @git header User-Agent git/*
42                         root ${gitweb}
43                         file_server /static/*
44
45                         cgi @git ${pkgs.git}/bin/git-http-backend {
46                                 env GIT_PROJECT_ROOT=${home}
47                         }
48
49                         cgi ${gitweb}/gitweb.cgi {
50                                 env GITWEB_CONFIG=${config.services.gitweb.gitwebConfigFile}
51                         }
52                 '';
53
54                 gitweb.extraConfig = ''
55                         our $export_ok = "git-daemon-export-ok";
56                         our $site_name = "Repositories";
57                         $feature{'pathinfo'}{'default'} = [1];
58                 '';
59         };
60
61         programs.git = {
62                 enable = true;
63                 config.safe.directory = "*";
64         };
65 }