at master 1.4 kB view raw
1{ 2 config, 3 pkgs, 4 lib, 5 ... 6}: 7 8let 9 cfg = config.services.flaresolverr; 10in 11{ 12 options = { 13 services.flaresolverr = { 14 enable = lib.mkEnableOption "FlareSolverr, a proxy server to bypass Cloudflare protection"; 15 16 package = lib.mkPackageOption pkgs "flaresolverr" { }; 17 18 openFirewall = lib.mkOption { 19 type = lib.types.bool; 20 default = false; 21 description = "Open the port in the firewall for FlareSolverr."; 22 }; 23 24 port = lib.mkOption { 25 type = lib.types.port; 26 default = 8191; 27 description = "The port on which FlareSolverr will listen for incoming HTTP traffic."; 28 }; 29 }; 30 }; 31 32 config = lib.mkIf cfg.enable { 33 systemd.services.flaresolverr = { 34 description = "FlareSolverr"; 35 after = [ "network.target" ]; 36 wantedBy = [ "multi-user.target" ]; 37 38 environment = { 39 HOME = "/run/flaresolverr"; 40 PORT = toString cfg.port; 41 }; 42 43 serviceConfig = { 44 SyslogIdentifier = "flaresolverr"; 45 Restart = "always"; 46 RestartSec = 5; 47 Type = "simple"; 48 DynamicUser = true; 49 RuntimeDirectory = "flaresolverr"; 50 WorkingDirectory = "/run/flaresolverr"; 51 ExecStart = lib.getExe cfg.package; 52 TimeoutStopSec = 30; 53 }; 54 }; 55 56 networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; }; 57 }; 58}