connman: cleanup build from the groundup

+121 -32
+121 -32
pkgs/tools/networking/connman/default.nix
··· 1 1 { stdenv 2 2 , fetchurl 3 3 , pkgconfig 4 - , openconnect 5 4 , file 6 - openvpn 7 - , vpnc 8 5 , glib 6 + # always required runtime dependencies 9 7 , dbus 10 - , iptables 8 + , libmnl 11 9 , gnutls 12 - , polkit, 13 10 , readline 14 - , pptp 15 - , ppp 11 + # Choices one has to decide 12 + , firewallType ? "iptables" # or "nftables" 13 + , iptables ? null 14 + , libnftnl ? null # for nftables 15 + , dnsType ? "internal" # or "systemd-resolved" 16 + # optional features which are turned *on* by default 17 + , enableOpenconnect ? true 18 + , openconnect ? null 19 + , enableOpenvpn ? true 20 + , openvpn ? null 21 + , enableVpnc ? true 22 + , vpnc ? true 23 + , enablePolkit ? true 24 + , polkit ? null 25 + , enablePptp ? true 26 + , pptp ? null 27 + , ppp ? null 28 + , enableLoopback ? true 29 + , enableEthernet ? true 30 + , enableWireguard ? true 31 + , enableGadget ? true 32 + , enableWifi ? true 33 + , enableBluetooth ? true 34 + , enableOfono ? true 35 + , enableDundee ? true 36 + , enablePacrunner ? true 37 + , enableNeard ? true 38 + , enableWispr ? true 39 + , enableTools ? true 40 + , enableStats ? true 41 + , enableClient ? true 42 + , enableDatafiles ? true 43 + # optional features which are turned *off* by default 44 + , enableNetworkManager ? false 45 + , networkmanager ? null 46 + , enableHh2serialGps ? false 47 + , enableL2tp ? false 48 + , enableIospm ? false 49 + , enableTist ? false 16 50 }: 17 51 52 + assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; 53 + assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; 54 + 18 55 stdenv.mkDerivation rec { 19 56 pname = "connman"; 20 57 version = "1.38"; ··· 24 61 }; 25 62 26 63 buildInputs = [ 27 - openconnect 28 - polkit 29 - openvpn 30 - vpnc 31 64 glib 32 65 dbus 33 66 libmnl 34 - iptables 35 67 gnutls 36 68 readline 37 - pptp 38 - ppp 39 69 ]; 40 70 41 71 nativeBuildInputs = [ 42 72 pkgconfig 43 73 file 44 - ]; 74 + ] 75 + ++ stdenv.lib.optionals (enableOpenvpn) [ openvpn ] 76 + ++ stdenv.lib.optionals (enableOpenconnect) [ openconnect ] 77 + ++ stdenv.lib.optionals (enableVpnc) [ vpnc ] 78 + ++ stdenv.lib.optionals (enablePolkit) [ polkit ] 79 + ++ stdenv.lib.optionals (enablePptp) [ pptp ppp ] 80 + ++ stdenv.lib.optionals (firewallType == "iptables") [ iptables ] 81 + ++ stdenv.lib.optionals (firewallType == "nftables") [ libnftnl ] 82 + ; 45 83 84 + # Fix file program not found 46 85 preConfigure = '' 47 86 sed -i "s/\/usr\/bin\/file/file/g" ./configure 48 87 ''; 49 88 50 89 configureFlags = [ 90 + # directories flags 51 91 "--sysconfdir=${placeholder "out"}/etc" 52 92 "--localstatedir=/var" 53 93 "--with-dbusconfdir=${placeholder "out"}/share" 54 94 "--with-dbusdatadir=${placeholder "out"}/share" 95 + "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" 96 + "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" 97 + "--with-dns-backend=${dnsType}" 98 + "--with-firewall=${firewallType}" 99 + # production build flags 55 100 "--disable-maintainer-mode" 56 - "--enable-openconnect=builtin" 57 - "--with-openconnect=${openconnect}/sbin/openconnect" 58 - "--enable-openvpn=builtin" 59 - "--with-openvpn=${openvpn}/sbin/openvpn" 60 - "--enable-vpnc=builtin" 61 - "--with-vpnc=${vpnc}/sbin/vpnc" 62 101 "--enable-session-policy-local=builtin" 63 - "--enable-client" 64 - "--enable-bluetooth" 65 - "--enable-wifi" 66 - "--enable-polkit" 102 + # This is for building and running tests (probably enabled by default), 103 + # --enable-tests installs the tests as well 67 104 "--enable-tools" 68 - "--enable-datafiles" 69 - "--enable-pptp" 70 - "--with-pptp=${pptp}/sbin/pptp" 71 - "--enable-iwd" 72 - ]; 73 - doCheck = true; 105 + ] 106 + ++ stdenv.lib.optionals (!enableLoopback) [ "--disable-loopback" ] 107 + ++ stdenv.lib.optionals (!enableEthernet) [ "--disable-ethernet" ] 108 + ++ stdenv.lib.optionals (!enableWireguard) [ "--disable-wireguard" ] 109 + ++ stdenv.lib.optionals (!enableGadget) [ "--disable-gadget" ] 110 + ++ stdenv.lib.optionals (!enableWifi) [ "--disable-wifi" ] 111 + # We (almost) always turn on IWD support as it doesn't require any new dependencies 112 + # and it's easier for the NixOS module to use only 1 connmand package when 113 + # IWD is requested 114 + ++ stdenv.lib.optionals (enableWifi) [ "--enable-iwd" ] 115 + ++ stdenv.lib.optionals (!enableBluetooth) [ "--disable-bluetooth" ] 116 + ++ stdenv.lib.optionals (!enableOfono) [ "--disable-ofono" ] 117 + ++ stdenv.lib.optionals (!enableDundee) [ "--disable-dundee" ] 118 + ++ stdenv.lib.optionals (!enablePacrunner) [ "--disable-pacrunner" ] 119 + ++ stdenv.lib.optionals (!enableNeard) [ "--disable-neard" ] 120 + ++ stdenv.lib.optionals (!enableWispr) [ "--disable-wispr" ] 121 + ++ stdenv.lib.optionals (!enableTools) [ "--disable-tools" ] 122 + ++ stdenv.lib.optionals (!enableStats) [ "--disable-stats" ] 123 + ++ stdenv.lib.optionals (!enableClient) [ "--disable-client" ] 124 + ++ stdenv.lib.optionals (!enableDatafiles) [ "--disable-datafiles" ] 125 + ++ stdenv.lib.optionals (enableOpenconnect) [ 126 + "--enable-openconnect=builtin" 127 + "--with-openconnect=${openconnect}/sbin/openconnect" 128 + ] 129 + ++ stdenv.lib.optionals (enableOpenvpn) [ 130 + "--enable-openvpn=builtin" 131 + "--with-openvpn=${openvpn}/sbin/openvpn" 132 + ] 133 + ++ stdenv.lib.optionals (enableVpnc) [ 134 + "--enable-vpnc=builtin" 135 + "--with-vpnc=${vpnc}/sbin/vpnc" 136 + ] 137 + ++ stdenv.lib.optionals (enablePolkit) [ 138 + "--enable-polkit" 139 + ] 140 + ++ stdenv.lib.optionals (enablePptp) [ 141 + "--enable-pptp" 142 + "--with-pptp=${pptp}/sbin/pptp" 143 + ] 144 + ++ stdenv.lib.optionals (!enableWireguard) [ 145 + "--disable-wireguard" 146 + ] 147 + ++ stdenv.lib.optionals (enableNetworkManager) [ 148 + "--enable-nmcompat" 149 + ] 150 + ++ stdenv.lib.optionals (enableHh2serialGps) [ 151 + "--enable-hh2serial-gps" 152 + ] 153 + ++ stdenv.lib.optionals (enableL2tp) [ 154 + "--enable-l2tp" 155 + ] 156 + ++ stdenv.lib.optionals (enableIospm) [ 157 + "--enable-iospm" 158 + ] 159 + ++ stdenv.lib.optionals (enableTist) [ 160 + "--enable-tist" 161 + ] 162 + ; 74 163 75 - outputs = [ "out" "dev" ]; 164 + doCheck = true; 76 165 77 166 meta = with stdenv.lib; { 78 167 description = "A daemon for managing internet connections";