]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/websites/tools/git/gitweb.nix
Add tabs to root link for cgit
[perso/Immae/Config/Nix.git] / modules / private / websites / tools / git / gitweb.nix
index 2ee7a63a5b804b34684102271a7a3a7f2819a98e..40f99e061fb4e3f91f05ccdb644235d1f2722bc9 100644 (file)
@@ -1,7 +1,6 @@
-{ gitweb, writeText, gitolite, git, gitoliteDir, highlight }:
+{ gitweb, writeText, stdenv, coreutils, writeScript, gitolite, git, cgit, gitoliteDir, mailcap, highlight }:
 rec {
   varDir = gitoliteDir;
-  webRoot = gitweb;
   config = writeText "gitweb.conf" ''
     $git_temp = "/tmp";
 
@@ -29,12 +28,56 @@ rec {
     $project_list_default_category = "__Others__";
     $highlight_bin = "${highlight}/bin/highlight";
     '';
+  aboutFilter = writeScript "about-filter.sh" ''
+    #!${stdenv.shell}
+
+    if [ -f "$CGIT_REPO_PATH/README.html" ]; then
+      cat "$CGIT_REPO_PATH/README.html"
+    else
+      ${cgit}/lib/cgit/filters/about-formatting.sh "$@"
+    fi
+  '';
+  cgitConfig = writeText "cgitrc" ''
+    css=/cgit-css/cgit.css
+    logo=/cgit-css/cgit.png
+    favicon=/cgit-css/favicon.ico
+    head-include=${./cgit_js.html}
+
+    root-title=Immae’s git
+    root-desc=To go back to the old interface: https://git.immae.eu/?old
+    readme=:README.md
+    readme=:readme.md
+    readme=:README
+    readme=:DOCUMENTATION.md
+    about-filter=${aboutFilter}
+    #${cgit}/lib/cgit/filters/about-formatting.sh
+    source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py
+
+    enable-blame=1
+    enable-index-links=1
+    enable-commit-graph=1
+    enable-log-filecount=1
+    enable-log-linecount=1
+
+    enable-html-serving=1
+    # Allow using gitweb.* keys
+    enable-git-config=1
+
+    side-by-side-diffs=1
+    snapshots=tar.gz tar.zst zip
+    mimetype-file=${mailcap}/etc/mime.types
+
+    section=__Others__
+    clone-url=ssh://gitolite@git.immae.eu/$CGIT_REPO_URL https://git.immae.eu/$CGIT_REPO_URL
+    #section-from-path=1
+    project-list=${varDir}/projects.list
+    scan-path=${varDir}/repositories
+    '';
   apache = rec {
     user = "wwwrun";
     group = "wwwrun";
     modules = [ "cgid" ];
-    webappName = "tools_gitweb";
-    root = "/run/current-system/webapps/${webappName}";
+    root = gitweb;
     vhostConf = ''
       SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
       ScriptAliasMatch \
@@ -59,6 +102,23 @@ rec {
           SetEnv  GITWEB_CONFIG  "${config}"
         </Files>
       </Directory>
+
+      SetEnv CGIT_CONFIG ${cgitConfig}
+      ScriptAlias /cgit "${cgit}/cgit/cgit.cgi/"
+      Alias /cgit-css "${cgit}/cgit"
+      <Directory "${cgit}/cgit/">
+        AllowOverride None
+        Options ExecCGI FollowSymlinks
+        Require all granted
+      </Directory>
+
+      RewriteEngine On
+      RewriteCond %{QUERY_STRING} ^$
+      RewriteRule ^/?$ /cgit [L,R=302]
+
+      RewriteCond %{REQUEST_URI} ^(.*)(\.git)?/?$
+      RewriteCond ${varDir}/repositories/%1.git/HEAD -f
+      RewriteRule ^(.+)$ /cgit$1 [L,R=302]
       '';
   };
 }