X-Git-Url: https://git.ayoreis.com/machines.git/blobdiff_plain/53c136fb227c1f8a552ff190d16c5f630608f58d..18758ea8fe1c84fa2271d46ba86fd04c88aabe4e:/levanter/git-server.nix?ds=sidebyside diff --git a/levanter/git-server.nix b/levanter/git-server.nix index 5f806ef..51fb4aa 100644 --- a/levanter/git-server.nix +++ b/levanter/git-server.nix @@ -1,17 +1,22 @@ -{ ayo_public_key, ... }: let +{ ayo_public_key, pkgs, config, ... }: let group = "git"; user = "git"; + home = "/srv/${user}"; in { users = { groups.${group} = {}; - users.${user} = { - isSystemUser = true; - inherit group; - home = "/srv/${user}"; - createHome = true; - useDefaultShell = true; - openssh.authorizedKeys.keys = [ ayo_public_key ]; + users = { + "caddy".extraGroups = [ "git" ]; + + ${user} = { + isSystemUser = true; + inherit group home; + homeMode = "750"; + createHome = true; + useDefaultShell = true; + openssh.authorizedKeys.keys = [ ayo_public_key ]; + }; }; }; @@ -24,8 +29,37 @@ in { programs.git = { enable = true; - extraConfig.init.defaultBranch = "main"; + settings.init.defaultBranch = "main"; }; }; }; + + services = { + caddy.virtualHosts."git.ayoreis.com".extraConfig = let + gitweb = pkgs.gitweb; + in '' + @git header User-Agent git/* + root ${gitweb} + file_server /static/* + + cgi @git ${pkgs.git}/bin/git-http-backend { + env GIT_PROJECT_ROOT=${home} + } + + cgi ${gitweb}/gitweb.cgi { + env GITWEB_CONFIG=${config.services.gitweb.gitwebConfigFile} + } + ''; + + gitweb.extraConfig = '' + our $export_ok = "git-daemon-export-ok"; + our $site_name = "Repositories"; + $feature{'pathinfo'}{'default'} = [1]; + ''; + }; + + programs.git = { + enable = true; + config.safe.directory = "*"; + }; }