grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / flaresolverr.nix
blob7967580307f99470064fdcac1abd2768de111ea5
2   config,
3   pkgs,
4   lib,
5   ...
6 }:
8 let
9   cfg = config.services.flaresolverr;
12   options = {
13     services.flaresolverr = {
14       enable = lib.mkEnableOption "FlareSolverr, a proxy server to bypass Cloudflare protection";
16       package = lib.mkPackageOption pkgs "flaresolverr" { };
18       openFirewall = lib.mkOption {
19         type = lib.types.bool;
20         default = false;
21         description = "Open the port in the firewall for FlareSolverr.";
22       };
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   };
32   config = lib.mkIf cfg.enable {
33     systemd.services.flaresolverr = {
34       description = "FlareSolverr";
35       after = [ "network.target" ];
36       wantedBy = [ "multi-user.target" ];
38       environment = {
39         HOME = "/run/flaresolverr";
40         PORT = toString cfg.port;
41       };
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     };
56     networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; };
57   };