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 = lib.mkIf cfg.openFirewall {
28 allowedUDPPorts = [ 5678 ];
29 allowedUDPPortRanges = [
30 {
31 from = 40000;
32 to = 50000;
33 }
34 ];
35 };
36 };
37}