summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/web-apps
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2024-04-03 23:07:06 +0200
committerGitHub <noreply@github.com>2024-04-03 23:07:06 +0200
commit8042af035cd1d38d9de8e802f80f551b36c16aac (patch)
tree4e1d7ee1133b087f24bd696b60cb1c0c3d58271c /nixos/modules/services/web-apps
parent12842ab09f2dc653a157a764a136a037e224e5a7 (diff)
parent84f41005203d66b328328da1ee17094c74db5f39 (diff)
Merge pull request #223148 from Mynacol/rss-bridge-config
rss-bridge: add config option
Diffstat (limited to 'nixos/modules/services/web-apps')
-rw-r--r--nixos/modules/services/web-apps/rss-bridge.nix61
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 1a710f4a6a67..0d344753de67 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}
'';
};
};