grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / beanstalkd.nix
blob5f7e4be34daa69ce3f6d856d93916c8436dea231
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.beanstalkd;
4   pkg = pkgs.beanstalkd;
5 in
8   # interface
10   options = {
11     services.beanstalkd = {
12       enable = lib.mkEnableOption "the Beanstalk work queue";
14       listen = {
15         port = lib.mkOption {
16           type = lib.types.port;
17           description = "TCP port that will be used to accept client connections.";
18           default = 11300;
19         };
21         address = lib.mkOption {
22           type = lib.types.str;
23           description = "IP address to listen on.";
24           default = "127.0.0.1";
25           example = "0.0.0.0";
26         };
27       };
29       openFirewall = lib.mkOption {
30         type = lib.types.bool;
31         default = false;
32         description = "Whether to open ports in the firewall for the server.";
33       };
34     };
35   };
37   # implementation
39   config = lib.mkIf cfg.enable {
41     networking.firewall = lib.mkIf cfg.openFirewall {
42       allowedTCPPorts = [ cfg.listen.port ];
43     };
45     environment.systemPackages = [ pkg ];
47     systemd.services.beanstalkd = {
48       description = "Beanstalk Work Queue";
49       after = [ "network.target" ];
50       wantedBy = [ "multi-user.target" ];
51       serviceConfig = {
52         DynamicUser = true;
53         Restart = "always";
54         ExecStart = "${pkg}/bin/beanstalkd -l ${cfg.listen.address} -p ${toString cfg.listen.port} -b $STATE_DIRECTORY";
55         StateDirectory = "beanstalkd";
56       };
57     };
59   };