at 24.11-pre 10 kB view raw
1{ lib, systemdUtils }: 2 3let 4 inherit (lib) 5 concatMapStrings 6 concatStringsSep 7 flip 8 optionalString 9 ; 10 11 attrsToSection = systemdUtils.lib.attrsToSection; 12 commonMatchText = def: 13 optionalString (def.matchConfig != { }) '' 14 [Match] 15 ${attrsToSection def.matchConfig} 16 ''; 17in { 18 linkToUnit = def: 19 commonMatchText def + '' 20 [Link] 21 ${attrsToSection def.linkConfig} 22 '' + def.extraConfig; 23 24 netdevToUnit = def: 25 commonMatchText def + '' 26 [NetDev] 27 ${attrsToSection def.netdevConfig} 28 '' + optionalString (def.bridgeConfig != { }) '' 29 [Bridge] 30 ${attrsToSection def.bridgeConfig} 31 '' + optionalString (def.vlanConfig != { }) '' 32 [VLAN] 33 ${attrsToSection def.vlanConfig} 34 '' + optionalString (def.ipvlanConfig != { }) '' 35 [IPVLAN] 36 ${attrsToSection def.ipvlanConfig} 37 '' + optionalString (def.ipvtapConfig != { }) '' 38 [IPVTAP] 39 ${attrsToSection def.ipvtapConfig} 40 '' + optionalString (def.macvlanConfig != { }) '' 41 [MACVLAN] 42 ${attrsToSection def.macvlanConfig} 43 '' + optionalString (def.vxlanConfig != { }) '' 44 [VXLAN] 45 ${attrsToSection def.vxlanConfig} 46 '' + optionalString (def.tunnelConfig != { }) '' 47 [Tunnel] 48 ${attrsToSection def.tunnelConfig} 49 '' + optionalString (def.fooOverUDPConfig != { }) '' 50 [FooOverUDP] 51 ${attrsToSection def.fooOverUDPConfig} 52 '' + optionalString (def.peerConfig != { }) '' 53 [Peer] 54 ${attrsToSection def.peerConfig} 55 '' + optionalString (def.tunConfig != { }) '' 56 [Tun] 57 ${attrsToSection def.tunConfig} 58 '' + optionalString (def.tapConfig != { }) '' 59 [Tap] 60 ${attrsToSection def.tapConfig} 61 '' + optionalString (def.l2tpConfig != { }) '' 62 [L2TP] 63 ${attrsToSection def.l2tpConfig} 64 '' + flip concatMapStrings def.l2tpSessions (x: '' 65 [L2TPSession] 66 ${attrsToSection x.l2tpSessionConfig} 67 '') + optionalString (def.wireguardConfig != { }) '' 68 [WireGuard] 69 ${attrsToSection def.wireguardConfig} 70 '' + flip concatMapStrings def.wireguardPeers (x: '' 71 [WireGuardPeer] 72 ${attrsToSection x.wireguardPeerConfig} 73 '') + optionalString (def.bondConfig != { }) '' 74 [Bond] 75 ${attrsToSection def.bondConfig} 76 '' + optionalString (def.xfrmConfig != { }) '' 77 [Xfrm] 78 ${attrsToSection def.xfrmConfig} 79 '' + optionalString (def.vrfConfig != { }) '' 80 [VRF] 81 ${attrsToSection def.vrfConfig} 82 '' + optionalString (def.wlanConfig != { }) '' 83 [WLAN] 84 ${attrsToSection def.wlanConfig} 85 '' + optionalString (def.batmanAdvancedConfig != { }) '' 86 [BatmanAdvanced] 87 ${attrsToSection def.batmanAdvancedConfig} 88 '' + def.extraConfig; 89 90 networkToUnit = def: 91 commonMatchText def + optionalString (def.linkConfig != { }) '' 92 [Link] 93 ${attrsToSection def.linkConfig} 94 '' + '' 95 [Network] 96 '' + attrsToSection def.networkConfig 97 + optionalString (def.address != [ ]) '' 98 ${concatStringsSep "\n" (map (s: "Address=${s}") def.address)} 99 '' + optionalString (def.gateway != [ ]) '' 100 ${concatStringsSep "\n" (map (s: "Gateway=${s}") def.gateway)} 101 '' + optionalString (def.dns != [ ]) '' 102 ${concatStringsSep "\n" (map (s: "DNS=${s}") def.dns)} 103 '' + optionalString (def.ntp != [ ]) '' 104 ${concatStringsSep "\n" (map (s: "NTP=${s}") def.ntp)} 105 '' + optionalString (def.bridge != [ ]) '' 106 ${concatStringsSep "\n" (map (s: "Bridge=${s}") def.bridge)} 107 '' + optionalString (def.bond != [ ]) '' 108 ${concatStringsSep "\n" (map (s: "Bond=${s}") def.bond)} 109 '' + optionalString (def.vrf != [ ]) '' 110 ${concatStringsSep "\n" (map (s: "VRF=${s}") def.vrf)} 111 '' + optionalString (def.vlan != [ ]) '' 112 ${concatStringsSep "\n" (map (s: "VLAN=${s}") def.vlan)} 113 '' + optionalString (def.macvlan != [ ]) '' 114 ${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)} 115 '' + optionalString (def.macvtap != [ ]) '' 116 ${concatStringsSep "\n" (map (s: "MACVTAP=${s}") def.macvtap)} 117 '' + optionalString (def.vxlan != [ ]) '' 118 ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)} 119 '' + optionalString (def.tunnel != [ ]) '' 120 ${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)} 121 '' + optionalString (def.xfrm != [ ]) '' 122 ${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)} 123 '' + "\n" + flip concatMapStrings def.addresses (x: '' 124 [Address] 125 ${attrsToSection x.addressConfig} 126 '') + flip concatMapStrings def.routingPolicyRules (x: '' 127 [RoutingPolicyRule] 128 ${attrsToSection x.routingPolicyRuleConfig} 129 '') + flip concatMapStrings def.routes (x: '' 130 [Route] 131 ${attrsToSection x.routeConfig} 132 '') + optionalString (def.dhcpV4Config != { }) '' 133 [DHCPv4] 134 ${attrsToSection def.dhcpV4Config} 135 '' + optionalString (def.dhcpV6Config != { }) '' 136 [DHCPv6] 137 ${attrsToSection def.dhcpV6Config} 138 '' + optionalString (def.dhcpPrefixDelegationConfig != { }) '' 139 [DHCPPrefixDelegation] 140 ${attrsToSection def.dhcpPrefixDelegationConfig} 141 '' + optionalString (def.ipv6AcceptRAConfig != { }) '' 142 [IPv6AcceptRA] 143 ${attrsToSection def.ipv6AcceptRAConfig} 144 '' + optionalString (def.dhcpServerConfig != { }) '' 145 [DHCPServer] 146 ${attrsToSection def.dhcpServerConfig} 147 '' + optionalString (def.ipv6SendRAConfig != { }) '' 148 [IPv6SendRA] 149 ${attrsToSection def.ipv6SendRAConfig} 150 '' + flip concatMapStrings def.ipv6Prefixes (x: '' 151 [IPv6Prefix] 152 ${attrsToSection x.ipv6PrefixConfig} 153 '') + flip concatMapStrings def.ipv6RoutePrefixes (x: '' 154 [IPv6RoutePrefix] 155 ${attrsToSection x.ipv6RoutePrefixConfig} 156 '') + flip concatMapStrings def.dhcpServerStaticLeases (x: '' 157 [DHCPServerStaticLease] 158 ${attrsToSection x.dhcpServerStaticLeaseConfig} 159 '') + optionalString (def.bridgeConfig != { }) '' 160 [Bridge] 161 ${attrsToSection def.bridgeConfig} 162 '' + flip concatMapStrings def.bridgeFDBs (x: '' 163 [BridgeFDB] 164 ${attrsToSection x.bridgeFDBConfig} 165 '') + flip concatMapStrings def.bridgeMDBs (x: '' 166 [BridgeMDB] 167 ${attrsToSection x.bridgeMDBConfig} 168 '') + optionalString (def.lldpConfig != { }) '' 169 [LLDP] 170 ${attrsToSection def.lldpConfig} 171 '' + optionalString (def.canConfig != { }) '' 172 [CAN] 173 ${attrsToSection def.canConfig} 174 '' + optionalString (def.ipoIBConfig != { }) '' 175 [IPoIB] 176 ${attrsToSection def.ipoIBConfig} 177 '' + optionalString (def.qdiscConfig != { }) '' 178 [QDisc] 179 ${attrsToSection def.qdiscConfig} 180 '' + optionalString (def.networkEmulatorConfig != { }) '' 181 [NetworkEmulator] 182 ${attrsToSection def.networkEmulatorConfig} 183 '' + optionalString (def.tokenBucketFilterConfig != { }) '' 184 [TokenBucketFilter] 185 ${attrsToSection def.tokenBucketFilterConfig} 186 '' + optionalString (def.pieConfig != { }) '' 187 [PIE] 188 ${attrsToSection def.pieConfig} 189 '' + optionalString (def.flowQueuePIEConfig != { }) '' 190 [FlowQueuePIE] 191 ${attrsToSection def.flowQueuePIEConfig} 192 '' + optionalString (def.stochasticFairBlueConfig != { }) '' 193 [StochasticFairBlue] 194 ${attrsToSection def.stochasticFairBlueConfig} 195 '' + optionalString (def.stochasticFairnessQueueingConfig != { }) '' 196 [StochasticFairnessQueueing] 197 ${attrsToSection def.stochasticFairnessQueueingConfig} 198 '' + optionalString (def.bfifoConfig != { }) '' 199 [BFIFO] 200 ${attrsToSection def.bfifoConfig} 201 '' + optionalString (def.pfifoConfig != { }) '' 202 [PFIFO] 203 ${attrsToSection def.pfifoConfig} 204 '' + optionalString (def.pfifoHeadDropConfig != { }) '' 205 [PFIFOHeadDrop] 206 ${attrsToSection def.pfifoHeadDropConfig} 207 '' + optionalString (def.pfifoFastConfig != { }) '' 208 [PFIFOFast] 209 ${attrsToSection def.pfifoFastConfig} 210 '' + optionalString (def.cakeConfig != { }) '' 211 [CAKE] 212 ${attrsToSection def.cakeConfig} 213 '' + optionalString (def.controlledDelayConfig != { }) '' 214 [ControlledDelay] 215 ${attrsToSection def.controlledDelayConfig} 216 '' + optionalString (def.deficitRoundRobinSchedulerConfig != { }) '' 217 [DeficitRoundRobinScheduler] 218 ${attrsToSection def.deficitRoundRobinSchedulerConfig} 219 '' + optionalString (def.deficitRoundRobinSchedulerClassConfig != { }) '' 220 [DeficitRoundRobinSchedulerClass] 221 ${attrsToSection def.deficitRoundRobinSchedulerClassConfig} 222 '' + optionalString (def.enhancedTransmissionSelectionConfig != { }) '' 223 [EnhancedTransmissionSelection] 224 ${attrsToSection def.enhancedTransmissionSelectionConfig} 225 '' + optionalString (def.genericRandomEarlyDetectionConfig != { }) '' 226 [GenericRandomEarlyDetection] 227 ${attrsToSection def.genericRandomEarlyDetectionConfig} 228 '' + optionalString (def.fairQueueingControlledDelayConfig != { }) '' 229 [FairQueueingControlledDelay] 230 ${attrsToSection def.fairQueueingControlledDelayConfig} 231 '' + optionalString (def.fairQueueingConfig != { }) '' 232 [FairQueueing] 233 ${attrsToSection def.fairQueueingConfig} 234 '' + optionalString (def.trivialLinkEqualizerConfig != { }) '' 235 [TrivialLinkEqualizer] 236 ${attrsToSection def.trivialLinkEqualizerConfig} 237 '' + optionalString (def.hierarchyTokenBucketConfig != { }) '' 238 [HierarchyTokenBucket] 239 ${attrsToSection def.hierarchyTokenBucketConfig} 240 '' + optionalString (def.hierarchyTokenBucketClassConfig != { }) '' 241 [HierarchyTokenBucketClass] 242 ${attrsToSection def.hierarchyTokenBucketClassConfig} 243 '' + optionalString (def.heavyHitterFilterConfig != { }) '' 244 [HeavyHitterFilter] 245 ${attrsToSection def.heavyHitterFilterConfig} 246 '' + optionalString (def.quickFairQueueingConfig != { }) '' 247 [QuickFairQueueing] 248 ${attrsToSection def.quickFairQueueingConfig} 249 '' + optionalString (def.quickFairQueueingConfigClass != { }) '' 250 [QuickFairQueueingClass] 251 ${attrsToSection def.quickFairQueueingConfigClass} 252 '' + flip concatMapStrings def.bridgeVLANs (x: '' 253 [BridgeVLAN] 254 ${attrsToSection x.bridgeVLANConfig} 255 '') + def.extraConfig; 256 257}