From 59613f5ca55102e98acae3bb31975fe1a40bb5e6 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 18:58:17 +0200 Subject: [PATCH 01/21] connman: format argument lists and inputs --- pkgs/tools/networking/connman/default.nix | 44 +++++++++++++++++++---- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index e58b8362f95..986bb16c9a3 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -1,6 +1,21 @@ -{ stdenv, fetchurl, pkgconfig, openconnect, file, gawk, - openvpn, vpnc, glib, dbus, iptables, gnutls, polkit, - wpa_supplicant, readline6, pptp, ppp }: +{ stdenv +, fetchurl +, pkgconfig +, openconnect +, file +, gawk, + openvpn +, vpnc +, glib +, dbus +, iptables +, gnutls +, polkit, + wpa_supplicant +, readline6 +, pptp +, ppp +}: stdenv.mkDerivation rec { pname = "connman"; @@ -10,11 +25,26 @@ stdenv.mkDerivation rec { sha256 = "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"; }; - buildInputs = [ openconnect polkit - openvpn vpnc glib dbus iptables gnutls - wpa_supplicant readline6 pptp ppp ]; + buildInputs = [ + openconnect + polkit + openvpn + vpnc + glib + dbus + iptables + gnutls + wpa_supplicant + readline6 + pptp + ppp + ]; - nativeBuildInputs = [ pkgconfig file gawk ]; + nativeBuildInputs = [ + pkgconfig + file + gawk + ]; preConfigure = '' export WPASUPPLICANT=${wpa_supplicant}/sbin/wpa_supplicant From 7cdd874589bac5dc12dae3b9e71860a2b01d7ab3 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 18:58:25 +0200 Subject: [PATCH 02/21] connman: 1.37 -> 1.38 --- pkgs/tools/networking/connman/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 986bb16c9a3..3381f77c96c 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -19,10 +19,10 @@ stdenv.mkDerivation rec { pname = "connman"; - version = "1.37"; + version = "1.38"; src = fetchurl { url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; - sha256 = "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"; + sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"; }; buildInputs = [ From bc4d2abac88340da99903a296d8d66c0e173fb38 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 18:59:17 +0200 Subject: [PATCH 03/21] connman: remove unneeded deps --- pkgs/tools/networking/connman/default.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 3381f77c96c..fde73fa9aa3 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -3,7 +3,6 @@ , pkgconfig , openconnect , file -, gawk, openvpn , vpnc , glib @@ -11,7 +10,6 @@ , iptables , gnutls , polkit, - wpa_supplicant , readline6 , pptp , ppp @@ -34,7 +32,6 @@ stdenv.mkDerivation rec { dbus iptables gnutls - wpa_supplicant readline6 pptp ppp @@ -43,13 +40,10 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig file - gawk ]; preConfigure = '' - export WPASUPPLICANT=${wpa_supplicant}/sbin/wpa_supplicant export PPPD=${ppp}/sbin/pppd - export AWK=${gawk}/bin/gawk sed -i "s/\/usr\/bin\/file/file/g" ./configure ''; From 184d7412923fa438e27ede97a6f840714248650f Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 18:59:50 +0200 Subject: [PATCH 04/21] connman: remove unneeded hooks --- pkgs/tools/networking/connman/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index fde73fa9aa3..6c96c344838 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -43,7 +43,6 @@ stdenv.mkDerivation rec { ]; preConfigure = '' - export PPPD=${ppp}/sbin/pppd sed -i "s/\/usr\/bin\/file/file/g" ./configure ''; @@ -71,10 +70,6 @@ stdenv.mkDerivation rec { "--enable-iwd" ]; - postInstall = '' - cp ./client/connmanctl $out/sbin/connmanctl - ''; - meta = with stdenv.lib; { description = "A daemon for managing internet connections"; homepage = https://01.org/connman; From e9569a0a039e4cd12edfcce51c96d060f8266a83 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:01:35 +0200 Subject: [PATCH 05/21] connman: quote out in configure flag --- pkgs/tools/networking/connman/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 6c96c344838..5f5bed3cbce 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { ''; configureFlags = [ - "--sysconfdir=\${out}/etc" + "--sysconfdir=${placeholder "out"}/etc" "--localstatedir=/var" "--with-dbusconfdir=${placeholder "out"}/share" "--with-dbusdatadir=${placeholder "out"}/share" From e55ad4897d9c8df11ae3fed79af489c909b7df69 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:01:44 +0200 Subject: [PATCH 06/21] connman: quote homepage --- pkgs/tools/networking/connman/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 5f5bed3cbce..d65061648b6 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -72,7 +72,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A daemon for managing internet connections"; - homepage = https://01.org/connman; + homepage = "https://01.org/connman"; maintainers = [ maintainers.matejc ]; platforms = platforms.linux; license = licenses.gpl2; From a0e966d7979d0f0464949b9c7e37aa5593c00ecc Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:02:43 +0200 Subject: [PATCH 07/21] connman: upgrade to readline latest --- pkgs/tools/networking/connman/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index d65061648b6..77cdcd0cc3e 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -10,7 +10,7 @@ , iptables , gnutls , polkit, -, readline6 +, readline , pptp , ppp }: @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { dbus iptables gnutls - readline6 + readline pptp ppp ]; From 50ce1e646915cd402c21606924429dea51d87470 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:03:52 +0200 Subject: [PATCH 08/21] connman: doCheck and split outputs --- pkgs/tools/networking/connman/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 77cdcd0cc3e..2f6e835bc84 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -30,6 +30,7 @@ stdenv.mkDerivation rec { vpnc glib dbus + libmnl iptables gnutls readline @@ -69,6 +70,9 @@ stdenv.mkDerivation rec { "--with-pptp=${pptp}/sbin/pptp" "--enable-iwd" ]; + doCheck = true; + + outputs = [ "out" "dev" ]; meta = with stdenv.lib; { description = "A daemon for managing internet connections"; From 53d8831b6232fc4fc7a9201f0695fd7fc1daa81d Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:04:56 +0200 Subject: [PATCH 09/21] connman: cleanup build from the groundup --- pkgs/tools/networking/connman/default.nix | 153 +++++++++++++++++----- 1 file changed, 121 insertions(+), 32 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 2f6e835bc84..9da12e158f9 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -1,20 +1,57 @@ { stdenv , fetchurl , pkgconfig -, openconnect , file - openvpn -, vpnc , glib +# always required runtime dependencies , dbus -, iptables +, libmnl , gnutls -, polkit, , readline -, pptp -, ppp +# Choices one has to decide +, firewallType ? "iptables" # or "nftables" +, iptables ? null +, libnftnl ? null # for nftables +, dnsType ? "internal" # or "systemd-resolved" +# optional features which are turned *on* by default +, enableOpenconnect ? true +, openconnect ? null +, enableOpenvpn ? true +, openvpn ? null +, enableVpnc ? true +, vpnc ? true +, enablePolkit ? true +, polkit ? null +, enablePptp ? true +, pptp ? null +, ppp ? null +, enableLoopback ? true +, enableEthernet ? true +, enableWireguard ? true +, enableGadget ? true +, enableWifi ? true +, enableBluetooth ? true +, enableOfono ? true +, enableDundee ? true +, enablePacrunner ? true +, enableNeard ? true +, enableWispr ? true +, enableTools ? true +, enableStats ? true +, enableClient ? true +, enableDatafiles ? true +# optional features which are turned *off* by default +, enableNetworkManager ? false +, networkmanager ? null +, enableHh2serialGps ? false +, enableL2tp ? false +, enableIospm ? false +, enableTist ? false }: +assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; +assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; + stdenv.mkDerivation rec { pname = "connman"; version = "1.38"; @@ -24,55 +61,107 @@ stdenv.mkDerivation rec { }; buildInputs = [ - openconnect - polkit - openvpn - vpnc glib dbus libmnl - iptables gnutls readline - pptp - ppp ]; nativeBuildInputs = [ pkgconfig file - ]; + ] + ++ stdenv.lib.optionals (enableOpenvpn) [ openvpn ] + ++ stdenv.lib.optionals (enableOpenconnect) [ openconnect ] + ++ stdenv.lib.optionals (enableVpnc) [ vpnc ] + ++ stdenv.lib.optionals (enablePolkit) [ polkit ] + ++ stdenv.lib.optionals (enablePptp) [ pptp ppp ] + ++ stdenv.lib.optionals (firewallType == "iptables") [ iptables ] + ++ stdenv.lib.optionals (firewallType == "nftables") [ libnftnl ] + ; + # Fix file program not found preConfigure = '' sed -i "s/\/usr\/bin\/file/file/g" ./configure ''; configureFlags = [ + # directories flags "--sysconfdir=${placeholder "out"}/etc" "--localstatedir=/var" "--with-dbusconfdir=${placeholder "out"}/share" "--with-dbusdatadir=${placeholder "out"}/share" + "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" + "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" + "--with-dns-backend=${dnsType}" + "--with-firewall=${firewallType}" + # production build flags "--disable-maintainer-mode" - "--enable-openconnect=builtin" - "--with-openconnect=${openconnect}/sbin/openconnect" - "--enable-openvpn=builtin" - "--with-openvpn=${openvpn}/sbin/openvpn" - "--enable-vpnc=builtin" - "--with-vpnc=${vpnc}/sbin/vpnc" "--enable-session-policy-local=builtin" - "--enable-client" - "--enable-bluetooth" - "--enable-wifi" - "--enable-polkit" + # This is for building and running tests (probably enabled by default), + # --enable-tests installs the tests as well "--enable-tools" - "--enable-datafiles" - "--enable-pptp" - "--with-pptp=${pptp}/sbin/pptp" - "--enable-iwd" - ]; - doCheck = true; + ] + ++ stdenv.lib.optionals (!enableLoopback) [ "--disable-loopback" ] + ++ stdenv.lib.optionals (!enableEthernet) [ "--disable-ethernet" ] + ++ stdenv.lib.optionals (!enableWireguard) [ "--disable-wireguard" ] + ++ stdenv.lib.optionals (!enableGadget) [ "--disable-gadget" ] + ++ stdenv.lib.optionals (!enableWifi) [ "--disable-wifi" ] + # We (almost) always turn on IWD support as it doesn't require any new dependencies + # and it's easier for the NixOS module to use only 1 connmand package when + # IWD is requested + ++ stdenv.lib.optionals (enableWifi) [ "--enable-iwd" ] + ++ stdenv.lib.optionals (!enableBluetooth) [ "--disable-bluetooth" ] + ++ stdenv.lib.optionals (!enableOfono) [ "--disable-ofono" ] + ++ stdenv.lib.optionals (!enableDundee) [ "--disable-dundee" ] + ++ stdenv.lib.optionals (!enablePacrunner) [ "--disable-pacrunner" ] + ++ stdenv.lib.optionals (!enableNeard) [ "--disable-neard" ] + ++ stdenv.lib.optionals (!enableWispr) [ "--disable-wispr" ] + ++ stdenv.lib.optionals (!enableTools) [ "--disable-tools" ] + ++ stdenv.lib.optionals (!enableStats) [ "--disable-stats" ] + ++ stdenv.lib.optionals (!enableClient) [ "--disable-client" ] + ++ stdenv.lib.optionals (!enableDatafiles) [ "--disable-datafiles" ] + ++ stdenv.lib.optionals (enableOpenconnect) [ + "--enable-openconnect=builtin" + "--with-openconnect=${openconnect}/sbin/openconnect" + ] + ++ stdenv.lib.optionals (enableOpenvpn) [ + "--enable-openvpn=builtin" + "--with-openvpn=${openvpn}/sbin/openvpn" + ] + ++ stdenv.lib.optionals (enableVpnc) [ + "--enable-vpnc=builtin" + "--with-vpnc=${vpnc}/sbin/vpnc" + ] + ++ stdenv.lib.optionals (enablePolkit) [ + "--enable-polkit" + ] + ++ stdenv.lib.optionals (enablePptp) [ + "--enable-pptp" + "--with-pptp=${pptp}/sbin/pptp" + ] + ++ stdenv.lib.optionals (!enableWireguard) [ + "--disable-wireguard" + ] + ++ stdenv.lib.optionals (enableNetworkManager) [ + "--enable-nmcompat" + ] + ++ stdenv.lib.optionals (enableHh2serialGps) [ + "--enable-hh2serial-gps" + ] + ++ stdenv.lib.optionals (enableL2tp) [ + "--enable-l2tp" + ] + ++ stdenv.lib.optionals (enableIospm) [ + "--enable-iospm" + ] + ++ stdenv.lib.optionals (enableTist) [ + "--enable-tist" + ] + ; - outputs = [ "out" "dev" ]; + doCheck = true; meta = with stdenv.lib; { description = "A daemon for managing internet connections"; From ce502a41eb4c1c60394501975f003cd4fa3f60e7 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 22 Feb 2020 19:05:37 +0200 Subject: [PATCH 10/21] connman: Add 2 more build flavors --- pkgs/top-level/all-packages.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30bc0af360e..2a4a1876581 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2551,6 +2551,36 @@ in conspy = callPackage ../os-specific/linux/conspy {}; connman = callPackage ../tools/networking/connman { }; + connmanThin = callPackage ../tools/networking/connman { + enableOpenconnect = false; + enableOpenvpn = false; + enableVpnc = false; + vpnc = false; + enablePolkit = false; + enablePptp = false; + enableLoopback = false; + # enableEthernet = false; + enableWireguard = false; + enableGadget = false; + # enableWifi = false; + enableBluetooth = false; + enableOfono = false; + enableDundee = false; + enablePacrunner = false; + enableNeard = false; + enableWispr = false; + enableTools = false; + enableStats = false; + enableClient = false; + # enableDatafiles = false; + }; + connmanFull = callPackage ../tools/networking/connman { + enableNetworkManager = true; + enableHh2serialGps = true; + enableL2tp = true; + enableIospm = true; + enableTist = true; + }; connman-gtk = callPackage ../tools/networking/connman/connman-gtk { }; From cdc20ac30ef15082c7486cee98240a7c0586c623 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 2 Mar 2020 00:49:36 +0200 Subject: [PATCH 11/21] connman: Fix comments after @erikarvstedt's comments --- pkgs/tools/networking/connman/default.nix | 12 ++++++------ pkgs/top-level/all-packages.nix | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 9da12e158f9..a2338e4554f 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -8,7 +8,7 @@ , libmnl , gnutls , readline -# Choices one has to decide +# configureable options , firewallType ? "iptables" # or "nftables" , iptables ? null , libnftnl ? null # for nftables @@ -81,7 +81,7 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optionals (firewallType == "nftables") [ libnftnl ] ; - # Fix file program not found + # fix invalid path to 'file' preConfigure = '' sed -i "s/\/usr\/bin\/file/file/g" ./configure ''; @@ -99,8 +99,8 @@ stdenv.mkDerivation rec { # production build flags "--disable-maintainer-mode" "--enable-session-policy-local=builtin" - # This is for building and running tests (probably enabled by default), - # --enable-tests installs the tests as well + # for building and running tests + # --enable-tests # installs the tests, we don't want that "--enable-tools" ] ++ stdenv.lib.optionals (!enableLoopback) [ "--disable-loopback" ] @@ -108,8 +108,8 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optionals (!enableWireguard) [ "--disable-wireguard" ] ++ stdenv.lib.optionals (!enableGadget) [ "--disable-gadget" ] ++ stdenv.lib.optionals (!enableWifi) [ "--disable-wifi" ] - # We (almost) always turn on IWD support as it doesn't require any new dependencies - # and it's easier for the NixOS module to use only 1 connmand package when + # enable IWD support for wifi as it doesn't require any new dependencies + # and it's easier for the NixOS module to use only one connman package when # IWD is requested ++ stdenv.lib.optionals (enableWifi) [ "--enable-iwd" ] ++ stdenv.lib.optionals (!enableBluetooth) [ "--disable-bluetooth" ] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2a4a1876581..5ed0b8d55a8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2559,10 +2559,10 @@ in enablePolkit = false; enablePptp = false; enableLoopback = false; - # enableEthernet = false; + # enableEthernet = false; # If disabled no ethernet connection can be performed enableWireguard = false; enableGadget = false; - # enableWifi = false; + # enableWifi = false; # If disabled no WiFi connection can be performed enableBluetooth = false; enableOfono = false; enableDundee = false; @@ -2572,7 +2572,7 @@ in enableTools = false; enableStats = false; enableClient = false; - # enableDatafiles = false; + # enableDatafiles = false; # If disabled, configuration and data files are not installed }; connmanFull = callPackage ../tools/networking/connman { enableNetworkManager = true; From e59deafc2d06417db92bda5d3713ae928fb7ec60 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 2 Mar 2020 00:51:14 +0200 Subject: [PATCH 12/21] connman: Use global reference to lib.optionals --- pkgs/tools/networking/connman/default.nix | 70 ++++++++++++----------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index a2338e4554f..d0242e1e461 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -52,6 +52,8 @@ assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; +let inherit (stdenv.lib) optionals; + stdenv.mkDerivation rec { pname = "connman"; version = "1.38"; @@ -72,13 +74,13 @@ stdenv.mkDerivation rec { pkgconfig file ] - ++ stdenv.lib.optionals (enableOpenvpn) [ openvpn ] - ++ stdenv.lib.optionals (enableOpenconnect) [ openconnect ] - ++ stdenv.lib.optionals (enableVpnc) [ vpnc ] - ++ stdenv.lib.optionals (enablePolkit) [ polkit ] - ++ stdenv.lib.optionals (enablePptp) [ pptp ppp ] - ++ stdenv.lib.optionals (firewallType == "iptables") [ iptables ] - ++ stdenv.lib.optionals (firewallType == "nftables") [ libnftnl ] + ++ optionals (enableOpenvpn) [ openvpn ] + ++ optionals (enableOpenconnect) [ openconnect ] + ++ optionals (enableVpnc) [ vpnc ] + ++ optionals (enablePolkit) [ polkit ] + ++ optionals (enablePptp) [ pptp ppp ] + ++ optionals (firewallType == "iptables") [ iptables ] + ++ optionals (firewallType == "nftables") [ libnftnl ] ; # fix invalid path to 'file' @@ -103,60 +105,60 @@ stdenv.mkDerivation rec { # --enable-tests # installs the tests, we don't want that "--enable-tools" ] - ++ stdenv.lib.optionals (!enableLoopback) [ "--disable-loopback" ] - ++ stdenv.lib.optionals (!enableEthernet) [ "--disable-ethernet" ] - ++ stdenv.lib.optionals (!enableWireguard) [ "--disable-wireguard" ] - ++ stdenv.lib.optionals (!enableGadget) [ "--disable-gadget" ] - ++ stdenv.lib.optionals (!enableWifi) [ "--disable-wifi" ] + ++ optionals (!enableLoopback) [ "--disable-loopback" ] + ++ optionals (!enableEthernet) [ "--disable-ethernet" ] + ++ optionals (!enableWireguard) [ "--disable-wireguard" ] + ++ optionals (!enableGadget) [ "--disable-gadget" ] + ++ optionals (!enableWifi) [ "--disable-wifi" ] # enable IWD support for wifi as it doesn't require any new dependencies # and it's easier for the NixOS module to use only one connman package when # IWD is requested - ++ stdenv.lib.optionals (enableWifi) [ "--enable-iwd" ] - ++ stdenv.lib.optionals (!enableBluetooth) [ "--disable-bluetooth" ] - ++ stdenv.lib.optionals (!enableOfono) [ "--disable-ofono" ] - ++ stdenv.lib.optionals (!enableDundee) [ "--disable-dundee" ] - ++ stdenv.lib.optionals (!enablePacrunner) [ "--disable-pacrunner" ] - ++ stdenv.lib.optionals (!enableNeard) [ "--disable-neard" ] - ++ stdenv.lib.optionals (!enableWispr) [ "--disable-wispr" ] - ++ stdenv.lib.optionals (!enableTools) [ "--disable-tools" ] - ++ stdenv.lib.optionals (!enableStats) [ "--disable-stats" ] - ++ stdenv.lib.optionals (!enableClient) [ "--disable-client" ] - ++ stdenv.lib.optionals (!enableDatafiles) [ "--disable-datafiles" ] - ++ stdenv.lib.optionals (enableOpenconnect) [ + ++ optionals (enableWifi) [ "--enable-iwd" ] + ++ optionals (!enableBluetooth) [ "--disable-bluetooth" ] + ++ optionals (!enableOfono) [ "--disable-ofono" ] + ++ optionals (!enableDundee) [ "--disable-dundee" ] + ++ optionals (!enablePacrunner) [ "--disable-pacrunner" ] + ++ optionals (!enableNeard) [ "--disable-neard" ] + ++ optionals (!enableWispr) [ "--disable-wispr" ] + ++ optionals (!enableTools) [ "--disable-tools" ] + ++ optionals (!enableStats) [ "--disable-stats" ] + ++ optionals (!enableClient) [ "--disable-client" ] + ++ optionals (!enableDatafiles) [ "--disable-datafiles" ] + ++ optionals (enableOpenconnect) [ "--enable-openconnect=builtin" "--with-openconnect=${openconnect}/sbin/openconnect" ] - ++ stdenv.lib.optionals (enableOpenvpn) [ + ++ optionals (enableOpenvpn) [ "--enable-openvpn=builtin" "--with-openvpn=${openvpn}/sbin/openvpn" ] - ++ stdenv.lib.optionals (enableVpnc) [ + ++ optionals (enableVpnc) [ "--enable-vpnc=builtin" "--with-vpnc=${vpnc}/sbin/vpnc" ] - ++ stdenv.lib.optionals (enablePolkit) [ + ++ optionals (enablePolkit) [ "--enable-polkit" ] - ++ stdenv.lib.optionals (enablePptp) [ + ++ optionals (enablePptp) [ "--enable-pptp" "--with-pptp=${pptp}/sbin/pptp" ] - ++ stdenv.lib.optionals (!enableWireguard) [ + ++ optionals (!enableWireguard) [ "--disable-wireguard" ] - ++ stdenv.lib.optionals (enableNetworkManager) [ + ++ optionals (enableNetworkManager) [ "--enable-nmcompat" ] - ++ stdenv.lib.optionals (enableHh2serialGps) [ + ++ optionals (enableHh2serialGps) [ "--enable-hh2serial-gps" ] - ++ stdenv.lib.optionals (enableL2tp) [ + ++ optionals (enableL2tp) [ "--enable-l2tp" ] - ++ stdenv.lib.optionals (enableIospm) [ + ++ optionals (enableIospm) [ "--enable-iospm" ] - ++ stdenv.lib.optionals (enableTist) [ + ++ optionals (enableTist) [ "--enable-tist" ] ; From be59cb3be8e74a799202e36c76aa44dc26d3ba20 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 2 Mar 2020 00:51:52 +0200 Subject: [PATCH 13/21] connman: Use patchPhase instead of preConfigure --- pkgs/tools/networking/connman/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index d0242e1e461..9fcacd29ebe 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -84,8 +84,10 @@ stdenv.mkDerivation rec { ; # fix invalid path to 'file' - preConfigure = '' + patchPhase = '' + runHook prePatch sed -i "s/\/usr\/bin\/file/file/g" ./configure + runHook postPatch ''; configureFlags = [ From 3b89674dc3608381c6a447e52e7b512ece4f74db Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 2 Mar 2020 11:10:21 +0200 Subject: [PATCH 14/21] connman: declare build flavors idiomaticly Use tesseract as a source for inspiration - rename default.nix -> connman.nix and declare build flavors in default.nix . --- pkgs/tools/networking/connman/connman.nix | 177 +++++++++++++++++++ pkgs/tools/networking/connman/default.nix | 205 ++++------------------ pkgs/top-level/all-packages.nix | 36 +--- 3 files changed, 215 insertions(+), 203 deletions(-) create mode 100644 pkgs/tools/networking/connman/connman.nix diff --git a/pkgs/tools/networking/connman/connman.nix b/pkgs/tools/networking/connman/connman.nix new file mode 100644 index 00000000000..f79b9875b9b --- /dev/null +++ b/pkgs/tools/networking/connman/connman.nix @@ -0,0 +1,177 @@ +{ stdenv +, fetchurl +, pkgconfig +, file +, glib +# always required runtime dependencies +, dbus +, libmnl +, gnutls +, readline +# configureable options +, firewallType ? "iptables" # or "nftables" +, iptables ? null +, libnftnl ? null # for nftables +, dnsType ? "internal" # or "systemd-resolved" +# optional features which are turned *on* by default +, enableOpenconnect ? true +, openconnect ? null +, enableOpenvpn ? true +, openvpn ? null +, enableVpnc ? true +, vpnc ? true +, enablePolkit ? true +, polkit ? null +, enablePptp ? true +, pptp ? null +, ppp ? null +, enableLoopback ? true +, enableEthernet ? true +, enableWireguard ? true +, enableGadget ? true +, enableWifi ? true +, enableBluetooth ? true +, enableOfono ? true +, enableDundee ? true +, enablePacrunner ? true +, enableNeard ? true +, enableWispr ? true +, enableTools ? true +, enableStats ? true +, enableClient ? true +, enableDatafiles ? true +# optional features which are turned *off* by default +, enableNetworkManager ? false +, networkmanager ? null +, enableHh2serialGps ? false +, enableL2tp ? false +, enableIospm ? false +, enableTist ? false +}: + +assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; +assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; + +let inherit (stdenv.lib) optionals; in + +stdenv.mkDerivation rec { + pname = "connman"; + version = "1.38"; + src = fetchurl { + url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; + sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"; + }; + + buildInputs = [ + glib + dbus + libmnl + gnutls + readline + ]; + + nativeBuildInputs = [ + pkgconfig + file + ] + ++ optionals (enableOpenvpn) [ openvpn ] + ++ optionals (enableOpenconnect) [ openconnect ] + ++ optionals (enableVpnc) [ vpnc ] + ++ optionals (enablePolkit) [ polkit ] + ++ optionals (enablePptp) [ pptp ppp ] + ++ optionals (firewallType == "iptables") [ iptables ] + ++ optionals (firewallType == "nftables") [ libnftnl ] + ; + + # fix invalid path to 'file' + patchPhase = '' + runHook prePatch + sed -i "s/\/usr\/bin\/file/file/g" ./configure + runHook postPatch + ''; + + configureFlags = [ + # directories flags + "--sysconfdir=${placeholder "out"}/etc" + "--localstatedir=/var" + "--with-dbusconfdir=${placeholder "out"}/share" + "--with-dbusdatadir=${placeholder "out"}/share" + "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" + "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" + "--with-dns-backend=${dnsType}" + "--with-firewall=${firewallType}" + # production build flags + "--disable-maintainer-mode" + "--enable-session-policy-local=builtin" + # for building and running tests + # "--enable-tests" # installs the tests, we don't want that + "--enable-tools" + ] + ++ optionals (!enableLoopback) [ "--disable-loopback" ] + ++ optionals (!enableEthernet) [ "--disable-ethernet" ] + ++ optionals (!enableWireguard) [ "--disable-wireguard" ] + ++ optionals (!enableGadget) [ "--disable-gadget" ] + ++ optionals (!enableWifi) [ "--disable-wifi" ] + # enable IWD support for wifi as it doesn't require any new dependencies + # and it's easier for the NixOS module to use only one connman package when + # IWD is requested + ++ optionals (enableWifi) [ "--enable-iwd" ] + ++ optionals (!enableBluetooth) [ "--disable-bluetooth" ] + ++ optionals (!enableOfono) [ "--disable-ofono" ] + ++ optionals (!enableDundee) [ "--disable-dundee" ] + ++ optionals (!enablePacrunner) [ "--disable-pacrunner" ] + ++ optionals (!enableNeard) [ "--disable-neard" ] + ++ optionals (!enableWispr) [ "--disable-wispr" ] + ++ optionals (!enableTools) [ "--disable-tools" ] + ++ optionals (!enableStats) [ "--disable-stats" ] + ++ optionals (!enableClient) [ "--disable-client" ] + ++ optionals (!enableDatafiles) [ "--disable-datafiles" ] + ++ optionals (enableOpenconnect) [ + "--enable-openconnect=builtin" + "--with-openconnect=${openconnect}/sbin/openconnect" + ] + ++ optionals (enableOpenvpn) [ + "--enable-openvpn=builtin" + "--with-openvpn=${openvpn}/sbin/openvpn" + ] + ++ optionals (enableVpnc) [ + "--enable-vpnc=builtin" + "--with-vpnc=${vpnc}/sbin/vpnc" + ] + ++ optionals (enablePolkit) [ + "--enable-polkit" + ] + ++ optionals (enablePptp) [ + "--enable-pptp" + "--with-pptp=${pptp}/sbin/pptp" + ] + ++ optionals (!enableWireguard) [ + "--disable-wireguard" + ] + ++ optionals (enableNetworkManager) [ + "--enable-nmcompat" + ] + ++ optionals (enableHh2serialGps) [ + "--enable-hh2serial-gps" + ] + ++ optionals (enableL2tp) [ + "--enable-l2tp" + ] + ++ optionals (enableIospm) [ + "--enable-iospm" + ] + ++ optionals (enableTist) [ + "--enable-tist" + ] + ; + + doCheck = true; + + meta = with stdenv.lib; { + description = "A daemon for managing internet connections"; + homepage = "https://01.org/connman"; + maintainers = [ maintainers.matejc ]; + platforms = platforms.linux; + license = licenses.gpl2; + }; +} diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 9fcacd29ebe..34aee7f7879 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -1,177 +1,38 @@ -{ stdenv -, fetchurl -, pkgconfig -, file -, glib -# always required runtime dependencies -, dbus -, libmnl -, gnutls -, readline -# configureable options -, firewallType ? "iptables" # or "nftables" -, iptables ? null -, libnftnl ? null # for nftables -, dnsType ? "internal" # or "systemd-resolved" -# optional features which are turned *on* by default -, enableOpenconnect ? true -, openconnect ? null -, enableOpenvpn ? true -, openvpn ? null -, enableVpnc ? true -, vpnc ? true -, enablePolkit ? true -, polkit ? null -, enablePptp ? true -, pptp ? null -, ppp ? null -, enableLoopback ? true -, enableEthernet ? true -, enableWireguard ? true -, enableGadget ? true -, enableWifi ? true -, enableBluetooth ? true -, enableOfono ? true -, enableDundee ? true -, enablePacrunner ? true -, enableNeard ? true -, enableWispr ? true -, enableTools ? true -, enableStats ? true -, enableClient ? true -, enableDatafiles ? true -# optional features which are turned *off* by default -, enableNetworkManager ? false -, networkmanager ? null -, enableHh2serialGps ? false -, enableL2tp ? false -, enableIospm ? false -, enableTist ? false -}: +{ callPackage, lowPrio }: -assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ]; -assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ]; - -let inherit (stdenv.lib) optionals; - -stdenv.mkDerivation rec { - pname = "connman"; - version = "1.38"; - src = fetchurl { - url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; - sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"; +{ + connmanFull = callPackage ./connman.nix { + enableNetworkManager = true; + enableHh2serialGps = true; + enableL2tp = true; + enableIospm = true; + enableTist = true; }; - buildInputs = [ - glib - dbus - libmnl - gnutls - readline - ]; + connmanMinimal = lowPrio (callPackage ./connman.nix { + enableOpenconnect = false; + enableOpenvpn = false; + enableVpnc = false; + vpnc = false; + enablePolkit = false; + enablePptp = false; + enableLoopback = false; + # enableEthernet = false; # If disabled no ethernet connection can be performed + enableWireguard = false; + enableGadget = false; + # enableWifi = false; # If disabled no WiFi connection can be performed + enableBluetooth = false; + enableOfono = false; + enableDundee = false; + enablePacrunner = false; + enableNeard = false; + enableWispr = false; + enableTools = false; + enableStats = false; + enableClient = false; + # enableDatafiles = false; # If disabled, configuration and data files are not installed + }); - nativeBuildInputs = [ - pkgconfig - file - ] - ++ optionals (enableOpenvpn) [ openvpn ] - ++ optionals (enableOpenconnect) [ openconnect ] - ++ optionals (enableVpnc) [ vpnc ] - ++ optionals (enablePolkit) [ polkit ] - ++ optionals (enablePptp) [ pptp ppp ] - ++ optionals (firewallType == "iptables") [ iptables ] - ++ optionals (firewallType == "nftables") [ libnftnl ] - ; - - # fix invalid path to 'file' - patchPhase = '' - runHook prePatch - sed -i "s/\/usr\/bin\/file/file/g" ./configure - runHook postPatch - ''; - - configureFlags = [ - # directories flags - "--sysconfdir=${placeholder "out"}/etc" - "--localstatedir=/var" - "--with-dbusconfdir=${placeholder "out"}/share" - "--with-dbusdatadir=${placeholder "out"}/share" - "--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" - "--with-systemdunitdir=${placeholder "out"}/lib/systemd/system" - "--with-dns-backend=${dnsType}" - "--with-firewall=${firewallType}" - # production build flags - "--disable-maintainer-mode" - "--enable-session-policy-local=builtin" - # for building and running tests - # --enable-tests # installs the tests, we don't want that - "--enable-tools" - ] - ++ optionals (!enableLoopback) [ "--disable-loopback" ] - ++ optionals (!enableEthernet) [ "--disable-ethernet" ] - ++ optionals (!enableWireguard) [ "--disable-wireguard" ] - ++ optionals (!enableGadget) [ "--disable-gadget" ] - ++ optionals (!enableWifi) [ "--disable-wifi" ] - # enable IWD support for wifi as it doesn't require any new dependencies - # and it's easier for the NixOS module to use only one connman package when - # IWD is requested - ++ optionals (enableWifi) [ "--enable-iwd" ] - ++ optionals (!enableBluetooth) [ "--disable-bluetooth" ] - ++ optionals (!enableOfono) [ "--disable-ofono" ] - ++ optionals (!enableDundee) [ "--disable-dundee" ] - ++ optionals (!enablePacrunner) [ "--disable-pacrunner" ] - ++ optionals (!enableNeard) [ "--disable-neard" ] - ++ optionals (!enableWispr) [ "--disable-wispr" ] - ++ optionals (!enableTools) [ "--disable-tools" ] - ++ optionals (!enableStats) [ "--disable-stats" ] - ++ optionals (!enableClient) [ "--disable-client" ] - ++ optionals (!enableDatafiles) [ "--disable-datafiles" ] - ++ optionals (enableOpenconnect) [ - "--enable-openconnect=builtin" - "--with-openconnect=${openconnect}/sbin/openconnect" - ] - ++ optionals (enableOpenvpn) [ - "--enable-openvpn=builtin" - "--with-openvpn=${openvpn}/sbin/openvpn" - ] - ++ optionals (enableVpnc) [ - "--enable-vpnc=builtin" - "--with-vpnc=${vpnc}/sbin/vpnc" - ] - ++ optionals (enablePolkit) [ - "--enable-polkit" - ] - ++ optionals (enablePptp) [ - "--enable-pptp" - "--with-pptp=${pptp}/sbin/pptp" - ] - ++ optionals (!enableWireguard) [ - "--disable-wireguard" - ] - ++ optionals (enableNetworkManager) [ - "--enable-nmcompat" - ] - ++ optionals (enableHh2serialGps) [ - "--enable-hh2serial-gps" - ] - ++ optionals (enableL2tp) [ - "--enable-l2tp" - ] - ++ optionals (enableIospm) [ - "--enable-iospm" - ] - ++ optionals (enableTist) [ - "--enable-tist" - ] - ; - - doCheck = true; - - meta = with stdenv.lib; { - description = "A daemon for managing internet connections"; - homepage = "https://01.org/connman"; - maintainers = [ maintainers.matejc ]; - platforms = platforms.linux; - license = licenses.gpl2; - }; + # All the defaults + connman = callPackage ./connman.nix { }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5ed0b8d55a8..2827e84b7a4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2550,37 +2550,11 @@ in conspy = callPackage ../os-specific/linux/conspy {}; - connman = callPackage ../tools/networking/connman { }; - connmanThin = callPackage ../tools/networking/connman { - enableOpenconnect = false; - enableOpenvpn = false; - enableVpnc = false; - vpnc = false; - enablePolkit = false; - enablePptp = false; - enableLoopback = false; - # enableEthernet = false; # If disabled no ethernet connection can be performed - enableWireguard = false; - enableGadget = false; - # enableWifi = false; # If disabled no WiFi connection can be performed - enableBluetooth = false; - enableOfono = false; - enableDundee = false; - enablePacrunner = false; - enableNeard = false; - enableWispr = false; - enableTools = false; - enableStats = false; - enableClient = false; - # enableDatafiles = false; # If disabled, configuration and data files are not installed - }; - connmanFull = callPackage ../tools/networking/connman { - enableNetworkManager = true; - enableHh2serialGps = true; - enableL2tp = true; - enableIospm = true; - enableTist = true; - }; + inherit (callPackage ../tools/networking/connman {}) + connmanFull + connmanMinimal + connman + ; connman-gtk = callPackage ../tools/networking/connman/connman-gtk { }; From fa5f7b89c4b23f46acfcc29b4d683260937967b4 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Mon, 2 Mar 2020 11:13:45 +0200 Subject: [PATCH 15/21] connman: Switch to postPatch from patchPhase --- pkgs/tools/networking/connman/connman.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/tools/networking/connman/connman.nix b/pkgs/tools/networking/connman/connman.nix index f79b9875b9b..c700d6864a9 100644 --- a/pkgs/tools/networking/connman/connman.nix +++ b/pkgs/tools/networking/connman/connman.nix @@ -84,10 +84,8 @@ stdenv.mkDerivation rec { ; # fix invalid path to 'file' - patchPhase = '' - runHook prePatch + postPatch = '' sed -i "s/\/usr\/bin\/file/file/g" ./configure - runHook postPatch ''; configureFlags = [ From a3d2e48a62412029adf6e6b3d5d4d2cb0bf5bae2 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 3 Mar 2020 22:33:49 +0200 Subject: [PATCH 16/21] connmanMinimal: remove use of lowPrio --- pkgs/tools/networking/connman/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 34aee7f7879..b2b62cf01b7 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -1,4 +1,4 @@ -{ callPackage, lowPrio }: +{ callPackage }: { connmanFull = callPackage ./connman.nix { @@ -9,7 +9,7 @@ enableTist = true; }; - connmanMinimal = lowPrio (callPackage ./connman.nix { + connmanMinimal = callPackage ./connman.nix { enableOpenconnect = false; enableOpenvpn = false; enableVpnc = false; @@ -31,7 +31,7 @@ enableStats = false; enableClient = false; # enableDatafiles = false; # If disabled, configuration and data files are not installed - }); + }; # All the defaults connman = callPackage ./connman.nix { }; From 22b27dd635b9f6d1b77720cfb3ebbc6d753c0ca5 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 4 Mar 2020 09:45:45 +0200 Subject: [PATCH 17/21] connman: remove import of networkmanager --- pkgs/tools/networking/connman/connman.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/tools/networking/connman/connman.nix b/pkgs/tools/networking/connman/connman.nix index c700d6864a9..d72b6b90c5e 100644 --- a/pkgs/tools/networking/connman/connman.nix +++ b/pkgs/tools/networking/connman/connman.nix @@ -42,7 +42,6 @@ , enableDatafiles ? true # optional features which are turned *off* by default , enableNetworkManager ? false -, networkmanager ? null , enableHh2serialGps ? false , enableL2tp ? false , enableIospm ? false From aa44c23c7ab30a2c8d8b355bab6d533fb861fe75 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 4 Mar 2020 09:48:01 +0200 Subject: [PATCH 18/21] connman: reverse order of build flavors declaration --- pkgs/tools/networking/connman/default.nix | 6 +++--- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index b2b62cf01b7..9e87c9742ea 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -1,6 +1,9 @@ { callPackage }: { + # All the defaults + connman = callPackage ./connman.nix { }; + connmanFull = callPackage ./connman.nix { enableNetworkManager = true; enableHh2serialGps = true; @@ -32,7 +35,4 @@ enableClient = false; # enableDatafiles = false; # If disabled, configuration and data files are not installed }; - - # All the defaults - connman = callPackage ./connman.nix { }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2827e84b7a4..7600213d1a8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2551,9 +2551,9 @@ in conspy = callPackage ../os-specific/linux/conspy {}; inherit (callPackage ../tools/networking/connman {}) + connman connmanFull connmanMinimal - connman ; connman-gtk = callPackage ../tools/networking/connman/connman-gtk { }; From b03bf779aee312b610b1596682963b7569468630 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 4 Mar 2020 18:56:49 +0200 Subject: [PATCH 19/21] connman: remove unneeded deps from nativeBuildInputs --- pkgs/tools/networking/connman/connman.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/tools/networking/connman/connman.nix b/pkgs/tools/networking/connman/connman.nix index d72b6b90c5e..51219487220 100644 --- a/pkgs/tools/networking/connman/connman.nix +++ b/pkgs/tools/networking/connman/connman.nix @@ -73,9 +73,6 @@ stdenv.mkDerivation rec { pkgconfig file ] - ++ optionals (enableOpenvpn) [ openvpn ] - ++ optionals (enableOpenconnect) [ openconnect ] - ++ optionals (enableVpnc) [ vpnc ] ++ optionals (enablePolkit) [ polkit ] ++ optionals (enablePptp) [ pptp ppp ] ++ optionals (firewallType == "iptables") [ iptables ] From 480397693ef6e9ca92ab6e1d015e31232d62f2c7 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 28 Mar 2020 12:06:54 +0300 Subject: [PATCH 20/21] nixos/connman: add option to use specific package --- nixos/modules/services/networking/connman.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/networking/connman.nix b/nixos/modules/services/networking/connman.nix index e8eadc4e187..53adc337fa4 100644 --- a/nixos/modules/services/networking/connman.nix +++ b/nixos/modules/services/networking/connman.nix @@ -77,6 +77,13 @@ in { ''; }; + package = mkOption { + type = types.path; + description = "The connman package / build flavor"; + default = connman; + example = literalExample "pkgs.connmanFull"; + }; + }; }; @@ -93,7 +100,7 @@ in { message = "You can not use services.connman with networking.networkmanager"; }]; - environment.systemPackages = [ connman ]; + environment.systemPackages = [ cfg.package ]; systemd.services.connman = { description = "Connection service"; @@ -105,7 +112,7 @@ in { BusName = "net.connman"; Restart = "on-failure"; ExecStart = toString ([ - "${pkgs.connman}/sbin/connmand" + "${cfg.package}/sbin/connmand" "--config=${configFile}" "--nodaemon" ] ++ optional enableIwd "--wifi=iwd_agent" @@ -122,7 +129,7 @@ in { serviceConfig = { Type = "dbus"; BusName = "net.connman.vpn"; - ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; + ExecStart = "${cfg.package}/sbin/connman-vpnd -n"; StandardOutput = "null"; }; }; @@ -132,7 +139,7 @@ in { serviceConfig = { Name = "net.connman.vpn"; before = [ "connman" ]; - ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; + ExecStart = "${cfg.package}/sbin/connman-vpnd -n"; User = "root"; SystemdService = "connman-vpn.service"; }; From bffec3d88448c57c84527fe02bdfc988573b3db2 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 28 Mar 2020 12:28:29 +0300 Subject: [PATCH 21/21] nixos/connman: add TODOs regarding connman + network-manager --- nixos/modules/services/networking/connman.nix | 2 ++ pkgs/tools/networking/connman/default.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/nixos/modules/services/networking/connman.nix b/nixos/modules/services/networking/connman.nix index 53adc337fa4..6ccc2dffb26 100644 --- a/nixos/modules/services/networking/connman.nix +++ b/nixos/modules/services/networking/connman.nix @@ -96,6 +96,8 @@ in { assertion = !config.networking.useDHCP; message = "You can not use services.connman with networking.useDHCP"; }{ + # TODO: connman seemingly can be used along network manager and + # connmanFull supports this - so this should be worked out somehow assertion = !config.networking.networkmanager.enable; message = "You can not use services.connman with networking.networkmanager"; }]; diff --git a/pkgs/tools/networking/connman/default.nix b/pkgs/tools/networking/connman/default.nix index 9e87c9742ea..ccceaa30b04 100644 --- a/pkgs/tools/networking/connman/default.nix +++ b/pkgs/tools/networking/connman/default.nix @@ -5,6 +5,8 @@ connman = callPackage ./connman.nix { }; connmanFull = callPackage ./connman.nix { + # TODO: Why is this in `connmanFull` and not the default build? See TODO in + # nixos/modules/services/networking/connman.nix (near the assertions) enableNetworkManager = true; enableHh2serialGps = true; enableL2tp = true;