aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name
diff options
context:
space:
mode:
authorSilas Schöffel <sils@sils.li>2025-01-20 16:16:08 +0100
committerSilas Schöffel <sils@sils.li>2025-01-20 16:16:08 +0100
commitecdec62932c1fba0d090020a9d3f5b6e62a2b839 (patch)
treea97ff2ad514e1afe04c6adfaa505b03239d16c20 /modules/by-name
parentfeat(modules/gallery): init (diff)
downloadnixos-server-ecdec62932c1fba0d090020a9d3f5b6e62a2b839.zip
feat(modules/invidious-router): init
Diffstat (limited to 'modules/by-name')
-rw-r--r--modules/by-name/in/invidious-router/module.nix70
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;
+ };
+}