From 30d41f82f21b8aecc3910669bf3a77e18b4e96e0 Mon Sep 17 00:00:00 2001 From: Colin Date: Sat, 1 Jun 2024 22:16:18 +0000 Subject: [PATCH] refactor: networkmanager: use `substitute` instead of `sed` when patching --- hosts/common/programs/modemmanager.nix | 15 ++++++++------- hosts/common/programs/networkmanager.nix | 7 +++++-- hosts/common/programs/wpa_supplicant.nix | 5 +++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/hosts/common/programs/modemmanager.nix b/hosts/common/programs/modemmanager.nix index 3b0e66de..aef9428e 100644 --- a/hosts/common/programs/modemmanager.nix +++ b/hosts/common/programs/modemmanager.nix @@ -5,14 +5,15 @@ in { sane.programs.modemmanager = { packageUnwrapped = pkgs.modemmanager-split.daemon.overrideAttrs (upstream: { - postInstall = (upstream.postInstall or "") + '' - sed 's/"root"/"networkmanager"/g' $out/share/dbus-1/system.d/org.freedesktop.ModemManager1.conf \ - > $out/share/dbus-1/system.d/networkmanager-org.freedesktop.ModemManager1.conf - ''; + postInstall = (upstream.postInstall or "") + '' + substitute $out/share/dbus-1/system.d/org.freedesktop.ModemManager1.conf \ + $out/share/dbus-1/system.d/networkmanager-org.freedesktop.ModemManager1.conf \ + --replace-fail 'user="root"' 'group="networkmanager"' + ''; - meta = upstream.meta // { - mainProgram = "ModemManager"; - }; + meta = upstream.meta // { + mainProgram = "ModemManager"; + }; }); # mmcli needs /run/current-system/sw/share/dbus-1 files to function enableFor.system = lib.mkIf (builtins.any (en: en) (builtins.attrValues cfg.enableFor.user)) true; diff --git a/hosts/common/programs/networkmanager.nix b/hosts/common/programs/networkmanager.nix index fc697a87..5f13176f 100644 --- a/hosts/common/programs/networkmanager.nix +++ b/hosts/common/programs/networkmanager.nix @@ -19,9 +19,12 @@ in # ''; postInstall = (upstream.postInstall or "") + '' # allow the bus to owned by either root or networkmanager users + # use the group here, that way ordinary users can be elevated to control networkmanager + # (via e.g. `nmcli`) for f in org.freedesktop.NetworkManager.conf nm-dispatcher.conf ; do - sed 's/"root"/"networkmanager"/g' $out/share/dbus-1/system.d/$f \ - > $out/share/dbus-1/system.d/networkmanager-$f + substitute $out/share/dbus-1/system.d/$f \ + $out/share/dbus-1/system.d/networkmanager-$f \ + --replace-fail 'user="root"' 'group="networkmanager"' done # remove unused services to prevent any unexpected interactions diff --git a/hosts/common/programs/wpa_supplicant.nix b/hosts/common/programs/wpa_supplicant.nix index c3ec64c8..fc8bb9c1 100644 --- a/hosts/common/programs/wpa_supplicant.nix +++ b/hosts/common/programs/wpa_supplicant.nix @@ -12,8 +12,9 @@ in # 'user="root"' 'user="networkmanager"' # ''; postInstall = (upstream.postInstall or "") + '' - sed 's/"root"/"networkmanager"/g' $out/share/dbus-1/system.d/dbus-wpa_supplicant.conf \ - > $out/share/dbus-1/system.d/networkmanager-wpa_supplicant.conf + substitute $out/share/dbus-1/system.d/dbus-wpa_supplicant.conf \ + $out/share/dbus-1/system.d/networkmanager-wpa_supplicant.conf \ + --replace-fail 'user="root"' 'group="networkmanager"' ''; postFixup = (upstream.postFixup or "") + ''