about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--git.nix78
1 files changed, 31 insertions, 47 deletions
diff --git a/git.nix b/git.nix
index dc120f8..a18ff6a 100644
--- a/git.nix
+++ b/git.nix
@@ -1,5 +1,5 @@
 # HTTP Git hosting
-# Copyright (C) 2023  Nguyễn Gia Phong
+# Copyright (C) 2023-2024  Nguyễn Gia Phong
 #
 # This file is part of loang configuration.
 #
@@ -20,57 +20,41 @@
 let
   inherit (config.networking) domain;
   cgit = pkgs.cgit-pink;
-in {
-  services = let
-    cgitrc = pkgs.writeText "cgitrc" ''
-      about-filter=${cgit}/lib/cgit/filters/about-formatting.sh
-      css=/style.css
-      favicon=/favicon.ico
-      logo=/cgit.png
-      source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py
-      virtual-root=/
+  css = builtins.readFile "${cgit}/cgit/cgit.css" + ''
 
-      clone-url=${httpsClone} ${sshClone}
-      enable-blame=1
-      enable-git-config=1
-      enable-index-links=1
-      enable-index-owner=0
-      readme=:README.md
-      snapshots=tar.gz tar.zst
-      scan-path=${scanPath}
-    '';
-    css = builtins.readFile "${cgit}/cgit/cgit.css" + ''
+    div#cgit {
+        font-size: initial;
+    }
+  '';
+  httpsClone = "https://trong.${domain}/$CGIT_REPO_URL";
+  scanPath = "/var/lib/git";
+  sshClone = "ssh://${domain}:2211${scanPath}/$CGIT_REPO_URL";
+in {
+  services = {
+    cgit.trong = {
+      enable = true;
+      nginx.virtualHost = "trong.${domain}";
+      package = cgit;
+      scanPath = scanPath;
+      settings = {
+        about-filter = "${cgit}/lib/cgit/filters/about-formatting.sh";
+        source-filter = "${cgit}/lib/cgit/filters/syntax-highlighting.py";
+        css = "/style.css";
 
-      div#cgit {
-          font-size: initial;
-      }
-    '';
-    httpsClone = "https://trong.${domain}/$CGIT_REPO_URL";
-    scanPath = "/var/lib/git";
-    sshClone = "ssh://${domain}:2211${scanPath}/$CGIT_REPO_URL";
-  in {
-    fcgiwrap.enable = true;
+        clone-url = "${httpsClone} ${sshClone}";
+        enable-blame = true;
+        enable-git-config = true;
+        enable-index-links = true;
+        enable-index-owner = false;
+        readme = ":README.md";
+        snapshots = "tar.gz";
+      };
+    };
 
-    nginx.virtualHosts."trong.${domain}" = {
+    nginx.virtualHosts."${config.services.cgit.trong.nginx.virtualHost}" = {
       enableACME = true;
       forceSSL = true;
-      locations = {
-        "/" = {
-          root = "${cgit}/cgit/";
-          tryFiles = "$uri @cgit";
-        };
-        "~ ^/(cgit.png|favicon.ico|robots.txt)$".alias = "${cgit}/cgit/$1";
-        "= /style.css".alias = builtins.toFile "style.css" css;
-        "@cgit".extraConfig = ''
-          include ${pkgs.nginx}/conf/fastcgi_params;
-          fastcgi_param CGIT_CONFIG ${cgitrc};
-          fastcgi_param HTTP_HOST $server_name;
-          fastcgi_param PATH_INFO $uri;
-          fastcgi_param QUERY_STRING $args;
-          fastcgi_param SCRIPT_FILENAME ${cgit}/cgit/cgit.cgi;
-          fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
-        '';
-      };
+      locations."= /style.css".alias = builtins.toFile "style.css" css;
     };
   };
 }