about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2024-09-21 11:22:25 -0700
committerFranck Cuny <franck@fcuny.net>2024-09-21 11:22:25 -0700
commit36713da57deaa6fe8a4bd6d7d9592e511ccbca76 (patch)
treeb6f6747a6b726041154e03076daa7d39a6bf7ace
parentI think this is the correct configuration (diff)
downloadworld-36713da57deaa6fe8a4bd6d7d9592e511ccbca76.tar.gz
try to configure using the cgit module
-rw-r--r--nix/hosts/wildcat/configuration.nix96
1 files changed, 31 insertions, 65 deletions
diff --git a/nix/hosts/wildcat/configuration.nix b/nix/hosts/wildcat/configuration.nix
index 67adf29..9df4496 100644
--- a/nix/hosts/wildcat/configuration.nix
+++ b/nix/hosts/wildcat/configuration.nix
@@ -1,57 +1,9 @@
-{ config, pkgs, ... }:
+{ lib, pkgs, ... }:
 let
   robots-deny = pkgs.writeText "robots.txt" ''
     User-agent: *
     Disallow: /
   '';
-
-  cgitrc = ''
-    # Global configuration
-    virtual-root=/
-
-    enable-http-clone=1
-    clone-url=https://git.fcuny.net/$CGIT_REPO_URL
-
-    # I've fewer than 150 repos, all should be able to be listed on
-    # the main page
-    max-repo-count=150
-
-    # limit to year for the stats
-    max-stats=year
-
-    snapshots=tar.gz
-
-    source-filter=${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py
-    about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh
-
-    enable-git-config=1
-    enable-index-owner=0
-
-    remove-suffix=1
-
-    # sort repositories by section and branches by date
-    repository-sort=age
-    branch-sort=age
-
-    readme=:README.md
-    readme=:README.org
-    readme=:readme.org
-
-    # print the number of modified files
-    enable-log-filecount=1
-    # print the number of modified lines
-    enable-log-linecount=1
-    enable-follow-links=1
-    enable-blame=1
-
-    root-title=¯\_(ツ)_/¯
-    root-desc=source code of my various projects
-    # don't index or follow
-    robots="noindex, nofollow"
-
-    project-list=/var/lib/gitolite/projects.list
-    scan-path=/var/lib/gitolite/repositories
-  '';
 in
 {
   networking = {
@@ -87,10 +39,37 @@ in
     '';
   };
 
-  services.fcgiwrap.instances = {
+  services.cgit.main = {
     enable = true;
-    user = "git";
-    group = "git";
+    nginx.virtualHost = "git.fcuny.net";
+    scanPath = "/var/lib/gitolite/repositories";
+    settings = {
+      css = "/cgit.css";
+      logo = "/cgit.png";
+      favicon = "/favicon.ico";
+      readme = ":README.md";
+      about-filter = "${pkgs.cgit-pink}/lib/cgit/filters/about-formatting.sh";
+      source-filter = "${pkgs.cgit-pink}/lib/cgit/filters/syntax-highlighting.py";
+      clone-url = (lib.concatStringsSep " " [
+        "https://git.fcuny.net/$CGIT_REPO_URL"
+      ]);
+      enable-log-filecount = 1;
+      enable-log-linecount = 1;
+      enable-git-config = 1;
+      enable-blame = 1;
+      enable-commit-graph = 1;
+      enable-follow-links = 1;
+      enable-index-links = 1;
+      enable-remote-branches = 1;
+      enable-subject-links = 1;
+      enable-tree-linenumbers = 1;
+      max-atom-items = 108;
+      max-commit-count = 250;
+      max-repo-count = 500;
+      snapshots = "tar.xz";
+      root-title = "¯\_(ツ)_/¯";
+      root-desc = "source code of my various projects";
+    };
   };
 
   services.nginx = {
@@ -125,22 +104,9 @@ in
           "/.well-known/acme-challenge" = {
             root = "/var/lib/acme/acme-challenges";
           };
-          "~* ^.+.(css|png|ico)$" = {
-            root = "${pkgs.cgit}/cgit";
-          };
           # as per https://github.com/yandex/gixy/blob/master/docs/en/plugins/aliastraversal.md
           # if you want to map a single file make sure the location starts with a =, e.g =/i.gif instead of /i.gif.
           "=/robots.txt".alias = robots-deny;
-          "/".extraConfig = ''
-            include ${pkgs.nginx}/conf/fastcgi_params;
-            fastcgi_param CGIT_CONFIG ${pkgs.writeText "cgitrc" cgitrc};
-            fastcgi_param SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi;
-            fastcgi_split_path_info ^(/?)(.+)$;
-            fastcgi_param PATH_INFO $fastcgi_path_info;
-            fastcgi_param HTTP_HOST $server_name;
-            fastcgi_param QUERY_STRING $args;
-            fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
-          '';
         };
       };
     };