diff --git a/nix/pkgs/ap.nix b/nix/pkgs/ap.nix index 9a31ede..f13bfe5 100644 --- a/nix/pkgs/ap.nix +++ b/nix/pkgs/ap.nix @@ -163,22 +163,21 @@ in '' ${uciDeleteAll "network.@switch_vlan"} ${uciDeleteAll "wireless.@wifi"} - uci batch <<__UCI__ - set system.@system[0].hostname=${hostName} - set dhcp.@dnsmasq[0].enabled=0 - set system.@system[0].log_ip=${config.site.net.mgmt.hosts4.logging} - set system.@system[0].log_proto=udp + uci set system.@system[0].hostname=${hostName} + uci set dhcp.@dnsmasq[0].enabled=0 + uci set system.@system[0].log_ip=${config.site.net.mgmt.hosts4.logging} + uci set system.@system[0].log_proto=udp # Switch config ${optionalString hasSwitch '' # Ports ${portsDoc} ${concatMapStrings (net: '' - add network switch_vlan - set network.@switch_vlan[-1]=switch_vlan - set network.@switch_vlan[-1].device='switch0' - set network.@switch_vlan[-1].vlan='${toString config.site.net.${net}.vlan}' - set network.@switch_vlan[-1].ports='${switchPortsConfig net}' - set network.@switch_vlan[-1].comment='${net}' + uci add network switch_vlan + uci set network.@switch_vlan[-1]=switch_vlan + uci set network.@switch_vlan[-1].device='switch0' + uci set network.@switch_vlan[-1].vlan='${toString config.site.net.${net}.vlan}' + uci set network.@switch_vlan[-1].ports='${switchPortsConfig net}' + uci set network.@switch_vlan[-1].comment='${net}' '') ( sort (net1: net2: @@ -193,25 +192,25 @@ in '' ''} # mgmt network - set network.mgmt=interface - set network.mgmt.ifname=${if builtins.length (networkInterfaces "mgmt") == 1 then builtins.head (networkInterfaces "mgmt") else throw "No interface for mgmt"} - set network.mgmt.proto=static - set network.mgmt.ipaddr=${config.site.net.mgmt.hosts4.${hostName}} - set network.mgmt.netmask=${self.lib.netmasks.${elemAt ( + uci set network.mgmt=interface + uci set network.mgmt.ifname=${if builtins.length (networkInterfaces "mgmt") == 1 then builtins.head (networkInterfaces "mgmt") else throw "No interface for mgmt"} + uci set network.mgmt.proto=static + uci set network.mgmt.ipaddr=${config.site.net.mgmt.hosts4.${hostName}} + uci set network.mgmt.netmask=${self.lib.netmasks.${elemAt ( builtins.split "/" config.site.net.mgmt.subnet4 ) 2}} - set network.mgmt.gateway=${config.site.net.mgmt.hosts4.mgmt-gw} - set network.mgmt.ip6addr=${config.site.net.mgmt.hosts6.dn42.${hostName}}/64 - set network.mgmt.ip6gw=${config.site.net.mgmt.hosts6.dn42.mgmt-gw} - delete network.mgmt.dns - add_list network.mgmt.dns=${config.site.net.serv.hosts4.dnscache} - add_list network.mgmt.dns=${config.site.net.serv.hosts6.dn42.dnscache} + uci set network.mgmt.gateway=${config.site.net.mgmt.hosts4.mgmt-gw} + uci set network.mgmt.ip6addr=${config.site.net.mgmt.hosts6.dn42.${hostName}}/64 + uci set network.mgmt.ip6gw=${config.site.net.mgmt.hosts6.dn42.mgmt-gw} + uci delete network.mgmt.dns + uci add_list network.mgmt.dns=${config.site.net.serv.hosts4.dnscache} + uci add_list network.mgmt.dns=${config.site.net.serv.hosts6.dn42.dnscache} - delete network.globals.ula_prefix + uci delete network.globals.ula_prefix # delete unused networks ${concatMapStrings (net: lib.optionalString (! hostConfig.interfaces ? ${net}) '' - delete network.${net} + uci delete network.${net} '' ) ([ "lan" "wan" "wan6" ] ++ builtins.attrNames config.site.net)} @@ -220,16 +219,16 @@ in '' let iface = hostConfig.interfaces.${net}; in optionalString (net != "mgmt" && iface.type == "bridge") '' - set network.${net}=interface - set network.${net}.type=bridge - set network.${net}.proto=static - set network.${net}.ifname='${concatStringsSep " " (networkInterfaces net)}' + uci set network.${net}=interface + uci set network.${net}.type=bridge + uci set network.${net}.proto=static + uci set network.${net}.ifname='${concatStringsSep " " (networkInterfaces net)}' '') (builtins.attrNames hostConfig.interfaces) } - delete wireless.default_radio0 - delete wireless.default_radio1 + uci delete wireless.default_radio0 + uci delete wireless.default_radio1 ${concatStrings (imap0 (index: path: let radioConfig = hostConfig.wifi.${path}; @@ -237,42 +236,41 @@ in '' then "wlan2" else "wlan5"; in '' - set wireless.radio${toString index}=wifi-device - set wireless.radio${toString index}.type=mac80211 - set wireless.radio${toString index}.country=DE - set wireless.radio${toString index}.channel=${toString radioConfig.channel} - set wireless.radio${toString index}.path=${path} - set wireless.radio${toString index}.htmode=${radioConfig.htmode} - set wireless.radio${toString index}.noscan=1 - delete wireless.radio${toString index}.disabled + uci set wireless.radio${toString index}=wifi-device + uci set wireless.radio${toString index}.type=mac80211 + uci set wireless.radio${toString index}.country=DE + uci set wireless.radio${toString index}.channel=${toString radioConfig.channel} + uci set wireless.radio${toString index}.path=${path} + uci set wireless.radio${toString index}.htmode=${radioConfig.htmode} + uci set wireless.radio${toString index}.noscan=1 + uci delete wireless.radio${toString index}.disabled ${concatMapStrings (ssid: let ssidConfig = radioConfig.ssids.${ssid}; in '' - add wireless wifi - set wireless.@wifi-iface[-1].ifname=${ifPrefix}-${ssidConfig.net} - set wireless.@wifi-iface[-1].device=radio${toString index} - set wireless.@wifi-iface[-1].ssid='${ssid}' - set wireless.@wifi-iface[-1].mode=ap - set wireless.@wifi-iface[-1].network=${ssidConfig.net} - set wireless.@wifi-iface[-1].mcast_rate=18000 + uci add wireless wifi + uci set wireless.@wifi-iface[-1].ifname=${ifPrefix}-${ssidConfig.net} + uci set wireless.@wifi-iface[-1].device=radio${toString index} + uci set wireless.@wifi-iface[-1].ssid='${ssid}' + uci set wireless.@wifi-iface[-1].mode=ap + uci set wireless.@wifi-iface[-1].network=${ssidConfig.net} + uci set wireless.@wifi-iface[-1].mcast_rate=18000 ${if (ssidConfig.psk != null) then '' - set wireless.@wifi-iface[-1].encryption=psk2 - set wireless.@wifi-iface[-1].key='${ssidConfig.psk}' + uci set wireless.@wifi-iface[-1].encryption=psk2 + uci set wireless.@wifi-iface[-1].key='${ssidConfig.psk}' '' else '' - set wireless.@wifi-iface[-1].encryption=none - delete wireless.@wifi-iface[-1].key + uci set wireless.@wifi-iface[-1].encryption=none + uci delete wireless.@wifi-iface[-1].key ''} '' ) (builtins.attrNames radioConfig.ssids)} '') (builtins.attrNames hostConfig.wifi))} - commit - __UCI__ + uci commit # Cronjob that makes sure WiFi is only visible when server with all # the gateways is reachable