From 7b89d60ddb6bca484bfa3358ddd3dd1c8239252a Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 2 Jan 2021 08:54:18 +0000 Subject: modules/cgit: init This will make it easier to move things out of the big nginx configuration in atuin.nix, and puts all the fiddly nginx setup for cgit in one place. --- sys/atuin.nix | 219 +++++++++++++++++++++------------------------------------- 1 file changed, 77 insertions(+), 142 deletions(-) (limited to 'sys') diff --git a/sys/atuin.nix b/sys/atuin.nix index b8cb19427edf..3902eb954182 100644 --- a/sys/atuin.nix +++ b/sys/atuin.nix @@ -5,6 +5,7 @@ ../modules/server ../modules/server/dns ../modules/server/irc + ../modules/server/cgit ../modules/server/ftp ../modules/server/nginx ../modules/server/tor @@ -136,6 +137,82 @@ users.groups.tls.members = [ "nginx" ]; users.users.qyliss.home = "/home/qyliss"; + services.cgit.instances.qyliss = { + vhost = "git.qyliss.net"; + config = pkgs.writeText "cgit.conf" '' + clone-prefix=https://git.qyliss.net + css=/cgit.css + enable-blame=1 + enable-commit-graph=1 + enable-follow-links=1 + enable-git-config=1 + enable-index-owner=0 + enable-log-filecount=1 + enable-log-linecount=1 + remove-suffix=1 + root-desc=Alyssa Ross's personal Git repositories + root-title=git.qyliss.net + snapshots=all + about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh + source-filter=${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py + virtual-root=/ + + scan-path=/home/qyliss/git + ''; + }; + + services.cgit.instances.spectrum = { + vhost = "spectrum-os.org"; + path = "/git"; + config = + let + cgitFooter = pkgs.writeText "cgit-footer.html" '' + + ''; + + spectrumReadme = pkgs.writeText "about.html" '' +
+ +

Contributing to Spectrum

+ +

+ Want to contribute to Spectrum? We'd love to have you. + Have a look at the online + documentation. + +

+ ''; + in + pkgs.writeText "cgit.conf" '' + clone-prefix=https://spectrum-os.org/git + css=/git/cgit.css + enable-blame=1 + enable-commit-graph=1 + enable-follow-links=1 + enable-git-config=1 + enable-index-owner=0 + enable-log-filecount=1 + enable-log-linecount=1 + footer=${cgitFooter} + remove-suffix=1 + root-desc=Web interface for Spectrum source code + root-readme=${spectrumReadme} + root-title=Spectrum Git Repository Browser + snapshots=all + about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh + source-filter=${pkgs.runCommandNoCC "source-filter.py" { + nativeBuildInputs = with pkgs; with python3.pkgs; [ wrapPython ]; + } '' + mkdir -p $out/bin + sed s/pastie/friendly/g >$out/bin/syntax-highlighting.py \ + <${pkgs.cgit}/lib/cgit/filters/.syntax-highlighting.py-wrapped + chmod +x $out/bin/syntax-highlighting.py + wrapPythonPrograms + ''}/bin/syntax-highlighting.py + + scan-path=/home/spectrum/git + ''; + }; services.nginx.virtualHosts = let @@ -148,35 +225,8 @@ "spectrum-os.org".locations = { "/".root = "/home/spectrum/www"; - "= /git".return = "301 /git/"; - "= /git/cgit.css".alias = cgitCss.outPath; - "/git/" = { - alias = "${pkgs.cgit}/cgit/"; - tryFiles = "$uri @spectrum-cgit"; - }; - - "@spectrum-cgit" = { - root = "${pkgs.cgit}/cgit"; - - extraConfig = '' - fastcgi_split_path_info ^(/git/)(.*)$; - - ${overrideFastcgiParams { - CGIT_CONFIG = spectrumCgitConfig; - SCRIPT_FILENAME = "$document_root/cgit.cgi"; - SCRIPT_NAME = "$fastcgi_script_name"; - PATH_INFO = "$fastcgi_path_info"; - QUERY_STRING = "$args"; - HTTP_HOST = "$server_name"; - }} - - fastcgi_pass unix:/run/fcgiwrap.sock; - ''; - }; - - "= /lists/archives/public-inbox.css".alias = publicInboxCss.outPath; "/lists/archives".proxyPass = "http://unix:/run/public-inbox-httpd.sock:/lists/archives"; @@ -194,93 +244,12 @@ }; "git.qyliss.net" = { - root = "${pkgs.cgit}/cgit"; - locations = { "= /cgit.css".alias = cgitCss.outPath; - - "@cgit".extraConfig = '' - ${overrideFastcgiParams { - CGIT_CONFIG = cgitConfig; - SCRIPT_FILENAME = "$document_root/cgit.cgi"; - PATH_INFO = "$uri"; - QUERY_STRING = "$args"; - HTTP_HOST = "$server_name"; - }} - - fastcgi_pass unix:/run/fcgiwrap.sock; - ''; }; - - extraConfig = '' - try_files $uri @cgit; - ''; }; }; - cgitConfig = pkgs.writeText "cgit.conf" '' - clone-prefix=https://git.qyliss.net - css=/cgit.css - enable-blame=1 - enable-commit-graph=1 - enable-follow-links=1 - enable-git-config=1 - enable-index-owner=0 - enable-log-filecount=1 - enable-log-linecount=1 - remove-suffix=1 - root-desc=Alyssa Ross's personal Git repositories - root-title=git.qyliss.net - snapshots=all - about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh - source-filter=${pkgs.cgit}/lib/cgit/filters/syntax-highlighting.py - virtual-root=/ - - scan-path=/home/qyliss/git - ''; - - overrideFastcgiParams = with lib; params: concatStrings (mapAttrsToList (n: v: '' - fastcgi_param ${n} ${if v == "" then ''""'' else v}; - '') ({ - SCRIPT_FILENAME = "$document_root$fastcgi_script_name"; - QUERY_STRING = "$query_string"; - REQUEST_METHOD = "$request_method"; - CONTENT_TYPE = "$content_type"; - CONTENT_LENGTH = "$content_length"; - - SCRIPT_NAME = "$fastcgi_script_name"; - REQUEST_URI = "$request_uri"; - DOCUMENT_URI = "$document_uri"; - DOCUMENT_ROOT = "$document_root"; - SERVER_PROTOCOL = "$server_protocol"; - REQUEST_SCHEME = "$scheme"; - HTTPS = "$https if_not_empty"; - - GATEWAY_INTERFACE = "CGI/1.1"; - SERVER_SOFTWARE = "nginx/$nginx_version"; - - REMOTE_ADDR = "$remote_addr"; - REMOTE_PORT = "$remote_port"; - SERVER_ADDR = "$server_addr"; - SERVER_PORT = "$server_port"; - SERVER_NAME = "$server_name"; - - REDIRECT_STATUS = "200"; - } // params)); - - spectrumReadme = pkgs.writeText "about.html" '' -
- -

Contributing to Spectrum

- -

- Want to contribute to Spectrum? We'd love to have you. - Have a look at the online - documentation. - -

- ''; - publicInboxCss = pkgs.runCommand "216light.css" {} '' unpackFile ${pkgs.public-inbox.src} cp */contrib/css/216light.css $out @@ -397,40 +366,6 @@ } '' cat $licenseHeaderPath ${pkgs.cgit}/cgit/cgit.css $extraCssPath > $out ''; - - cgitFooter = pkgs.writeText "cgit-footer.html" '' - - ''; - - spectrumCgitConfig = pkgs.writeText "cgit.conf" '' - clone-prefix=https://spectrum-os.org/git - css=/git/cgit.css - enable-blame=1 - enable-commit-graph=1 - enable-follow-links=1 - enable-git-config=1 - enable-index-owner=0 - enable-log-filecount=1 - enable-log-linecount=1 - footer=${cgitFooter} - remove-suffix=1 - root-desc=Web interface for Spectrum source code - root-readme=${spectrumReadme} - root-title=Spectrum Git Repository Browser - snapshots=all - about-filter=${pkgs.cgit}/lib/cgit/filters/about-formatting.sh - source-filter=${pkgs.runCommandNoCC "source-filter.py" { - nativeBuildInputs = with pkgs; with python3.pkgs; [ wrapPython ]; - } '' - mkdir -p $out/bin - sed s/pastie/friendly/g >$out/bin/syntax-highlighting.py \ - <${pkgs.cgit}/lib/cgit/filters/.syntax-highlighting.py-wrapped - chmod +x $out/bin/syntax-highlighting.py - wrapPythonPrograms - ''}/bin/syntax-highlighting.py - - scan-path=/home/spectrum/git - ''; in lib.mapAttrs ( _: { forceSSL ? true, enableACME ? true, ... } @ args: -- cgit 1.4.1