parent
f9f15fff56
commit
2807d75dca
@ -0,0 +1,67 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.irkerd; |
||||
ports = [ 6659 ]; |
||||
in |
||||
{ |
||||
options.services.irkerd = { |
||||
enable = mkOption { |
||||
description = "Whether to enable irker, an IRC notification daemon."; |
||||
default = false; |
||||
type = types.bool; |
||||
}; |
||||
|
||||
openPorts = mkOption { |
||||
description = "Open ports in the firewall for irkerd"; |
||||
default = false; |
||||
type = types.bool; |
||||
}; |
||||
|
||||
listenAddress = mkOption { |
||||
default = "localhost"; |
||||
example = "0.0.0.0"; |
||||
type = types.str; |
||||
description = '' |
||||
Specifies the bind address on which the irker daemon listens. |
||||
The default is localhost. |
||||
|
||||
Irker authors strongly warn about the risks of running this on |
||||
a publicly accessible interface, so change this with caution. |
||||
''; |
||||
}; |
||||
|
||||
nick = mkOption { |
||||
default = "irker"; |
||||
type = types.str; |
||||
description = "Nick to use for irker"; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
systemd.services.irkerd = { |
||||
description = "Internet Relay Chat (IRC) notification daemon"; |
||||
documentation = [ "man:irkerd(8)" "man:irkerhook(1)" "man:irk(1)" ]; |
||||
after = [ "network.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
serviceConfig = { |
||||
ExecStart = "${pkgs.irker}/bin/irkerd -H ${cfg.listenAddress} -n ${cfg.nick}"; |
||||
User = "irkerd"; |
||||
}; |
||||
}; |
||||
|
||||
environment.systemPackages = [ pkgs.irker ]; |
||||
|
||||
users.users.irkerd = { |
||||
description = "Irker daemon user"; |
||||
isSystemUser = true; |
||||
group = "irkerd"; |
||||
}; |
||||
users.groups.irkerd = {}; |
||||
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openPorts ports; |
||||
networking.firewall.allowedUDPPorts = mkIf cfg.openPorts ports; |
||||
}; |
||||
} |
Loading…
Reference in new issue