connman: declare build flavors idiomaticly

Use tesseract as a source for inspiration - rename default.nix ->
connman.nix and declare build flavors in default.nix .

+215 -203
+177
pkgs/tools/networking/connman/connman.nix
··· 1 + { stdenv 2 + , fetchurl 3 + , pkgconfig 4 + , file 5 + , glib 6 + # always required runtime dependencies 7 + , dbus 8 + , libmnl 9 + , gnutls 10 + , readline 11 + # configureable options 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 50 + }: 51 + 52 + assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; 53 + assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; 54 + 55 + let inherit (stdenv.lib) optionals; in 56 + 57 + stdenv.mkDerivation rec { 58 + pname = "connman"; 59 + version = "1.38"; 60 + src = fetchurl { 61 + url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; 62 + sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"; 63 + }; 64 + 65 + buildInputs = [ 66 + glib 67 + dbus 68 + libmnl 69 + gnutls 70 + readline 71 + ]; 72 + 73 + nativeBuildInputs = [ 74 + pkgconfig 75 + file 76 + ] 77 + ++ optionals (enableOpenvpn) [ openvpn ] 78 + ++ optionals (enableOpenconnect) [ openconnect ] 79 + ++ optionals (enableVpnc) [ vpnc ] 80 + ++ optionals (enablePolkit) [ polkit ] 81 + ++ optionals (enablePptp) [ pptp ppp ] 82 + ++ optionals (firewallType == "iptables") [ iptables ] 83 + ++ optionals (firewallType == "nftables") [ libnftnl ] 84 + ; 85 + 86 + # fix invalid path to 'file' 87 + patchPhase = '' 88 + runHook prePatch 89 + sed -i "s/\/usr\/bin\/file/file/g" ./configure 90 + runHook postPatch 91 + ''; 92 + 93 + configureFlags = [ 94 + # directories flags 95 + "--sysconfdir=${placeholder "out"}/etc" 96 + "--localstatedir=/var" 97 + "--with-dbusconfdir=${placeholder "out"}/share" 98 + "--with-dbusdatadir=${placeholder "out"}/share" 99 + "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" 100 + "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" 101 + "--with-dns-backend=${dnsType}" 102 + "--with-firewall=${firewallType}" 103 + # production build flags 104 + "--disable-maintainer-mode" 105 + "--enable-session-policy-local=builtin" 106 + # for building and running tests 107 + # "--enable-tests" # installs the tests, we don't want that 108 + "--enable-tools" 109 + ] 110 + ++ optionals (!enableLoopback) [ "--disable-loopback" ] 111 + ++ optionals (!enableEthernet) [ "--disable-ethernet" ] 112 + ++ optionals (!enableWireguard) [ "--disable-wireguard" ] 113 + ++ optionals (!enableGadget) [ "--disable-gadget" ] 114 + ++ optionals (!enableWifi) [ "--disable-wifi" ] 115 + # enable IWD support for wifi as it doesn't require any new dependencies 116 + # and it's easier for the NixOS module to use only one connman package when 117 + # IWD is requested 118 + ++ optionals (enableWifi) [ "--enable-iwd" ] 119 + ++ optionals (!enableBluetooth) [ "--disable-bluetooth" ] 120 + ++ optionals (!enableOfono) [ "--disable-ofono" ] 121 + ++ optionals (!enableDundee) [ "--disable-dundee" ] 122 + ++ optionals (!enablePacrunner) [ "--disable-pacrunner" ] 123 + ++ optionals (!enableNeard) [ "--disable-neard" ] 124 + ++ optionals (!enableWispr) [ "--disable-wispr" ] 125 + ++ optionals (!enableTools) [ "--disable-tools" ] 126 + ++ optionals (!enableStats) [ "--disable-stats" ] 127 + ++ optionals (!enableClient) [ "--disable-client" ] 128 + ++ optionals (!enableDatafiles) [ "--disable-datafiles" ] 129 + ++ optionals (enableOpenconnect) [ 130 + "--enable-openconnect=builtin" 131 + "--with-openconnect=${openconnect}/sbin/openconnect" 132 + ] 133 + ++ optionals (enableOpenvpn) [ 134 + "--enable-openvpn=builtin" 135 + "--with-openvpn=${openvpn}/sbin/openvpn" 136 + ] 137 + ++ optionals (enableVpnc) [ 138 + "--enable-vpnc=builtin" 139 + "--with-vpnc=${vpnc}/sbin/vpnc" 140 + ] 141 + ++ optionals (enablePolkit) [ 142 + "--enable-polkit" 143 + ] 144 + ++ optionals (enablePptp) [ 145 + "--enable-pptp" 146 + "--with-pptp=${pptp}/sbin/pptp" 147 + ] 148 + ++ optionals (!enableWireguard) [ 149 + "--disable-wireguard" 150 + ] 151 + ++ optionals (enableNetworkManager) [ 152 + "--enable-nmcompat" 153 + ] 154 + ++ optionals (enableHh2serialGps) [ 155 + "--enable-hh2serial-gps" 156 + ] 157 + ++ optionals (enableL2tp) [ 158 + "--enable-l2tp" 159 + ] 160 + ++ optionals (enableIospm) [ 161 + "--enable-iospm" 162 + ] 163 + ++ optionals (enableTist) [ 164 + "--enable-tist" 165 + ] 166 + ; 167 + 168 + doCheck = true; 169 + 170 + meta = with stdenv.lib; { 171 + description = "A daemon for managing internet connections"; 172 + homepage = "https://01.org/connman"; 173 + maintainers = [ maintainers.matejc ]; 174 + platforms = platforms.linux; 175 + license = licenses.gpl2; 176 + }; 177 + }
+33 -172
pkgs/tools/networking/connman/default.nix
··· 1 - { stdenv 2 - , fetchurl 3 - , pkgconfig 4 - , file 5 - , glib 6 - # always required runtime dependencies 7 - , dbus 8 - , libmnl 9 - , gnutls 10 - , readline 11 - # configureable options 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 50 - }: 1 + { callPackage, lowPrio }: 51 2 52 - assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; 53 - assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; 54 - 55 - let inherit (stdenv.lib) optionals; 56 - 57 - stdenv.mkDerivation rec { 58 - pname = "connman"; 59 - version = "1.38"; 60 - src = fetchurl { 61 - url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; 62 - sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"; 3 + { 4 + connmanFull = callPackage ./connman.nix { 5 + enableNetworkManager = true; 6 + enableHh2serialGps = true; 7 + enableL2tp = true; 8 + enableIospm = true; 9 + enableTist = true; 63 10 }; 64 11 65 - buildInputs = [ 66 - glib 67 - dbus 68 - libmnl 69 - gnutls 70 - readline 71 - ]; 12 + connmanMinimal = lowPrio (callPackage ./connman.nix { 13 + enableOpenconnect = false; 14 + enableOpenvpn = false; 15 + enableVpnc = false; 16 + vpnc = false; 17 + enablePolkit = false; 18 + enablePptp = false; 19 + enableLoopback = false; 20 + # enableEthernet = false; # If disabled no ethernet connection can be performed 21 + enableWireguard = false; 22 + enableGadget = false; 23 + # enableWifi = false; # If disabled no WiFi connection can be performed 24 + enableBluetooth = false; 25 + enableOfono = false; 26 + enableDundee = false; 27 + enablePacrunner = false; 28 + enableNeard = false; 29 + enableWispr = false; 30 + enableTools = false; 31 + enableStats = false; 32 + enableClient = false; 33 + # enableDatafiles = false; # If disabled, configuration and data files are not installed 34 + }); 72 35 73 - nativeBuildInputs = [ 74 - pkgconfig 75 - file 76 - ] 77 - ++ optionals (enableOpenvpn) [ openvpn ] 78 - ++ optionals (enableOpenconnect) [ openconnect ] 79 - ++ optionals (enableVpnc) [ vpnc ] 80 - ++ optionals (enablePolkit) [ polkit ] 81 - ++ optionals (enablePptp) [ pptp ppp ] 82 - ++ optionals (firewallType == "iptables") [ iptables ] 83 - ++ optionals (firewallType == "nftables") [ libnftnl ] 84 - ; 85 - 86 - # fix invalid path to 'file' 87 - patchPhase = '' 88 - runHook prePatch 89 - sed -i "s/\/usr\/bin\/file/file/g" ./configure 90 - runHook postPatch 91 - ''; 92 - 93 - configureFlags = [ 94 - # directories flags 95 - "--sysconfdir=${placeholder "out"}/etc" 96 - "--localstatedir=/var" 97 - "--with-dbusconfdir=${placeholder "out"}/share" 98 - "--with-dbusdatadir=${placeholder "out"}/share" 99 - "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" 100 - "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" 101 - "--with-dns-backend=${dnsType}" 102 - "--with-firewall=${firewallType}" 103 - # production build flags 104 - "--disable-maintainer-mode" 105 - "--enable-session-policy-local=builtin" 106 - # for building and running tests 107 - # --enable-tests # installs the tests, we don't want that 108 - "--enable-tools" 109 - ] 110 - ++ optionals (!enableLoopback) [ "--disable-loopback" ] 111 - ++ optionals (!enableEthernet) [ "--disable-ethernet" ] 112 - ++ optionals (!enableWireguard) [ "--disable-wireguard" ] 113 - ++ optionals (!enableGadget) [ "--disable-gadget" ] 114 - ++ optionals (!enableWifi) [ "--disable-wifi" ] 115 - # enable IWD support for wifi as it doesn't require any new dependencies 116 - # and it's easier for the NixOS module to use only one connman package when 117 - # IWD is requested 118 - ++ optionals (enableWifi) [ "--enable-iwd" ] 119 - ++ optionals (!enableBluetooth) [ "--disable-bluetooth" ] 120 - ++ optionals (!enableOfono) [ "--disable-ofono" ] 121 - ++ optionals (!enableDundee) [ "--disable-dundee" ] 122 - ++ optionals (!enablePacrunner) [ "--disable-pacrunner" ] 123 - ++ optionals (!enableNeard) [ "--disable-neard" ] 124 - ++ optionals (!enableWispr) [ "--disable-wispr" ] 125 - ++ optionals (!enableTools) [ "--disable-tools" ] 126 - ++ optionals (!enableStats) [ "--disable-stats" ] 127 - ++ optionals (!enableClient) [ "--disable-client" ] 128 - ++ optionals (!enableDatafiles) [ "--disable-datafiles" ] 129 - ++ optionals (enableOpenconnect) [ 130 - "--enable-openconnect=builtin" 131 - "--with-openconnect=${openconnect}/sbin/openconnect" 132 - ] 133 - ++ optionals (enableOpenvpn) [ 134 - "--enable-openvpn=builtin" 135 - "--with-openvpn=${openvpn}/sbin/openvpn" 136 - ] 137 - ++ optionals (enableVpnc) [ 138 - "--enable-vpnc=builtin" 139 - "--with-vpnc=${vpnc}/sbin/vpnc" 140 - ] 141 - ++ optionals (enablePolkit) [ 142 - "--enable-polkit" 143 - ] 144 - ++ optionals (enablePptp) [ 145 - "--enable-pptp" 146 - "--with-pptp=${pptp}/sbin/pptp" 147 - ] 148 - ++ optionals (!enableWireguard) [ 149 - "--disable-wireguard" 150 - ] 151 - ++ optionals (enableNetworkManager) [ 152 - "--enable-nmcompat" 153 - ] 154 - ++ optionals (enableHh2serialGps) [ 155 - "--enable-hh2serial-gps" 156 - ] 157 - ++ optionals (enableL2tp) [ 158 - "--enable-l2tp" 159 - ] 160 - ++ optionals (enableIospm) [ 161 - "--enable-iospm" 162 - ] 163 - ++ optionals (enableTist) [ 164 - "--enable-tist" 165 - ] 166 - ; 167 - 168 - doCheck = true; 169 - 170 - meta = with stdenv.lib; { 171 - description = "A daemon for managing internet connections"; 172 - homepage = "https://01.org/connman"; 173 - maintainers = [ maintainers.matejc ]; 174 - platforms = platforms.linux; 175 - license = licenses.gpl2; 176 - }; 36 + # All the defaults 37 + connman = callPackage ./connman.nix { }; 177 38 }
+5 -31
pkgs/top-level/all-packages.nix
··· 2550 2550 2551 2551 conspy = callPackage ../os-specific/linux/conspy {}; 2552 2552 2553 - connman = callPackage ../tools/networking/connman { }; 2554 - connmanThin = callPackage ../tools/networking/connman { 2555 - enableOpenconnect = false; 2556 - enableOpenvpn = false; 2557 - enableVpnc = false; 2558 - vpnc = false; 2559 - enablePolkit = false; 2560 - enablePptp = false; 2561 - enableLoopback = false; 2562 - # enableEthernet = false; # If disabled no ethernet connection can be performed 2563 - enableWireguard = false; 2564 - enableGadget = false; 2565 - # enableWifi = false; # If disabled no WiFi connection can be performed 2566 - enableBluetooth = false; 2567 - enableOfono = false; 2568 - enableDundee = false; 2569 - enablePacrunner = false; 2570 - enableNeard = false; 2571 - enableWispr = false; 2572 - enableTools = false; 2573 - enableStats = false; 2574 - enableClient = false; 2575 - # enableDatafiles = false; # If disabled, configuration and data files are not installed 2576 - }; 2577 - connmanFull = callPackage ../tools/networking/connman { 2578 - enableNetworkManager = true; 2579 - enableHh2serialGps = true; 2580 - enableL2tp = true; 2581 - enableIospm = true; 2582 - enableTist = true; 2583 - }; 2553 + inherit (callPackage ../tools/networking/connman {}) 2554 + connmanFull 2555 + connmanMinimal 2556 + connman 2557 + ; 2584 2558 2585 2559 connman-gtk = callPackage ../tools/networking/connman/connman-gtk { }; 2586 2560