main
 1{
 2  config,
 3  lib,
 4  pkgs,
 5  ...
 6}:
 7{
 8  networking = {
 9    networkmanager = {
10      enable = true;
11      wifi = {
12        backend = "iwd";
13      };
14      unmanaged = [
15        "interface-name:br-*"
16        "interface-name:ve-*" # FIXME are those docker's or libvirt's
17        "interface-name:veth-*" # FIXME are those docker's or libvirt's
18      ]
19      # Do not manager wireguard
20      ++ lib.optionals config.networking.wireguard.enable [ "interface-name:wg0" ]
21      # Do not manage docker interfaces
22      ++ lib.optionals config.virtualisation.docker.enable [ "interface-name:docker0" ]
23      # Do not manager libvirt interfaces
24      ++ lib.optionals config.virtualisation.libvirtd.enable [ "interface-name:virbr*" ];
25      plugins = with pkgs; [ networkmanager-openvpn ];
26    };
27  };
28
29  # Workaround https://github.com/NixOS/nixpkgs/issues/180175
30  systemd.services.NetworkManager-wait-online.enable = false;
31
32  # Disable ModemManager - not using mobile broadband
33  systemd.services.ModemManager.enable = false;
34}