]> Repositories - machines.git/commitdiff
Configure gitweb and git-http-backend
authorAyo Reis <hey@ayoreis.com>
Sun, 8 Feb 2026 17:08:30 +0000 (17:08 +0000)
committerAyo Reis <hey@ayoreis.com>
Sun, 8 Feb 2026 17:08:30 +0000 (17:08 +0000)
levanter/caddy.nix [new file with mode: 0644]
levanter/configuration.nix
levanter/git-server.nix
levanter/komuhn-website.nix

diff --git a/levanter/caddy.nix b/levanter/caddy.nix
new file mode 100644 (file)
index 0000000..cf25941
--- /dev/null
@@ -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=";
+               };
+       };
+}
index ef0c420063b1e3c2452bdc0e0ef28e1dafbbbcd9..0f3fa436cec227462cc67a88af0afa3a3af5a1ed 100644 (file)
@@ -2,6 +2,7 @@
        imports = [
                ./hardware-configuration.nix
                ./disko.nix
        imports = [
                ./hardware-configuration.nix
                ./disko.nix
+               ./caddy.nix
                ./komuhn-website.nix
                ./git-server.nix
        ];
                ./komuhn-website.nix
                ./git-server.nix
        ];
index 5f806ef13fe2ae505dcc19dcfbccb2d4d650dc21..51fb4aa43b125d92cf5d0ab8f60dd0a14f34c79f 100644 (file)
@@ -1,17 +1,22 @@
-{ ayo_public_key, ... }: let
+{ ayo_public_key, pkgs, config, ... }: let
        group = "git";
        user = "git";
        group = "git";
        user = "git";
+       home = "/srv/${user}";
 in {
        users = {
                groups.${group} = {};
 
 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;
 
                        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 = "*";
+       };
 }
 }
index 28e10add9bb95ae1e56757fcffaf1adb7b93ba98..8328d4b5174b5c843d952c6f101f8982798b98ae 100644 (file)
@@ -1,6 +1,4 @@
 { pkgs, ... }: {
 { pkgs, ... }: {
-       networking.firewall.allowedTCPPorts = [ 443 ];
-
        services.wordpress = {
                webserver = "caddy";
 
        services.wordpress = {
                webserver = "caddy";