Merge pull request #83473 from doronbehar/update-connman

connman: 1.37 -> 1.38
This commit is contained in:
worldofpeace 2020-03-28 18:18:14 -04:00 committed by GitHub
commit d5cfaf5c39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 224 additions and 61 deletions

View File

@ -77,6 +77,13 @@ in {
''; '';
}; };
package = mkOption {
type = types.path;
description = "The connman package / build flavor";
default = connman;
example = literalExample "pkgs.connmanFull";
};
}; };
}; };
@ -89,11 +96,13 @@ in {
assertion = !config.networking.useDHCP; assertion = !config.networking.useDHCP;
message = "You can not use services.connman with 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; assertion = !config.networking.networkmanager.enable;
message = "You can not use services.connman with networking.networkmanager"; message = "You can not use services.connman with networking.networkmanager";
}]; }];
environment.systemPackages = [ connman ]; environment.systemPackages = [ cfg.package ];
systemd.services.connman = { systemd.services.connman = {
description = "Connection service"; description = "Connection service";
@ -105,7 +114,7 @@ in {
BusName = "net.connman"; BusName = "net.connman";
Restart = "on-failure"; Restart = "on-failure";
ExecStart = toString ([ ExecStart = toString ([
"${pkgs.connman}/sbin/connmand" "${cfg.package}/sbin/connmand"
"--config=${configFile}" "--config=${configFile}"
"--nodaemon" "--nodaemon"
] ++ optional enableIwd "--wifi=iwd_agent" ] ++ optional enableIwd "--wifi=iwd_agent"
@ -122,7 +131,7 @@ in {
serviceConfig = { serviceConfig = {
Type = "dbus"; Type = "dbus";
BusName = "net.connman.vpn"; BusName = "net.connman.vpn";
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; ExecStart = "${cfg.package}/sbin/connman-vpnd -n";
StandardOutput = "null"; StandardOutput = "null";
}; };
}; };
@ -132,7 +141,7 @@ in {
serviceConfig = { serviceConfig = {
Name = "net.connman.vpn"; Name = "net.connman.vpn";
before = [ "connman" ]; before = [ "connman" ];
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; ExecStart = "${cfg.package}/sbin/connman-vpnd -n";
User = "root"; User = "root";
SystemdService = "connman-vpn.service"; SystemdService = "connman-vpn.service";
}; };

View File

@ -0,0 +1,171 @@
{ 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
, 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 (enablePolkit) [ polkit ]
++ optionals (enablePptp) [ pptp ppp ]
++ optionals (firewallType == "iptables") [ iptables ]
++ optionals (firewallType == "nftables") [ libnftnl ]
;
# fix invalid path to 'file'
postPatch = ''
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-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;
};
}

View File

@ -1,61 +1,40 @@
{ stdenv, fetchurl, pkgconfig, openconnect, file, gawk, { callPackage }:
openvpn, vpnc, glib, dbus, iptables, gnutls, polkit,
wpa_supplicant, readline6, pptp, ppp }:
stdenv.mkDerivation rec { {
pname = "connman"; # All the defaults
version = "1.37"; connman = callPackage ./connman.nix { };
src = fetchurl {
url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz"; connmanFull = callPackage ./connman.nix {
sha256 = "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"; # 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;
enableIospm = true;
enableTist = true;
}; };
buildInputs = [ openconnect polkit connmanMinimal = callPackage ./connman.nix {
openvpn vpnc glib dbus iptables gnutls enableOpenconnect = false;
wpa_supplicant readline6 pptp ppp ]; enableOpenvpn = false;
enableVpnc = false;
nativeBuildInputs = [ pkgconfig file gawk ]; vpnc = false;
enablePolkit = false;
preConfigure = '' enablePptp = false;
export WPASUPPLICANT=${wpa_supplicant}/sbin/wpa_supplicant enableLoopback = false;
export PPPD=${ppp}/sbin/pppd # enableEthernet = false; # If disabled no ethernet connection can be performed
export AWK=${gawk}/bin/gawk enableWireguard = false;
sed -i "s/\/usr\/bin\/file/file/g" ./configure enableGadget = false;
''; # enableWifi = false; # If disabled no WiFi connection can be performed
enableBluetooth = false;
configureFlags = [ enableOfono = false;
"--sysconfdir=\${out}/etc" enableDundee = false;
"--localstatedir=/var" enablePacrunner = false;
"--with-dbusconfdir=${placeholder "out"}/share" enableNeard = false;
"--with-dbusdatadir=${placeholder "out"}/share" enableWispr = false;
"--disable-maintainer-mode" enableTools = false;
"--enable-openconnect=builtin" enableStats = false;
"--with-openconnect=${openconnect}/sbin/openconnect" enableClient = false;
"--enable-openvpn=builtin" # enableDatafiles = false; # If disabled, configuration and data files are not installed
"--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"
"--enable-tools"
"--enable-datafiles"
"--enable-pptp"
"--with-pptp=${pptp}/sbin/pptp"
"--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;
maintainers = [ maintainers.matejc ];
platforms = platforms.linux;
license = licenses.gpl2;
}; };
} }

View File

@ -2499,7 +2499,11 @@ in
conspy = callPackage ../os-specific/linux/conspy {}; conspy = callPackage ../os-specific/linux/conspy {};
connman = callPackage ../tools/networking/connman { }; inherit (callPackage ../tools/networking/connman {})
connman
connmanFull
connmanMinimal
;
connman-gtk = callPackage ../tools/networking/connman/connman-gtk { }; connman-gtk = callPackage ../tools/networking/connman/connman-gtk { };