diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
index 3695997f7176..ac38a13bb3df 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
@@ -688,6 +688,15 @@
+
+
+ The
+ networking.wireless.iwd
+ module has a new
+ networking.wireless.iwd.settings
+ option.
+
+
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md
index cc5b6bf81eec..5dbcf3631de7 100644
--- a/nixos/doc/manual/release-notes/rl-2111.section.md
+++ b/nixos/doc/manual/release-notes/rl-2111.section.md
@@ -179,3 +179,5 @@ pt-services.clipcat.enable).
- NSS modules which should be queried after `resolved`, `files` and
`myhostname`, but before `dns` should use the default priority
- NSS modules which should come after `dns` should use mkAfter.
+
+- The [networking.wireless.iwd](options.html#opt-networking.wireless.iwd.enable) module has a new [networking.wireless.iwd.settings](options.html#opt-networking.wireless.iwd.settings) option.
diff --git a/nixos/modules/services/networking/iwd.nix b/nixos/modules/services/networking/iwd.nix
index 99e5e78badd2..8835f7f9372d 100644
--- a/nixos/modules/services/networking/iwd.nix
+++ b/nixos/modules/services/networking/iwd.nix
@@ -4,8 +4,31 @@ with lib;
let
cfg = config.networking.wireless.iwd;
+ ini = pkgs.formats.ini { };
+ configFile = ini.generate "main.conf" cfg.settings;
in {
- options.networking.wireless.iwd.enable = mkEnableOption "iwd";
+ options.networking.wireless.iwd = {
+ enable = mkEnableOption "iwd";
+
+ settings = mkOption {
+ type = ini.type;
+ default = { };
+
+ example = {
+ Settings.AutoConnect = true;
+
+ Network = {
+ EnableIPv6 = true;
+ RoutePriorityOffset = 300;
+ };
+ };
+
+ description = ''
+ Options passed to iwd.
+ See here for supported options.
+ '';
+ };
+ };
config = mkIf cfg.enable {
assertions = [{
@@ -15,6 +38,8 @@ in {
'';
}];
+ environment.etc."iwd/main.conf".source = configFile;
+
# for iwctl
environment.systemPackages = [ pkgs.iwd ];
@@ -27,7 +52,10 @@ in {
linkConfig.NamePolicy = "keep kernel";
};
- systemd.services.iwd.wantedBy = [ "multi-user.target" ];
+ systemd.services.iwd = {
+ wantedBy = [ "multi-user.target" ];
+ restartTriggers = [ configFile ];
+ };
};
meta.maintainers = with lib.maintainers; [ mic92 dtzWill ];