Skip to content

Commit

Permalink
simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
erikarvstedt committed Mar 2, 2020
1 parent 4926fd2 commit b700924
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 124 deletions.
115 changes: 26 additions & 89 deletions pkgs/tools/networking/connman/connman.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,24 @@
, 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

# these features are enabled by default
, 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

# configurable options
, firewallType ? "iptables" # or "nftables"
, iptables ? null
, libnftnl ? null # for nftables
, dnsType ? "internal" # or "systemd-resolved"
}:

assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ];
Expand All @@ -68,28 +42,25 @@ stdenv.mkDerivation rec {
libmnl
gnutls
readline
];
(if (firewallType == "iptables") then iptables else libnftnl)
]
++ optionals (openvpn != null) [ openvpn ]
++ optionals (openconnect != null) [ openconnect ]
++ optionals (vpnc != null) [ vpnc ]
++ optionals (polkit != null) [ polkit ]
++ optionals (pptp != null) [ pptp ppp ]
;

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'
postPatch = ''
sed -i "s/\/usr\/bin\/file/file/g" ./configure
'';

configureFlags = [
# directories flags
"--sysconfdir=${placeholder "out"}/etc"
"--localstatedir=/var"
"--with-dbusconfdir=${placeholder "out"}/share"
Expand All @@ -98,69 +69,35 @@ stdenv.mkDerivation rec {
"--with-systemdunitdir=${placeholder "out"}/lib/systemd/system"
"--with-dns-backend=${dnsType}"
"--with-firewall=${firewallType}"
# production build flags
"--enable-iwd"

# release 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) [
++ optionals (openconnect != null) [
"--enable-openconnect=builtin"
"--with-openconnect=${openconnect}/sbin/openconnect"
]
++ optionals (enableOpenvpn) [
++ optionals (openvpn != null) [
"--enable-openvpn=builtin"
"--with-openvpn=${openvpn}/sbin/openvpn"
]
++ optionals (enableVpnc) [
++ optionals (vpnc != null) [
"--enable-vpnc=builtin"
"--with-vpnc=${vpnc}/sbin/vpnc"
]
++ optionals (enablePolkit) [
++ optionals (polkit != null) [
"--enable-polkit"
]
++ optionals (enablePptp) [
++ optionals (pptp != null) [
"--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;
Expand Down
52 changes: 19 additions & 33 deletions pkgs/tools/networking/connman/default.nix
Original file line number Diff line number Diff line change
@@ -1,38 +1,24 @@
{ callPackage, lowPrio }:
{ callPackage }:

{
connmanFull = callPackage ./connman.nix {
enableNetworkManager = true;
enableHh2serialGps = true;
enableL2tp = true;
enableIospm = true;
enableTist = true;
rec {
connman = callPackage ./connman.nix {};

connmanMinimal = callPackage ./connman.nix {
openconnect = null;
openvpn = null;
vpnc = null;
polkit = null;
pptp = null;
ppp = null;
};

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
connmanFull = connman.overrideDerivation (old: {
configureFlags = old.configureFlags ++ [
"--enable-nmcompat"
"--enable-hh2serial-gps"
"--enable-l2tp"
"--enable-iospm"
"--enable-tist"
];
});

# All the defaults
connman = callPackage ./connman.nix { };
}
4 changes: 2 additions & 2 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2464,9 +2464,9 @@ in
conspy = callPackage ../os-specific/linux/conspy {};

inherit (callPackage ../tools/networking/connman {})
connmanFull
connmanMinimal
connman
connmanMinimal
connmanFull
;

connman-gtk = callPackage ../tools/networking/connman/connman-gtk { };
Expand Down

0 comments on commit b700924

Please sign in to comment.