Iwd.service not started

I’m trying to enable iwd after watching this talk, but I noticed that wpa_supplicant.service is still started, and iwd.service actually isn’t.

Here’s my network config:

  networking = {
    hostName = "foobar"; # Define your hostname.
    wireless.iwd.enable = true;
    networkmanager = {
      enable = true;
    };
  };

Should wpa_supplicant be removed from this list, and made into an optional dependency?

Furthermore, is there any configuration necessary to have NetworkManager use iwd as a backedn, as hinted at here?

1 Like

Currently to use iwd, the only way supported in nixpkgs is to use it a standalone wireless daemon. However, there is a PR [1] that allows for iwd to be used as a backend to networkmanager.

[1] networkmanager: allow `iwd` as Wi-Fi backend by eliasp · Pull Request #51803 · NixOS/nixpkgs · GitHub

1 Like

Do you know why the iwd systemd service isn’t started on boot though?

This is its definition:

❯ systemctl cat iwd
# /nix/store/zd6v08cfkrgf2q8kccj0vrsszw0i4jvh-iwd-0.7/lib/systemd/system/iwd.service
[Unit]
Description=Wireless service
Before=network.target
Wants=network.target

[Service]
Type=dbus
BusName=net.connman.iwd
ExecStart=/nix/store/zd6v08cfkrgf2q8kccj0vrsszw0i4jvh-iwd-0.7/libexec/iwd
LimitNPROC=1

[Install]
WantedBy=multi-user.target

And this is my network config in configuration.nix (note i disabled NetworkManager and now use iwctl directly):

  networking = {
    nameservers = [ "1.1.1.1" ];
    hostName = "foobar"; # Define your hostname.
    wireless.iwd.enable = true;
    networkmanager = {
      enable = false;
    };
  };

Works fine on my system, try unstable since stable looks like it’s somewhat behind. Compared to stable, it has this commit [1] but it shouldn’t make a difference since you already have it?

# /nix/store/x8r3y6885hhr6lr5ayrywg3x9y34si21-iwd-0.14/lib/systemd/system/iwd.service
[Unit]
Description=Wireless service
Before=network.target
Wants=network.target

[Service]
# /nix/store/x8r3y6885hhr6lr5ayrywg3x9y34si21-iwd-0.14/lib/systemd/system/iwd.service
[Unit]
Description=Wireless service
Before=network.target
Wants=network.target

[Service]
Type=dbus
BusName=net.connman.iwd
ExecStart=/nix/store/x8r3y6885hhr6lr5ayrywg3x9y34si21-iwd-0.14/libexec/iwd
LimitNPROC=1
Restart=on-failure

[Install]
WantedBy=multi-user.target

# /nix/store/akb43vr4cfiszqlpqjp2mapccjnyhzns-system-units/iwd.service.d/overrides.conf

[1] iwd: 0.7 -> 0.8 · NixOS/nixpkgs@3b7ecaa · GitHub

Yeah, weird, the Wants= is already there for me…

I guess I’ll just wait for 19.03 to be released :slight_smile:

Thanks for all the help!