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