about summary refs log tree commit diff
path: root/ops/modules
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-06-22T16·24+0300
committertazjin <tazjin@tvl.su>2022-06-27T14·15+0000
commit1094306aa95476a16f28083d4e903bb3e5c2b3dc (patch)
tree17fbb2d8bbe028d28df686d22d3da6656a00a386 /ops/modules
parent32b75c45c527ec4469e6f0848e3b097c2f7b1fd6 (diff)
refactor(web/cgit-tvl): Move cgit config back out of module r/4254
It occured to me yesterday that with the config inside of the module
it is kind of difficult to test cgit locally.

This moves it back to a separate location (//web/cgit-tvl) and makes
the most important things configurable via overrides.

Change-Id: I9b0f4c60b75c31441e1718e63b5b55aba3100aae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5893
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'ops/modules')
-rw-r--r--ops/modules/cgit.nix39
-rw-r--r--ops/modules/cgit/default.nix92
-rw-r--r--ops/modules/cgit/thttpd_cgi_idx.patch13
3 files changed, 39 insertions, 105 deletions
diff --git a/ops/modules/cgit.nix b/ops/modules/cgit.nix
new file mode 100644
index 000000000000..25318d1d723e
--- /dev/null
+++ b/ops/modules/cgit.nix
@@ -0,0 +1,39 @@
+# Configuration for running the TVL cgit instance using thttpd.
+{ config, depot, lib, pkgs, ... }:
+
+let
+  cfg = config.services.depot.cgit;
+in
+{
+  options.services.depot.cgit = with lib; {
+    enable = mkEnableOption "Run cgit web interface for depot";
+
+    port = mkOption {
+      description = "Port on which cgit should listen";
+      type = types.int;
+      default = 2448;
+    };
+
+    repo = mkOption {
+      description = "Path to depot's .git folder on the machine";
+      type = types.str;
+      default = "/var/lib/gerrit/git/depot.git/";
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    systemd.services.cgit = {
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        Restart = "on-failure";
+        User = "git";
+        Group = "git";
+
+        ExecStart = depot.web.cgit-tvl.override {
+          inherit (cfg) port repo;
+        };
+      };
+    };
+  };
+}
diff --git a/ops/modules/cgit/default.nix b/ops/modules/cgit/default.nix
deleted file mode 100644
index 580b8384bd90..000000000000
--- a/ops/modules/cgit/default.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-# Configuration for running the TVL cgit instance using thttpd.
-{ config, depot, lib, pkgs, ... }:
-
-let
-  inherit (pkgs) writeText;
-
-  cfg = config.services.depot.cgit;
-
-  cgitConfig = writeText "cgitrc" ''
-    # Global configuration
-    virtual-root=/
-    enable-http-clone=0
-    readme=:README.md
-    about-filter=${depot.tools.cheddar.about-filter}/bin/cheddar-about
-    source-filter=${depot.tools.cheddar}/bin/cheddar
-    enable-log-filecount=1
-    enable-log-linecount=1
-    enable-follow-links=1
-    enable-blame=1
-    mimetype-file=${pkgs.mime-types}/etc/mime.types
-    logo=https://static.tvl.fyi/${depot.web.static.drvHash}/logo-animated.svg
-
-    # Repository configuration
-    repo.url=depot
-    repo.path=/var/lib/gerrit/git/depot.git/
-    repo.desc=monorepo for the virus lounge
-    repo.owner=The Virus Lounge
-    repo.clone-url=https://code.tvl.fyi/depot.git
-  '';
-
-  thttpdConfig = writeText "thttpd.conf" ''
-    port=${toString cfg.port}
-    dir=${depot.third_party.cgit}/cgit
-    nochroot
-    novhost
-    cgipat=**.cgi
-  '';
-
-  # Patched version of thttpd that serves cgit.cgi as the index and
-  # sets the environment variable for pointing cgit at the correct
-  # configuration.
-  #
-  # Things are done this way because recompilation of thttpd is much
-  # faster than cgit.
-  thttpdConfigPatch = writeText "thttpd_cgit_conf.patch" ''
-    diff --git a/libhttpd.c b/libhttpd.c
-    index c6b1622..eef4b73 100644
-    --- a/libhttpd.c
-    +++ b/libhttpd.c
-    @@ -3055,4 +3055,6 @@ make_envp( httpd_conn* hc )
-
-         envn = 0;
-    +    // force cgit to load the correct configuration
-    +    envp[envn++] = "CGIT_CONFIG=${cgitConfig}";
-         envp[envn++] = build_env( "PATH=%s", CGI_PATH );
-     #ifdef CGI_LD_LIBRARY_PATH
-  '';
-
-  thttpdCgit = pkgs.thttpd.overrideAttrs (old: {
-    patches = [
-      ./thttpd_cgi_idx.patch
-      thttpdConfigPatch
-    ];
-  });
-in
-{
-  options.services.depot.cgit = with lib; {
-    enable = mkEnableOption "Run cgit web interface for depot";
-
-    port = mkOption {
-      description = "Port on which cgit should listen";
-      type = types.int;
-      default = 2448;
-    };
-  };
-
-  config = lib.mkIf cfg.enable {
-    systemd.services.cgit = {
-      wantedBy = [ "multi-user.target" ];
-
-      serviceConfig = {
-        Restart = "on-failure";
-        User = "git";
-        Group = "git";
-
-        ExecStart = pkgs.writeShellScript "cgit-launch" ''
-          exec ${thttpdCgit}/bin/thttpd -D -C ${thttpdConfig}
-        '';
-      };
-    };
-  };
-}
diff --git a/ops/modules/cgit/thttpd_cgi_idx.patch b/ops/modules/cgit/thttpd_cgi_idx.patch
deleted file mode 100644
index 67dbc0c7ab80..000000000000
--- a/ops/modules/cgit/thttpd_cgi_idx.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/config.h b/config.h
-index 65ab1e3..cde470f 100644
---- a/config.h
-+++ b/config.h
-@@ -327,7 +327,7 @@
- /* CONFIGURE: A list of index filenames to check.  The files are searched
- ** for in this order.
- */
--#define INDEX_NAMES "index.html", "index.htm", "index.xhtml", "index.xht", "Default.htm", "index.cgi"
-+#define INDEX_NAMES "cgit.cgi"
- 
- /* CONFIGURE: If this is defined then thttpd will automatically generate
- ** index pages for directories that don't have an explicit index file.