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