From: Ayo Reis Date: Sun, 8 Feb 2026 17:08:30 +0000 (+0000) Subject: Configure gitweb and git-http-backend X-Git-Url: https://git.ayoreis.com/machines.git/commitdiff_plain/883ae475e49fa55b6cba1d36888c88fa208a2633?ds=sidebyside Configure gitweb and git-http-backend --- diff --git a/levanter/caddy.nix b/levanter/caddy.nix new file mode 100644 index 0000000..cf25941 --- /dev/null +++ b/levanter/caddy.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: { + networking.firewall.allowedTCPPorts = [ 443 ]; + + services.caddy = { + enable = true; + + package = pkgs.caddy.withPlugins { + plugins = [ "github.com/aksdb/caddy-cgi/v2@v2.2.7" ]; + hash = "sha256-0JbPUml6UF81Tmj+wrbOPvOfuKgXCt/4g3R7fBkOGNs="; + }; + }; +} diff --git a/levanter/configuration.nix b/levanter/configuration.nix index ef0c420..0f3fa43 100644 --- a/levanter/configuration.nix +++ b/levanter/configuration.nix @@ -2,6 +2,7 @@ imports = [ ./hardware-configuration.nix ./disko.nix + ./caddy.nix ./komuhn-website.nix ./git-server.nix ]; 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 = "*"; + }; } diff --git a/levanter/komuhn-website.nix b/levanter/komuhn-website.nix index 28e10ad..8328d4b 100644 --- a/levanter/komuhn-website.nix +++ b/levanter/komuhn-website.nix @@ -1,6 +1,4 @@ { pkgs, ... }: { - networking.firewall.allowedTCPPorts = [ 443 ]; - services.wordpress = { webserver = "caddy";