diff options
Diffstat (limited to 'nixos/modules/services/web-apps/rss-bridge.nix')
-rw-r--r-- | nixos/modules/services/web-apps/rss-bridge.nix | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/nixos/modules/services/web-apps/rss-bridge.nix b/nixos/modules/services/web-apps/rss-bridge.nix deleted file mode 100644 index b03c7f7e8069..000000000000 --- a/nixos/modules/services/web-apps/rss-bridge.nix +++ /dev/null @@ -1,150 +0,0 @@ -{ config, lib, pkgs, ... }: -with lib; -let - cfg = config.services.rss-bridge; - - poolName = "rss-bridge"; - - configAttr = lib.recursiveUpdate { FileCache.path = "${cfg.dataDir}/cache/"; } cfg.config; - cfgHalf = lib.mapAttrsRecursive (path: value: let - envName = lib.toUpper ("RSSBRIDGE_" + lib.concatStringsSep "_" path); - envValue = if lib.isList value then - lib.concatStringsSep "," value - else if lib.isBool value then - lib.boolToString value - else - toString value; - in "fastcgi_param \"${envName}\" \"${envValue}\";") configAttr; - cfgEnv = lib.concatStringsSep "\n" (lib.collect lib.isString cfgHalf); -in -{ - imports = [ - (mkRenamedOptionModule [ "services" "rss-bridge" "whitelist" ] [ "services" "rss-bridge" "config" "system" "enabled_bridges" ]) - ]; - - options = { - services.rss-bridge = { - enable = mkEnableOption "rss-bridge"; - - user = mkOption { - type = types.str; - default = "nginx"; - description = '' - User account under which both the service and the web-application run. - ''; - }; - - group = mkOption { - type = types.str; - default = "nginx"; - description = '' - Group under which the web-application run. - ''; - }; - - pool = mkOption { - type = types.str; - default = poolName; - description = '' - Name of existing phpfpm pool that is used to run web-application. - If not specified a pool will be created automatically with - default values. - ''; - }; - - dataDir = mkOption { - type = types.str; - default = "/var/lib/rss-bridge"; - description = '' - Location in which cache directory will be created. - You can put `config.ini.php` in here. - ''; - }; - - virtualHost = mkOption { - type = types.nullOr types.str; - default = "rss-bridge"; - description = '' - Name of the nginx virtualhost to use and setup. If null, do not setup any virtualhost. - ''; - }; - - config = mkOption { - type = with types; attrsOf (attrsOf (oneOf [ bool int str (listOf str) ])); - default = {}; - defaultText = options.literalExpression "FileCache.path = \"\${config.services.rss-bridge.dataDir}/cache/\""; - example = options.literalExpression '' - { - system.enabled_bridges = [ "*" ]; - error = { - output = "http"; - report_limit = 5; - }; - FileCache = { - enable_purge = true; - }; - } - ''; - description = '' - Attribute set of arbitrary config options. - Please consult the documentation at the [wiki](https://rss-bridge.github.io/rss-bridge/For_Hosts/Custom_Configuration.html) - and [sample config](https://github.com/RSS-Bridge/rss-bridge/blob/master/config.default.ini.php) to see a list of available options. - ''; - }; - }; - }; - - config = mkIf cfg.enable { - services.phpfpm.pools = mkIf (cfg.pool == poolName) { - ${poolName} = { - user = cfg.user; - settings = mapAttrs (name: mkDefault) { - "listen.owner" = cfg.user; - "listen.group" = cfg.user; - "listen.mode" = "0600"; - "pm" = "dynamic"; - "pm.max_children" = 75; - "pm.start_servers" = 10; - "pm.min_spare_servers" = 5; - "pm.max_spare_servers" = 20; - "pm.max_requests" = 500; - "catch_workers_output" = 1; - }; - }; - }; - systemd.tmpfiles.settings.rss-bridge = let - perm = { - mode = "0750"; - user = cfg.user; - group = cfg.group; - }; - in { - "${configAttr.FileCache.path}".d = perm; - "${cfg.dataDir}/config.ini.php".z = perm; - }; - - services.nginx = mkIf (cfg.virtualHost != null) { - enable = true; - virtualHosts = { - ${cfg.virtualHost} = { - root = "${pkgs.rss-bridge}"; - - locations."/" = { - tryFiles = "$uri /index.php$is_args$args"; - }; - - locations."~ ^/index.php(/|$)" = { - extraConfig = '' - include ${config.services.nginx.package}/conf/fastcgi_params; - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.socket}; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param RSSBRIDGE_DATA ${cfg.dataDir}; - ${cfgEnv} - ''; - }; - }; - }; - }; - }; -} |