|
7 | 7 | options = { |
8 | 8 | enabled = lib.mkEnableOption "Enable MQTT broker ${toString num}"; |
9 | 9 | server = lib.mkOption { |
10 | | - type = lib.types.str; |
| 10 | + type = lib.types.nullOr lib.types.str; |
| 11 | + default = null; |
11 | 12 | description = "MQTT broker address"; |
12 | 13 | }; |
13 | 14 | port = lib.mkOption { |
|
100 | 101 |
|
101 | 102 | # Build environment variables from configuration |
102 | 103 | buildEnvVars = let |
103 | | - mqttEnvVars = lib.flatten (lib.imap1 (num: broker: [ |
104 | | - "PACKETCAPTURE_MQTT${toString num}_ENABLED=${if broker.enabled then "true" else "false"}" |
105 | | - "PACKETCAPTURE_MQTT${toString num}_SERVER=${broker.server}" |
106 | | - "PACKETCAPTURE_MQTT${toString num}_PORT=${toString broker.port}" |
107 | | - ] ++ lib.optional (broker.username != null) "PACKETCAPTURE_MQTT${toString num}_USERNAME=${broker.username}" |
108 | | - ++ lib.optional (broker.password != null) "PACKETCAPTURE_MQTT${toString num}_PASSWORD=${broker.password}" |
109 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_TRANSPORT=${broker.transport}"] |
110 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_USE_TLS=${if broker.useTLS then "true" else "false"}"] |
111 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_TLS_VERIFY=${if broker.tlsVerify then "true" else "false"}"] |
112 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_USE_AUTH_TOKEN=${if broker.useAuthToken then "true" else "false"}"] |
113 | | - ++ lib.optional (broker.tokenAudience != null) "PACKETCAPTURE_MQTT${toString num}_TOKEN_AUDIENCE=${broker.tokenAudience}" |
114 | | - ++ lib.optional (broker.clientIdPrefix != null) "PACKETCAPTURE_MQTT${toString num}_CLIENT_ID_PREFIX=${broker.clientIdPrefix}" |
115 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_QOS=${toString broker.qos}"] |
116 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_RETAIN=${if broker.retain then "true" else "false"}"] |
117 | | - ++ ["PACKETCAPTURE_MQTT${toString num}_KEEPALIVE=${toString broker.keepalive}"] |
118 | | - ++ lib.optional (broker.topicStatus != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_STATUS=${broker.topicStatus}" |
119 | | - ++ lib.optional (broker.topicPackets != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_PACKETS=${broker.topicPackets}" |
120 | | - ++ lib.optional (broker.topicRaw != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_RAW=${broker.topicRaw}" |
121 | | - ++ lib.optional (broker.topicDecoded != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_DECODED=${broker.topicDecoded}" |
122 | | - ++ lib.optional (broker.topicDebug != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_DEBUG=${broker.topicDebug}") [ |
| 104 | + mqttEnvVars = lib.flatten (lib.imap1 (num: broker: |
| 105 | + # Only generate env vars if broker is enabled and has a server configured |
| 106 | + if broker.enabled && broker.server != null then |
| 107 | + [ |
| 108 | + "PACKETCAPTURE_MQTT${toString num}_ENABLED=true" |
| 109 | + "PACKETCAPTURE_MQTT${toString num}_SERVER=${broker.server}" |
| 110 | + "PACKETCAPTURE_MQTT${toString num}_PORT=${toString broker.port}" |
| 111 | + ] ++ lib.optional (broker.username != null) "PACKETCAPTURE_MQTT${toString num}_USERNAME=${broker.username}" |
| 112 | + ++ lib.optional (broker.password != null) "PACKETCAPTURE_MQTT${toString num}_PASSWORD=${broker.password}" |
| 113 | + ++ ["PACKETCAPTURE_MQTT${toString num}_TRANSPORT=${broker.transport}"] |
| 114 | + ++ ["PACKETCAPTURE_MQTT${toString num}_USE_TLS=${if broker.useTLS then "true" else "false"}"] |
| 115 | + ++ ["PACKETCAPTURE_MQTT${toString num}_TLS_VERIFY=${if broker.tlsVerify then "true" else "false"}"] |
| 116 | + ++ ["PACKETCAPTURE_MQTT${toString num}_USE_AUTH_TOKEN=${if broker.useAuthToken then "true" else "false"}"] |
| 117 | + ++ lib.optional (broker.tokenAudience != null) "PACKETCAPTURE_MQTT${toString num}_TOKEN_AUDIENCE=${broker.tokenAudience}" |
| 118 | + ++ lib.optional (broker.clientIdPrefix != null) "PACKETCAPTURE_MQTT${toString num}_CLIENT_ID_PREFIX=${broker.clientIdPrefix}" |
| 119 | + ++ ["PACKETCAPTURE_MQTT${toString num}_QOS=${toString broker.qos}"] |
| 120 | + ++ ["PACKETCAPTURE_MQTT${toString num}_RETAIN=${if broker.retain then "true" else "false"}"] |
| 121 | + ++ ["PACKETCAPTURE_MQTT${toString num}_KEEPALIVE=${toString broker.keepalive}"] |
| 122 | + ++ lib.optional (broker.topicStatus != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_STATUS=${broker.topicStatus}" |
| 123 | + ++ lib.optional (broker.topicPackets != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_PACKETS=${broker.topicPackets}" |
| 124 | + ++ lib.optional (broker.topicRaw != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_RAW=${broker.topicRaw}" |
| 125 | + ++ lib.optional (broker.topicDecoded != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_DECODED=${broker.topicDecoded}" |
| 126 | + ++ lib.optional (broker.topicDebug != null) "PACKETCAPTURE_MQTT${toString num}_TOPIC_DEBUG=${broker.topicDebug}" |
| 127 | + else [ |
| 128 | + "PACKETCAPTURE_MQTT${toString num}_ENABLED=false" |
| 129 | + ]) [ |
123 | 130 | cfg.mqtt1 |
124 | 131 | cfg.mqtt2 |
125 | 132 | cfg.mqtt3 |
|
0 commit comments