uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,89 @@
{ lib, stdenv
, fetchurl
, meson
, ninja
, gettext
, pkg-config
, networkmanager
, gnome
, libnotify
, libsecret
, polkit
, modemmanager
, libnma
, glib-networking
, gsettings-desktop-schemas
, libgudev
, jansson
, wrapGAppsHook
, gobject-introspection
, python3
, gtk3
, libappindicator-gtk3
, glib
}:
stdenv.mkDerivation rec {
pname = "network-manager-applet";
version = "1.26.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-aWEbKQZK29Vzlf4+Uanr3h6nlGFfd2kARTorvj2M3f0=";
};
mesonFlags = [
"-Dselinux=false"
"-Dappindicator=yes"
];
outputs = [ "out" "man" ];
buildInputs = [
libnma
gtk3
networkmanager
libnotify
libsecret
gsettings-desktop-schemas
polkit
libgudev
modemmanager
jansson
glib
glib-networking
libappindicator-gtk3
gnome.adwaita-icon-theme
];
nativeBuildInputs = [
meson
ninja
gettext
pkg-config
wrapGAppsHook
gobject-introspection
python3
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanagerapplet";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/network-manager-applet/";
description = "NetworkManager control applet for GNOME";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,197 @@
{ lib
, stdenv
, fetchurl
, substituteAll
, intltool
, pkg-config
, fetchpatch
, dbus
, gnome
, systemd
, libuuid
, polkit
, gnutls
, ppp
, dhcpcd
, iptables
, nftables
, python3
, vala
, libgcrypt
, dnsmasq
, bluez5
, readline
, libselinux
, audit
, gobject-introspection
, modemmanager
, openresolv
, libndp
, newt
, libsoup
, ethtool
, gnused
, iputils
, kmod
, jansson
, gtk-doc
, libxslt
, docbook_xsl
, docbook_xml_dtd_412
, docbook_xml_dtd_42
, docbook_xml_dtd_43
, openconnect
, curl
, meson
, ninja
, libpsl
, mobile-broadband-provider-info
, runtimeShell
}:
let
pythonForDocs = python3.withPackages (pkgs: with pkgs; [ pygobject3 ]);
in
stdenv.mkDerivation rec {
pname = "networkmanager";
version = "1.38.0";
src = fetchurl {
url = "mirror://gnome/sources/NetworkManager/${lib.versions.majorMinor version}/NetworkManager-${version}.tar.xz";
sha256 = "sha256-gqTPB93+sIFnh7Z8D1BYrmxQ1iWcCwVBok41FWBisu8=";
};
outputs = [ "out" "dev" "devdoc" "man" "doc" ];
# Right now we hardcode quite a few paths at build time. Probably we should
# patch networkmanager to allow passing these path in config file. This will
# remove unneeded build-time dependencies.
mesonFlags = [
# System paths
"--sysconfdir=/etc"
"--localstatedir=/var"
"-Dsystemdsystemunitdir=${placeholder "out"}/etc/systemd/system"
# to enable link-local connections
"-Dudev_dir=${placeholder "out"}/lib/udev"
"-Ddbus_conf_dir=${placeholder "out"}/share/dbus-1/system.d"
"-Dkernel_firmware_dir=/run/current-system/firmware"
# Platform
"-Dsession_tracking=systemd"
"-Dlibaudit=yes-disabled-by-default"
"-Dpolkit_agent_helper_1=/run/wrappers/bin/polkit-agent-helper-1"
# Features
# Allow using iwd when configured to do so
"-Diwd=true"
"-Dpppd=${ppp}/bin/pppd"
"-Diptables=${iptables}/bin/iptables"
"-Dnft=${nftables}/bin/nft"
"-Dmodem_manager=true"
"-Dnmtui=true"
"-Ddnsmasq=${dnsmasq}/bin/dnsmasq"
"-Dqt=false"
# Handlers
"-Dresolvconf=${openresolv}/bin/resolvconf"
# DHCP clients
# ISC DHCP client has reached it's end of life, so stop using it
"-Ddhclient=no"
"-Ddhcpcd=${dhcpcd}/bin/dhcpcd"
"-Ddhcpcanon=no"
# Miscellaneous
"-Ddocs=true"
# We don't use firewalld in NixOS
"-Dfirewalld_zone=false"
"-Dtests=no"
"-Dcrypto=gnutls"
];
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit iputils kmod openconnect ethtool gnused systemd;
inherit runtimeShell;
})
# Meson does not support using different directories during build and
# for installation like Autotools did with flags passed to make install.
./fix-install-paths.patch
];
buildInputs = [
systemd
libselinux
audit
libpsl
libuuid
polkit
ppp
libndp
curl
mobile-broadband-provider-info
bluez5
dnsmasq
gobject-introspection
modemmanager
readline
newt
libsoup
jansson
];
propagatedBuildInputs = [ gnutls libgcrypt ];
nativeBuildInputs = [
meson
ninja
intltool
pkg-config
vala
gobject-introspection
dbus
# Docs
gtk-doc
libxslt
docbook_xsl
docbook_xml_dtd_412
docbook_xml_dtd_42
docbook_xml_dtd_43
pythonForDocs
];
doCheck = false; # requires /sys, the net
postPatch = ''
patchShebangs ./tools
patchShebangs libnm/generate-setting-docs.py
'';
preBuild = ''
# Our gobject-introspection patches make the shared library paths absolute
# in the GIR files. When building docs, the library is not yet installed,
# though, so we need to replace the absolute path with a local one during build.
# We are using a symlink that will be overridden during installation.
mkdir -p ${placeholder "out"}/lib
ln -s $PWD/src/libnm-client-impl/libnm.so.0 ${placeholder "out"}/lib/libnm.so.0
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "NetworkManager";
attrPath = "networkmanager";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Projects/NetworkManager";
description = "Network configuration and management tool";
license = licenses.gpl2Plus;
changelog = "https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/raw/${version}/NEWS";
maintainers = teams.freedesktop.members ++ (with maintainers; [ domenkozar obadz maxeaubrey ]);
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,40 @@
{ lib, stdenv, glib, fetchFromGitHub, networkmanager, python3Packages
, gobject-introspection }:
let inherit (python3Packages) python pygobject3;
in stdenv.mkDerivation rec {
pname = "networkmanager_dmenu";
version = "1.6.0";
src = fetchFromGitHub {
owner = "firecat53";
repo = "networkmanager-dmenu";
rev = version;
sha256 = "1liidqh8c33pxyb07qyj0jkd0fdak73g9r2iwiq62vfzrpik09k0";
};
buildInputs = [ glib python pygobject3 gobject-introspection networkmanager python3Packages.wrapPython ];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp networkmanager_dmenu $out/bin/
'';
postFixup = ''
makeWrapperArgs="\
--prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH \
--prefix PYTHONPATH : \"$(toPythonPath $out):$(toPythonPath ${pygobject3})\""
wrapPythonPrograms
'';
meta = with lib; {
description = "Small script to manage NetworkManager connections with dmenu instead of nm-applet";
homepage = "https://github.com/firecat53/networkmanager-dmenu";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.jensbin ];
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,16 @@
diff --git a/meson.build b/meson.build
index a2d925a7e..5a65cd2fe 100644
--- a/meson.build
+++ b/meson.build
@@ -959,9 +959,9 @@ meson.add_install_script(
join_paths('tools', 'meson-post-install.sh'),
nm_datadir,
nm_bindir,
- nm_pkgconfdir,
+ nm_prefix + nm_pkgconfdir,
nm_pkglibdir,
- nm_pkgstatedir,
+ nm_prefix + nm_pkgstatedir,
nm_mandir,
nm_sysconfdir,
enable_docs ? '1' : '0',

View file

@ -0,0 +1,134 @@
diff --git a/data/84-nm-drivers.rules b/data/84-nm-drivers.rules
index 148acade5c..6395fbfbe5 100644
--- a/data/84-nm-drivers.rules
+++ b/data/84-nm-drivers.rules
@@ -7,6 +7,6 @@ ACTION!="add|change|move", GOTO="nm_drivers_end"
# Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?)
ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end"
DRIVERS=="?*", GOTO="nm_drivers_end"
-PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
+PROGRAM="@runtimeShell@ -c '@ethtool@/bin/ethtool -i $$1 |@gnused@/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
LABEL="nm_drivers_end"
diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
index e23b3a5282..c7246a3b61 100644
--- a/data/NetworkManager.service.in
+++ b/data/NetworkManager.service.in
@@ -8,7 +8,7 @@ Before=network.target @DISTRO_NETWORK_SERVICE@
[Service]
Type=dbus
BusName=org.freedesktop.NetworkManager
-ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
+ExecReload=@systemd@/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
#ExecReload=/bin/kill -HUP $MAINPID
ExecStart=@sbindir@/NetworkManager --no-daemon
Restart=on-failure
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index a11486d54b..de8e9022c6 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -13571,14 +13571,14 @@ nm_device_start_ip_check(NMDevice *self)
gw = nm_l3_config_data_get_best_default_route(l3cd, AF_INET);
if (gw) {
_nm_utils_inet4_ntop(NMP_OBJECT_CAST_IP4_ROUTE(gw)->gateway, buf);
- ping_binary = nm_utils_find_helper("ping", "/usr/bin/ping", NULL);
+ ping_binary = "@iputils@/bin/ping";
log_domain = LOGD_IP4;
}
} else if (priv->ip_data_6.state == NM_DEVICE_IP_STATE_READY) {
gw = nm_l3_config_data_get_best_default_route(l3cd, AF_INET6);
if (gw) {
_nm_utils_inet6_ntop(&NMP_OBJECT_CAST_IP6_ROUTE(gw)->gateway, buf);
- ping_binary = nm_utils_find_helper("ping6", "/usr/bin/ping6", NULL);
+ ping_binary = "@iputils@/bin/ping";
log_domain = LOGD_IP6;
}
}
diff --git a/src/libnm-client-impl/meson.build b/src/libnm-client-impl/meson.build
index 21a01e0b04..091c98428f 100644
--- a/src/libnm-client-impl/meson.build
+++ b/src/libnm-client-impl/meson.build
@@ -162,7 +162,6 @@ if enable_introspection
input: libnm_core_settings_sources,
output: 'nm-propery-infos-' + info + '.xml',
command: [
- python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-property-infos.py'),
info,
'@OUTPUT@',
@@ -219,7 +218,6 @@ if enable_introspection
'env',
'GI_TYPELIB_PATH=' + gi_typelib_path,
'LD_LIBRARY_PATH=' + ld_library_path,
- python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-gir.py'),
'--lib-path', meson.current_build_dir(),
'--gir', '@INPUT@',
diff --git a/src/libnm-platform/nm-platform-utils.c b/src/libnm-platform/nm-platform-utils.c
index 9ad030df76..8d800fb1c0 100644
--- a/src/libnm-platform/nm-platform-utils.c
+++ b/src/libnm-platform/nm-platform-utils.c
@@ -2207,7 +2207,7 @@ nmp_utils_modprobe(GError **error, gboolean suppress_error_logging, const char *
/* construct the argument list */
argv = g_ptr_array_sized_new(4);
- g_ptr_array_add(argv, "/sbin/modprobe");
+ g_ptr_array_add(argv, "@kmod@/bin/modprobe");
g_ptr_array_add(argv, "--use-blacklist");
g_ptr_array_add(argv, (char *) arg1);
diff --git a/src/libnmc-base/nm-vpn-helpers.c b/src/libnmc-base/nm-vpn-helpers.c
index e2c0c394bd..1a507aa0d4 100644
--- a/src/libnmc-base/nm-vpn-helpers.c
+++ b/src/libnmc-base/nm-vpn-helpers.c
@@ -198,25 +198,8 @@ nm_vpn_openconnect_authenticate_helper(const char *host,
gs_free const char **output_v = NULL;
const char *const *iter;
const char *path;
- const char *const DEFAULT_PATHS[] = {
- "/sbin/",
- "/usr/sbin/",
- "/usr/local/sbin/",
- "/bin/",
- "/usr/bin/",
- "/usr/local/bin/",
- NULL,
- };
- path = nm_utils_file_search_in_paths("openconnect",
- "/usr/sbin/openconnect",
- DEFAULT_PATHS,
- G_FILE_TEST_IS_EXECUTABLE,
- NULL,
- NULL,
- error);
- if (!path)
- return FALSE;
+ path = "@openconnect@/bin/openconnect";
if (!g_spawn_sync(NULL,
(char **) NM_MAKE_STRV(path, "--authenticate", host),
diff --git a/src/libnmc-setting/meson.build b/src/libnmc-setting/meson.build
index 8f07ae634e..a1326b3403 100644
--- a/src/libnmc-setting/meson.build
+++ b/src/libnmc-setting/meson.build
@@ -6,7 +6,6 @@ if enable_docs
input: [nm_settings_docs_xml_gir, nm_property_infos_xml['nmcli']],
output: 'settings-docs-input.xml',
command: [
- python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'),
'@OUTPUT@',
nm_property_infos_xml['nmcli'],
diff --git a/src/tests/client/meson.build b/src/tests/client/meson.build
index b2e455bbbd..a12ebf212a 100644
--- a/src/tests/client/meson.build
+++ b/src/tests/client/meson.build
@@ -6,7 +6,6 @@ test(
args: [
build_root,
source_root,
- python.path(),
],
timeout: 120,
)

View file

@ -0,0 +1,84 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, openfortivpn
, gettext
, pkg-config
, file
, glib
, gtk3
, gtk4
, networkmanager
, ppp
, libsecret
, withGnome ? true
, gnome
, libnma
, libnma-gtk4
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-fortisslvpn";
version = "1.4.0";
name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sFXiY0m1FrI1hXmKs+9XtDawFIAOkqiscyz8jnbF2vo=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit openfortivpn;
})
];
nativeBuildInputs = [
gettext
pkg-config
file
];
buildInputs = [
openfortivpn
networkmanager
ppp
glib
] ++ lib.optionals withGnome [
gtk3
gtk4
libsecret
libnma
libnma-gtk4
];
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--localstatedir=/var"
"--enable-absolute-paths"
];
installFlags = [
# the installer only creates an empty directory in localstatedir, so
# we can drop it
"localstatedir=."
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-fortisslvpn";
versionPolicy = "odd-unstable";
};
networkManagerPlugin = "VPN/nm-fortisslvpn-service.name";
};
meta = with lib; {
description = "NetworkManagers FortiSSL plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2;
};
}

View file

@ -0,0 +1,12 @@
diff --git a/src/nm-fortisslvpn-service.c b/src/nm-fortisslvpn-service.c
index 6c340d0..995c981 100644
--- a/src/nm-fortisslvpn-service.c
+++ b/src/nm-fortisslvpn-service.c
@@ -182,6 +182,7 @@ nm_find_openfortivpn (void)
{
static const char *openfortivpn_binary_paths[] =
{
+ "@openfortivpn@/bin/openfortivpn",
"/usr/local/bin/openfortivpn",
"/usr/bin/openfortivpn",
NULL

View file

@ -0,0 +1,59 @@
{ lib, stdenv, fetchFromGitLab, substituteAll, autoreconfHook, iodine, intltool, pkg-config, networkmanager, libsecret, gtk3
, withGnome ? true, gnome, fetchpatch, libnma, glib }:
let
pname = "NetworkManager-iodine";
version = "unstable-2019-11-05";
in stdenv.mkDerivation {
name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "network-manager-iodine";
rev = "2ef0abf089b00a0546f214dde0d45e63f2990b79";
sha256 = "1ps26fr9b1yyafj7lrzf2kmaxb0ipl0mhagch5kzrjdsc5xkajz7";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit iodine;
})
# Don't use etc/dbus-1/system.d
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/network-manager-iodine/merge_requests/2.patch";
sha256 = "108pkf0mddj32s46k7jkmpwcaq2ylci4dqpp7wck3zm9q2jffff2";
})
];
buildInputs = [ iodine networkmanager glib ]
++ lib.optionals withGnome [ gtk3 libsecret libnma ];
nativeBuildInputs = [ intltool autoreconfHook pkg-config ];
# glib-2.62 deprecations
NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
preConfigure = "intltoolize";
configureFlags = [
"--without-libnm-glib"
"--with-gnome=${if withGnome then "yes" else "no"}"
"--localstatedir=/" # needed for the management socket under /run/NetworkManager
"--enable-absolute-paths"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-iodine";
};
networkManagerPlugin = "VPN/nm-iodine-service.name";
};
meta = with lib; {
description = "NetworkManager's iodine plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,11 @@
--- a/src/nm-iodine-service.c
+++ b/src/nm-iodine-service.c
@@ -62,7 +62,7 @@
static const char *iodine_binary_paths[] =
{
- "/usr/bin/iodine",
+ "@iodine@/bin/iodine",
"/usr/sbin/iodine",
"/usr/local/bin/iodine",
"/usr/local/sbin/iodine",

View file

@ -0,0 +1,80 @@
{ stdenv
, lib
, substituteAll
, fetchFromGitHub
, autoreconfHook
, pkg-config
, gtk3
, gtk4
, networkmanager
, ppp
, xl2tpd
, strongswan
, libsecret
, withGnome ? true
, libnma
, libnma-gtk4
, glib
, openssl
, nss
}:
stdenv.mkDerivation rec {
name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
pname = "NetworkManager-l2tp";
version = "1.20.4";
src = fetchFromGitHub {
owner = "nm-l2tp";
repo = "network-manager-l2tp";
rev = version;
sha256 = "VoqPjMQILBYemRE5VD/XwhWi9zL9QxxHZJ2JKtGglFo=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit strongswan xl2tpd;
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
networkmanager
ppp
glib
openssl
nss
] ++ lib.optionals withGnome [
gtk3
gtk4
libsecret
libnma
libnma-gtk4
];
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--localstatedir=/var"
"--enable-absolute-paths"
];
enableParallelBuilding = true;
passthru = {
networkManagerPlugin = "VPN/nm-l2tp-service.name";
};
meta = with lib; {
description = "L2TP plugin for NetworkManager";
inherit (networkmanager.meta) platforms;
homepage = "https://github.com/nm-l2tp/network-manager-l2tp";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ abbradar obadz ];
};
}

