diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2024-04-03 23:07:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-03 23:07:06 +0200 |
commit | 8042af035cd1d38d9de8e802f80f551b36c16aac (patch) | |
tree | 4e1d7ee1133b087f24bd696b60cb1c0c3d58271c | |
parent | 12842ab09f2dc653a157a764a136a037e224e5a7 (diff) | |
parent | 84f41005203d66b328328da1ee17094c74db5f39 (diff) |
Merge pull request #223148 from Mynacol/rss-bridge-config
rss-bridge: add config option
-rw-r--r-- | nixos/modules/services/web-apps/rss-bridge.nix | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/nixos/modules/services/web-apps/rss-bridge.nix b/nixos/modules/services/web-apps/rss-bridge.nix index 1a710f4a6a67a..0d344753de678 100644 --- a/nixos/modules/services/web-apps/rss-bridge.nix +++ b/nixos/modules/services/web-apps/rss-bridge.nix @@ -5,10 +5,23 @@ let poolName = "rss-bridge"; - whitelist = pkgs.writeText "rss-bridge_whitelist.txt" - (concatStringsSep "\n" cfg.whitelist); + 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 (lib.mdDoc "rss-bridge"); @@ -56,20 +69,26 @@ in ''; }; - whitelist = mkOption { - type = types.listOf types.str; - default = []; + 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 '' - [ - "Facebook" - "Instagram" - "Twitter" - ] + { + system.enabled_bridges = [ "*" ]; + error = { + output = "http"; + report_limit = 5; + }; + FileCache = { + enable_purge = true; + }; + } ''; description = lib.mdDoc '' - List of bridges to be whitelisted. - If the list is empty, rss-bridge will use whitelist.default.txt. - Use `[ "*" ]` to whitelist all. + 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. ''; }; }; @@ -93,11 +112,16 @@ in }; }; }; - systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}/cache' 0750 ${cfg.user} ${cfg.group} - -" - (mkIf (cfg.whitelist != []) "L+ ${cfg.dataDir}/whitelist.txt - - - - ${whitelist}") - "z '${cfg.dataDir}/config.ini.php' 0750 ${cfg.user} ${cfg.group} - -" - ]; + 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; @@ -116,6 +140,7 @@ in 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} ''; }; }; |