diff options
Diffstat (limited to 'modules/by-name/in/invidious-router')
-rw-r--r-- | modules/by-name/in/invidious-router/module.nix | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/modules/by-name/in/invidious-router/module.nix b/modules/by-name/in/invidious-router/module.nix new file mode 100644 index 0000000..f85a06c --- /dev/null +++ b/modules/by-name/in/invidious-router/module.nix @@ -0,0 +1,70 @@ +{ + config, + lib, + pkgsUnstable, + ... +}: let + cfg = config.vhack.invidious-router; +in { + options.vhack.invidious-router = { + enable = lib.mkEnableOption "invidious-router"; + domain = lib.mkOption { + type = lib.types.str; + description = "The domain invidious-router should be served on"; + }; + extraDomains = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = "Addtional domains invidious-router should be served on"; + }; + }; + config = lib.mkIf cfg.enable { + services.invidious-router = { + enable = true; + package = pkgsUnstable.invidious-router; + settings = { + app = { + listen = "127.0.0.1:8050"; + enable_youtube_fallback = false; + reload_instance_list_interval = "60s"; + not_available_message = '' + No available invidious instance found! + [link]View this video on YouTube[/link], a proprietary + platform that collects and uses your data without respecting + your privacy. + ''; + }; + api = { + enabled = true; + url = "https://api.invidious.io/instances.json"; + filter_regions = false; + allowed_regions = [ + "AT" + "DE" + "CH" + ]; + }; + healthcheck = { + path = "/watch?v=uSvJaYxRoB4"; + allowed_status_codes = [ + 200 + ]; + timeout = "1s"; + interval = "10s"; + filter_by_response_time = { + enabled = true; + qty_of_top_results = 4; + }; + minimum_ratio = 0.2; + remove_no_ratio = false; + text_not_present = "YouTube is currently trying to block Invidious instances"; + }; + }; + nginx = { + enable = true; + inherit (cfg) domain extraDomains; + }; + }; + vhack.nginx.enable = true; + }; +} |