1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.winbox;
10in
11{
12 options.programs.winbox = {
13 enable = lib.mkEnableOption ("MikroTik Winbox");
14 package = lib.mkPackageOption pkgs "winbox" { };
15
16 openFirewall = lib.mkOption {
17 description = ''
18 Whether to open ports for the MikroTik Neighbor Discovery protocol. Required for Winbox neighbor discovery.
19 '';
20 default = false;
21 type = lib.types.bool;
22 };
23 };
24
25 config = lib.mkIf cfg.enable {
26 environment.systemPackages = [ cfg.package ];
27 networking.firewall.allowedUDPPorts = lib.optionals cfg.openFirewall [ 5678 ];
28 };
29}