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