mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-19 20:09:01 +02:00
nixos/invidious-router: init module
This commit is contained in:
parent
38482561f2
commit
19b2b8046d
|
@ -712,6 +712,7 @@
|
|||
./services/misc/homepage-dashboard.nix
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/input-remapper.nix
|
||||
./services/misc/invidious-router.nix
|
||||
./services/misc/irkerd.nix
|
||||
./services/misc/jackett.nix
|
||||
./services/misc/jellyfin.nix
|
||||
|
|
121
nixos/modules/services/misc/invidious-router.nix
Normal file
121
nixos/modules/services/misc/invidious-router.nix
Normal file
|
@ -0,0 +1,121 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.services.invidious-router;
|
||||
settingsFormat = pkgs.formats.yaml {};
|
||||
configFile = settingsFormat.generate "config.yaml" cfg.settings;
|
||||
in {
|
||||
meta.maintainers = [lib.maintainers.s1ls];
|
||||
|
||||
options.services.invidious-router = {
|
||||
enable = lib.mkEnableOption "Enables the invidious-router service";
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 8050;
|
||||
description = lib.mdDoc ''
|
||||
Port to bind to.
|
||||
'';
|
||||
};
|
||||
address = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "127.0.0.1";
|
||||
description = lib.mdDoc ''
|
||||
Address on which invidious-router should listen on.
|
||||
'';
|
||||
};
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
};
|
||||
default = {
|
||||
app = {
|
||||
listen = "127.0.0.1:8050";
|
||||
enable_youtube_fallback = false;
|
||||
reload_instance_list_interval = "60s";
|
||||
};
|
||||
api = {
|
||||
enabled = true;
|
||||
url = "https://api.invidious.io/instances.json";
|
||||
filter_regions = true;
|
||||
allowed_regions = [
|
||||
"AT"
|
||||
"DE"
|
||||
"CH"
|
||||
];
|
||||
};
|
||||
healthcheck = {
|
||||
path = "/";
|
||||
allowed_status_codes = [
|
||||
200
|
||||
];
|
||||
timeout = "1s";
|
||||
interval = "10s";
|
||||
filter_by_response_time = {
|
||||
enabled = true;
|
||||
qty_of_top_results = 3;
|
||||
};
|
||||
minimum_ratio = 0.2;
|
||||
remove_no_ratio = true;
|
||||
text_not_present = "YouTube is currently trying to block Invidious instances";
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
Configuration for invidious-router.
|
||||
Check https://gitlab.com/gaincoder/invidious-router#configuration
|
||||
for configuration options.
|
||||
'';
|
||||
};
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.invidious-router;
|
||||
defaultText = lib.literalExpression "pkgs.invidious-router";
|
||||
description = lib.mdDoc ''
|
||||
The invidious-router package to use.
|
||||
'';
|
||||
};
|
||||
nginx = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc ''
|
||||
Automatic nginx proxy configuration
|
||||
'');
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = "invidious-router.example.com";
|
||||
description = lib.mdDoc ''
|
||||
The domain on which invidious-router should be served.
|
||||
'';
|
||||
};
|
||||
extraDomains = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = lib.mdDoc ''
|
||||
Additional domains to serve invidious-router on.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.invidious-router = {
|
||||
wantedBy = ["multi-user.target"];
|
||||
serviceConfig = {
|
||||
Restart = "on-failure";
|
||||
ExecStart = "${lib.getExe cfg.package} --configfile ${configFile}";
|
||||
DynamicUser = "yes";
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts = lib.mkIf cfg.nginx.enable {
|
||||
${cfg.nginx.domain} = {
|
||||
locations."/" = {
|
||||
recommendedProxySettings = true;
|
||||
proxyPass = "http://${cfg.address}:${toString cfg.port}";
|
||||
};
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
serverAliases = cfg.nginx.extraDomains;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue