diff options
Diffstat (limited to 'ops')
-rw-r--r-- | ops/machines/whitby/default.nix | 2 | ||||
-rw-r--r-- | ops/modules/cgit.nix | 39 | ||||
-rw-r--r-- | ops/modules/cgit/default.nix | 92 | ||||
-rw-r--r-- | ops/modules/cgit/thttpd_cgi_idx.patch | 13 |
4 files changed, 40 insertions, 106 deletions
diff --git a/ops/machines/whitby/default.nix b/ops/machines/whitby/default.nix index fc5badd9d8a5..ea841e410df7 100644 --- a/ops/machines/whitby/default.nix +++ b/ops/machines/whitby/default.nix @@ -10,7 +10,7 @@ in { imports = [ (mod "atward.nix") - (mod "cgit/default.nix") + (mod "cgit.nix") (mod "clbot.nix") (mod "gerrit-queue.nix") (mod "irccat.nix") 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. |