grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / irkerd.nix
blob28966c4ae226a08f9e4a0bf4c78fa163230000be
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.irkerd;
4   ports = [ 6659 ];
5 in
7   options.services.irkerd = {
8     enable = lib.mkOption {
9       description = "Whether to enable irker, an IRC notification daemon.";
10       default = false;
11       type = lib.types.bool;
12     };
14     openPorts = lib.mkOption {
15       description = "Open ports in the firewall for irkerd";
16       default = false;
17       type = lib.types.bool;
18     };
20     listenAddress = lib.mkOption {
21       default = "localhost";
22       example = "0.0.0.0";
23       type = lib.types.str;
24       description = ''
25         Specifies the bind address on which the irker daemon listens.
26         The default is localhost.
28         Irker authors strongly warn about the risks of running this on
29         a publicly accessible interface, so change this with caution.
30       '';
31     };
33     nick = lib.mkOption {
34       default = "irker";
35       type = lib.types.str;
36       description = "Nick to use for irker";
37     };
38   };
40   config = lib.mkIf cfg.enable {
41     systemd.services.irkerd = {
42       description = "Internet Relay Chat (IRC) notification daemon";
43       documentation = [ "man:irkerd(8)" "man:irkerhook(1)" "man:irk(1)" ];
44       after = [ "network.target" ];
45       wantedBy = [ "multi-user.target" ];
46       serviceConfig = {
47         ExecStart = "${pkgs.irker}/bin/irkerd -H ${cfg.listenAddress} -n ${cfg.nick}";
48         User = "irkerd";
49       };
50     };
52     environment.systemPackages = [ pkgs.irker ];
54     users.users.irkerd = {
55       description = "Irker daemon user";
56       isSystemUser = true;
57       group = "irkerd";
58     };
59     users.groups.irkerd = {};
61     networking.firewall.allowedTCPPorts = lib.mkIf cfg.openPorts ports;
62     networking.firewall.allowedUDPPorts = lib.mkIf cfg.openPorts ports;
63   };