diff options
author | Samuel Dionne-Riel <samuel@dionne-riel.com> | 2018-09-01 23:26:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-01 23:26:36 -0400 |
commit | ca47cc90c2d5502afddfb575c01d17aff13373b8 (patch) | |
tree | 89f33db7b2626c263a6ab0ca244ebfe8c751efd8 /nixos/modules/services | |
parent | 4a8a80d9b0a1584849cc5f9b91409861fbe42e69 (diff) | |
parent | f0980c40c1353960834302498be8d8d454aaa11f (diff) | |
download | nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar.gz nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar.bz2 nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar.lz nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar.xz nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.tar.zst nixlib-ca47cc90c2d5502afddfb575c01d17aff13373b8.zip |
Merge pull request #39142 from teto/nm_dispatchers
[RDY] networkmanager: enrich dispatcher PATH
Diffstat (limited to 'nixos/modules/services')
-rw-r--r-- | nixos/modules/services/networking/networkmanager.nix | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index b0bc1c83d6b7..d5af4648e8f9 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -289,7 +289,7 @@ in { source = mkOption { type = types.path; description = '' - A script. + Path to the hook script. ''; }; @@ -297,12 +297,28 @@ in { type = types.enum (attrNames dispatcherTypesSubdirMap); default = "basic"; description = '' - Dispatcher hook type. Only basic hooks are currently available. + Dispatcher hook type. Look up the hooks described at + <link xlink:href="https://developer.gnome.org/NetworkManager/stable/NetworkManager.html">https://developer.gnome.org/NetworkManager/stable/NetworkManager.html</link> + and choose the type depending on the output folder. + You should then filter the event type (e.g., "up"/"down") from within your script. ''; }; }; }); default = []; + example = literalExample '' + [ { + source = pkgs.writeText "upHook" ''' + + if [ "$2" != "up" ]; then + logger "exit: event $2 != up" + fi + + # coreutils and iproute are in PATH too + logger "Device $DEVICE_IFACE coming up" + '''; + type = "basic"; + } ]''; description = '' A list of scripts which will be executed in response to network events. ''; @@ -418,6 +434,7 @@ in { ++ lib.imap1 (i: s: { inherit (s) source; target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}"; + mode = "0544"; }) cfg.dispatcherScripts ++ optional (dynamicHostsEnabled) { target = "NetworkManager/dnsmasq.d/dyndns.conf"; @@ -475,6 +492,14 @@ in { }; }; + systemd.services."NetworkManager-dispatcher" = { + wantedBy = [ "network.target" ]; + restartTriggers = [ configFile ]; + + # useful binaries for user-specified hooks + path = [ pkgs.iproute pkgs.utillinux pkgs.coreutils ]; + }; + # Turn off NixOS' network management networking = { useDHCP = false; |