View file

@ -0,0 +1,22 @@
diff --git a/shared/utils.c b/shared/utils.c
index 453e277..28716a5 100644
--- a/shared/utils.c
+++ b/shared/utils.c
@@ -39,7 +39,7 @@ check_ipsec_daemon(const char *path)
const char *
nm_find_ipsec(void)
{
- static const char *ipsec_binary_paths[] = {"/usr/bin/ipsec",
+ static const char *ipsec_binary_paths[] = {"@strongswan@/bin/ipsec",
"/sbin/ipsec",
"/usr/sbin/ipsec",
"/usr/local/sbin/ipsec",
@@ -70,7 +70,7 @@ nm_find_l2tpd(NML2tpL2tpDaemon *l2tp_daemon)
"/usr/local/sbin/kl2tpd",
NULL};
- static const char *xl2tp_binary_paths[] = {"/usr/bin/xl2tpd",
+ static const char *xl2tp_binary_paths[] = {"@xl2tpd@/bin/xl2tpd",
"/sbin/xl2tpd",
"/usr/sbin/xl2tpd",
"/usr/local/sbin/xl2tpd",

View file

@ -0,0 +1,96 @@
{ stdenv
, fetchurl
, meson
, ninja
, gettext
, gtk-doc
, pkg-config
, vala
, networkmanager
, gnome
, isocodes
, libxml2
, docbook_xsl
, docbook_xml_dtd_43
, mobile-broadband-provider-info
, gobject-introspection
, gtk3
, withGtk4 ? false
, gtk4
, withGnome ? true
, gcr
, glib
, substituteAll
, lib
}:
stdenv.mkDerivation rec {
pname = "libnma";
version = "1.8.38";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "Xtk+rhhFb/WopPQIF4we4ZjcjTpGxl+QdbEBkW5k6LQ=";
};
patches = [
# Needed for wingpanel-indicator-network and switchboard-plug-network
./hardcode-gsettings.patch
];
nativeBuildInputs = [
meson
ninja
gettext
pkg-config
gobject-introspection
gtk-doc
docbook_xsl
docbook_xml_dtd_43
libxml2
vala
];
buildInputs = [
gtk3
networkmanager
isocodes
mobile-broadband-provider-info
] ++ lib.optionals withGtk4 [
gtk4
] ++ lib.optionals withGnome [
# advanced certificate chooser
gcr
];
mesonFlags = [
"-Dgcr=${lib.boolToString withGnome}"
"-Dlibnma_gtk4=${lib.boolToString withGtk4}"
];
postPatch = ''
substituteInPlace src/nma-ws/nma-eap.c --subst-var-by \
NM_APPLET_GSETTINGS ${glib.makeSchemaPath "$out" "${pname}-${version}"}
'';
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/libnma";
description = "NetworkManager UI utilities (libnm version)";
license = licenses.gpl2Plus; # Mix of GPL and LPGL 2+
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,26 @@
--- a/src/nma-ws/nma-eap.c
+++ b/src/nma-ws/nma-eap.c
@@ -248,11 +248,16 @@ nma_eap_ca_cert_ignore_get (NMAEap *method, NMConnection *connection)
static GSettings *
_get_ca_ignore_settings (NMConnection *connection)
{
+ g_autoptr (GSettingsSchemaSource) *schema_source;
+ g_autoptr (GSettingsSchema) *schema;
GSettings *settings;
char *path = NULL;
const char *uuid;
g_return_val_if_fail (connection, NULL);
+ schema_source = g_settings_schema_source_new_from_directory ("@NM_APPLET_GSETTINGS@", g_settings_schema_source_get_default (), TRUE, NULL);
+ schema = g_settings_schema_source_lookup (schema_source, "org.gnome.nm-applet.eap", FALSE);
+
uuid = nm_connection_get_uuid (connection);
g_return_val_if_fail (uuid && *uuid, NULL);
path = g_strdup_printf ("/org/gnome/nm-applet/eap/%s/", uuid);
- settings = g_settings_new_with_path ("org.gnome.nm-applet.eap", path);
+ settings = g_settings_new_full (schema, NULL, path);
g_free (path);
return settings;

View file

@ -0,0 +1,80 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, glib
, libxml2
, openconnect
, intltool
, pkg-config
, autoreconfHook
, networkmanager
, gcr
, libsecret
, file
, gtk3
, libnma
, libnma-gtk4
, gtk4
, withGnome ? true
, gnome
, kmod
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-openconnect";
version = "1.2.8";
src = fetchurl {
url = "mirror://gnome/sources/NetworkManager-openconnect/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "Xe2qeF2C2OI53dCCv6xSUMaR6WRGS+GAe2gnJjYzzcw=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit kmod openconnect;
})
];
buildInputs = [
glib
libxml2
openconnect
networkmanager
] ++ lib.optionals withGnome [
gtk3
libnma
libnma-gtk4
gtk4
gcr
libsecret
];
nativeBuildInputs = [
intltool
pkg-config
file
];
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--enable-absolute-paths"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-openconnect";
versionPolicy = "odd-unstable";
};
networkManagerPlugin = "VPN/nm-openconnect-service.name";
};
meta = with lib; {
description = "NetworkManagers OpenConnect plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,20 @@
--- a/src/nm-openconnect-service.c
+++ b/src/nm-openconnect-service.c
@@ -60,7 +60,7 @@
static const char *openconnect_binary_paths[] =
{
- "/usr/bin/openconnect",
+ "@openconnect@/bin/openconnect",
"/usr/sbin/openconnect",
"/usr/local/bin/openconnect",
"/usr/local/sbin/openconnect",
@@ -734,7 +734,7 @@
_LOGD ("nm-openconnect-service (version " DIST_VERSION ") starting...");
- if (system ("/sbin/modprobe tun") == -1)
+ if (system ("@kmod@/bin/modprobe tun") == -1)
exit (EXIT_FAILURE);
if (bus_name)

View file

@ -0,0 +1,78 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, openvpn
, intltool
, libxml2
, pkg-config
, file
, networkmanager
, libsecret
, glib
, gtk3
, gtk4
, withGnome ? true
, gnome
, kmod
, libnma
, libnma-gtk4
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-openvpn";
version = "1.8.18";
src = fetchurl {
url = "mirror://gnome/sources/NetworkManager-openvpn/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "U9+wrPZEeK3HKAdPFi9i5gv/YqYFvYl+uIsmfnBXkno=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit kmod openvpn;
})
];
nativeBuildInputs = [
intltool
pkg-config
file
libxml2
];
buildInputs = [
openvpn
networkmanager
glib
] ++ lib.optionals withGnome [
gtk3
gtk4
libsecret
libnma
libnma-gtk4
];
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--localstatedir=/" # needed for the management socket under /run/NetworkManager
"--enable-absolute-paths"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-openvpn";
versionPolicy = "odd-unstable";
};
networkManagerPlugin = "VPN/nm-openvpn-service.name";
};
meta = with lib; {
description = "NetworkManager's OpenVPN plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,34 @@
--- a/properties/nm-openvpn-editor.c
+++ b/properties/nm-openvpn-editor.c
@@ -775,8 +775,7 @@
nm_find_openvpn (void)
{
static const char *openvpn_binary_paths[] = {
- "/usr/sbin/openvpn",
- "/sbin/openvpn",
+ "@openvpn@/bin/openvpn",
NULL
};
const char **openvpn_binary = openvpn_binary_paths;
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -522,9 +522,7 @@
openvpn_binary_find_exepath (void)
{
static const char *paths[] = {
- "/usr/sbin/openvpn",
- "/sbin/openvpn",
- "/usr/local/sbin/openvpn",
+ "@openvpn@/bin/openvpn",
};
int i;
@@ -2326,7 +2324,7 @@
_LOGD ("nm-openvpn-service (version " DIST_VERSION ") starting...");
if ( !g_file_test ("/sys/class/misc/tun", G_FILE_TEST_EXISTS)
- && (system ("/sbin/modprobe tun") == -1))
+ && (system ("@kmod@/bin/modprobe tun") == -1))
return EXIT_FAILURE;
plugin = nm_openvpn_plugin_new (bus_name);

View file

@ -0,0 +1,73 @@
{ stdenv
, lib
, fetchurl
, file
, glib
, gnome
, gtk3
, gtk4
, intltool
, libnma
, libnma-gtk4
, libsecret
, networkmanager
, pkg-config
, ppp
, sstp
, withGnome ? true
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-sstp";
version = "1.3.0";
name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "+IJw3jvOYs/+NDS9HvCrSQ6wxh1x1yqwiFij7UZb+rU=";
};
nativeBuildInputs = [
file
intltool
pkg-config
];
buildInputs = [
sstp
networkmanager
glib
ppp
] ++ lib.optionals withGnome [
gtk3
gtk4
libsecret
libnma
libnma-gtk4
];
postPatch = ''
sed -i 's#/sbin/pppd#${ppp}/bin/pppd#' src/nm-sstp-service.c
sed -i 's#/sbin/sstpc#${sstp}/bin/sstpc#' src/nm-sstp-service.c
'';
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--enable-absolute-paths"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-sstp";
};
networkManagerPlugin = "VPN/nm-sstp-service.name";
};
meta = with lib; {
description = "NetworkManager's sstp plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,58 @@
{ stdenv
, lib
, fetchurl
, intltool
, pkg-config
, networkmanager
, strongswanNM
, gtk3
, gtk4
, gnome
, libsecret
, libnma
, libnma-gtk4
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-strongswan";
version = "1.6.0";
src = fetchurl {
url = "https://download.strongswan.org/NetworkManager/${pname}-${version}.tar.bz2";
sha256 = "bbyA9qCboM9hBKMXhJWXgEFN13Fl4pY6zWZXwowlRMI=";
};
nativeBuildInputs = [
intltool
pkg-config
];
buildInputs = [
networkmanager
strongswanNM
libsecret
gtk3
gtk4
libnma
libnma-gtk4
];
configureFlags = [
"--with-charon=${strongswanNM}/libexec/ipsec/charon-nm"
"--with-nm-libexecdir=${placeholder "out"}/libexec"
"--with-nm-plugindir=${placeholder "out"}/lib/NetworkManager"
"--with-gtk4"
];
PKG_CONFIG_LIBNM_VPNSERVICEDIR = "${placeholder "out"}/lib/NetworkManager/VPN";
passthru = {
networkManagerPlugin = "VPN/nm-strongswan-service.name";
};
meta = with lib; {
description = "NetworkManager's strongswan plugin";
inherit (networkmanager.meta) platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,31 @@
{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, qttools, qtbase, networkmanager-qt, modemmanager-qt }:
mkDerivation rec {
pname = "nm-tray";
version = "0.5.0";
src = fetchFromGitHub {
owner = "palinek";
repo = pname;
rev = version;
sha256 = "sha256-JTH1cmkgdW2aRWMYPRvOAvCJz0ClCIpjUtcWcqJQGSU=";
};
postPatch = ''
sed -i -e '1i#include <QMetaEnum>' src/nmmodel.cpp
'';
nativeBuildInputs = [ cmake pkg-config qttools ];
cmakeFlags = [ "-DWITH_MODEMMANAGER_SUPPORT=ON" ];
buildInputs = [ qtbase networkmanager-qt modemmanager-qt ];
meta = with lib; {
description = "Simple Network Manager frontend written in Qt";
homepage = "https://github.com/palinek/nm-tray";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dtzWill ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,75 @@
{ stdenv
, lib
, fetchurl
, substituteAll
, vpnc
, intltool
, pkg-config
, networkmanager
, libsecret
, gtk3
, gtk4
, withGnome ? true
, gnome
, glib
, kmod
, file
, libnma
, libnma-gtk4
}:
stdenv.mkDerivation rec {
pname = "NetworkManager-vpnc";
version = "1.2.8";
src = fetchurl {
url = "mirror://gnome/sources/NetworkManager-vpnc/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1l4xqlPI/cP95++EpNqpeaYFwj/THO/2R79+qqma+8w=";
};
patches = [
(substituteAll {
src = ./fix-paths.patch;
inherit vpnc kmod;
})
];
nativeBuildInputs = [
intltool
pkg-config
file
];
buildInputs = [
vpnc
networkmanager
glib
] ++ lib.optionals withGnome [
gtk3
gtk4
libsecret
libnma
libnma-gtk4
];
configureFlags = [
"--with-gnome=${if withGnome then "yes" else "no"}"
"--with-gtk4=${if withGnome then "yes" else "no"}"
"--enable-absolute-paths"
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "networkmanager-vpnc";
versionPolicy = "odd-unstable";
};
networkManagerPlugin = "VPN/nm-vpnc-service.name";
};
meta = with lib; {
description = "NetworkManager's VPNC plugin";
inherit (networkmanager.meta) maintainers platforms;
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,31 @@
--- a/properties/nm-vpnc-editor-plugin.c
+++ b/properties/nm-vpnc-editor-plugin.c
@@ -161,7 +161,7 @@
GError *error = NULL;
const char *decrypt_possible_paths[] = {
- "/usr/lib/vpnc/cisco-decrypt",
+ "@vpnc@/bin/cisco-decrypt",
"/usr/bin/cisco-decrypt",
NULL
};
--- a/src/nm-vpnc-service.c
+++ b/src/nm-vpnc-service.c
@@ -610,7 +610,7 @@
find_vpnc (void)
{
static const char *vpnc_paths[] = {
- "/usr/sbin/vpnc",
+ "@vpnc@/bin/vpnc",
"/sbin/vpnc",
"/usr/local/sbin/vpnc",
NULL
@@ -1308,7 +1308,7 @@
_LOGD (" vpnc interactive mode is %s", interactive_available ? "enabled" : "disabled");
_LOGD (" uses%s --bus-name \"%s\"", bus_name_free ? "" : " default", bus_name);
- if (system ("/sbin/modprobe tun") == -1)
+ if (system ("@kmod@/bin/modprobe tun") == -1)
exit (EXIT_FAILURE);
plugin = nm_vpnc_plugin_new (bus_name);