diff options
Diffstat (limited to 'Biz/Cloud/Cgit.nix')
-rw-r--r-- | Biz/Cloud/Cgit.nix | 85 |
1 files changed, 37 insertions, 48 deletions
diff --git a/Biz/Cloud/Cgit.nix b/Biz/Cloud/Cgit.nix index 0b3a71b..23fa00f 100644 --- a/Biz/Cloud/Cgit.nix +++ b/Biz/Cloud/Cgit.nix @@ -4,20 +4,21 @@ with lib; let globalConfig = config; settingsFormat = { - type = with lib.types; let - value = oneOf [ int str ] // { - description = "INI-like atom (int or string)"; - }; - values = coercedTo value lib.singleton (listOf value) // { - description = value.description + " or a list of them for duplicate keys"; - }; - in - attrsOf (values); + type = with lib.types; + let + value = oneOf [ int str ] // { + description = "INI-like atom (int or string)"; + }; + values = coercedTo value lib.singleton (listOf value) // { + description = value.description + + " or a list of them for duplicate keys"; + }; + in attrsOf (values); generate = name: values: - pkgs.writeText name (lib.generators.toKeyValue { listsAsDuplicateKeys = true; } values); + pkgs.writeText name + (lib.generators.toKeyValue { listsAsDuplicateKeys = true; } values); }; -in -{ +in { options.services.nginx.virtualHosts = mkOption { type = types.attrsOf (types.submodule ({ config, ... }: let @@ -48,8 +49,7 @@ in # Remove the global options for serialization into cgitrc settings = removeAttrs cfg (attrNames options); - in - { + in { options.cgit = mkOption { type = types.submodule { freeformType = settingsFormat.type; @@ -86,60 +86,49 @@ in ''; }; - config = let - location = removeSuffix "/" cfg.location; + config = let location = removeSuffix "/" cfg.location; in mkIf cfg.enable { locations."${location}/" = { root = "${pkgs.cgit}/cgit/"; tryFiles = "$uri @cgit"; }; - locations."~ ^${location}/(cgit.(css|png)|favicon.ico|robots.txt)$" = { - alias = "${pkgs.cgit}/cgit/$1"; - }; + locations."~ ^${location}/(cgit.(css|png)|favicon.ico|robots.txt)$" = + { + alias = "${pkgs.cgit}/cgit/$1"; + }; locations."@cgit" = { extraConfig = '' include ${pkgs.nginx}/conf/fastcgi_params; - fastcgi_param CGIT_CONFIG ${settingsFormat.generate "cgitrc" settings}; + fastcgi_param CGIT_CONFIG ${ + settingsFormat.generate "cgitrc" settings + }; fastcgi_param SCRIPT_FILENAME ${pkgs.cgit}/cgit/cgit.cgi; fastcgi_param QUERY_STRING $args; fastcgi_param HTTP_HOST $server_name; fastcgi_pass unix:${globalConfig.services.fcgiwrap.socketAddress}; - '' + ( - if cfg.location == "/" - then - '' - fastcgi_param PATH_INFO $uri; - '' - else - '' - fastcgi_split_path_info ^(${location}/)(/?.+)$; - fastcgi_param PATH_INFO $fastcgi_path_info; - '' - ) + ( - if !cfg.allowCrawlers - then - '' - add_header X-Robots-Tag "noindex, follow" always; - '' - else "" - ); + '' + (if cfg.location == "/" then '' + fastcgi_param PATH_INFO $uri; + '' else '' + fastcgi_split_path_info ^(${location}/)(/?.+)$; + fastcgi_param PATH_INFO $fastcgi_path_info; + '') + (if !cfg.allowCrawlers then '' + add_header X-Robots-Tag "noindex, follow" always; + '' else + ""); }; }; })); }; - config = - let - vhosts = config.services.nginx.virtualHosts; - in - mkIf (any (name: vhosts.${name}.cgit.enable) (attrNames vhosts)) { - # make the cgitrc manpage available - environment.systemPackages = [ pkgs.cgit ]; + config = let vhosts = config.services.nginx.virtualHosts; + in mkIf (any (name: vhosts.${name}.cgit.enable) (attrNames vhosts)) { + # make the cgitrc manpage available + environment.systemPackages = [ pkgs.cgit ]; - services.fcgiwrap.enable = true; - }; + services.fcgiwrap.enable = true; + }; meta = { maintainers = with lib.maintainers; [ bsima ]; # afix-space hmenke ]; |