Skip to content

Commit 8e34303

Browse files
authored
Fix iwd network installation and setup (#4271)
* Fix 4223 - IWD * Update * Update
1 parent cfdcebc commit 8e34303

File tree

5 files changed

+46
-51
lines changed

5 files changed

+46
-51
lines changed

archinstall/default_profiles/desktop.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ def packages(self) -> list[str]:
3131
'openssh',
3232
'htop',
3333
'wget',
34-
'iwd',
35-
'wireless_tools',
3634
'smartmontools',
3735
'xdg-utils',
3836
]

archinstall/lib/installer.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -805,14 +805,6 @@ def post_install_enable_networkd_resolved(*args: str, **kwargs: str) -> None:
805805

806806
return True
807807

808-
def configure_nm_iwd(self) -> None:
809-
# Create NetworkManager config directory and write iwd backend conf
810-
nm_conf_dir = self.target / 'etc/NetworkManager/conf.d'
811-
nm_conf_dir.mkdir(parents=True, exist_ok=True)
812-
813-
iwd_backend_conf = nm_conf_dir / 'wifi_backend.conf'
814-
iwd_backend_conf.write_text('[device]\nwifi.backend=iwd\n')
815-
816808
def mkinitcpio(self, flags: list[str]) -> bool:
817809
for plugin in plugins.values():
818810
if hasattr(plugin, 'on_mkinitcpio'):

archinstall/lib/network/network_handler.py

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,45 @@
33
from archinstall.lib.models.profile import ProfileConfiguration
44

55

6-
class NetworkHandler:
7-
def install_network_config(
8-
self,
9-
network_config: NetworkConfiguration,
10-
installation: Installer,
11-
profile_config: ProfileConfiguration | None = None,
12-
) -> None:
13-
match network_config.type:
14-
case NicType.ISO:
15-
_ = installation.copy_iso_network_config(
16-
enable_services=True, # Sources the ISO network configuration to the install medium.
17-
)
18-
case NicType.NM | NicType.NM_IWD:
19-
# Install NetworkManager package for both cases
20-
packages = ['networkmanager']
21-
# Default back-end only for non-iwd
22-
if network_config.type == NicType.NM:
23-
packages.append('wpa_supplicant')
24-
25-
installation.add_additional_packages(packages)
26-
27-
# Desktop profile -> Always add applet
28-
if profile_config and profile_config.profile:
29-
if profile_config.profile.is_desktop_profile():
30-
installation.add_additional_packages('network-manager-applet')
31-
32-
installation.enable_service('NetworkManager.service')
33-
if network_config.type == NicType.NM_IWD:
34-
# NM_IWD special handling
35-
installation.configure_nm_iwd()
36-
installation.disable_service('iwd.service')
37-
38-
case NicType.MANUAL:
39-
for nic in network_config.nics:
40-
installation.configure_nic(nic)
41-
installation.enable_service('systemd-networkd')
42-
installation.enable_service('systemd-resolved')
6+
def install_network_config(
7+
network_config: NetworkConfiguration,
8+
installation: Installer,
9+
profile_config: ProfileConfiguration | None = None,
10+
) -> None:
11+
match network_config.type:
12+
case NicType.ISO:
13+
_ = installation.copy_iso_network_config(
14+
enable_services=True, # Sources the ISO network configuration to the install medium.
15+
)
16+
case NicType.NM | NicType.NM_IWD:
17+
packages = ['networkmanager']
18+
19+
if network_config.type == NicType.NM:
20+
packages.append('wpa_supplicant')
21+
else:
22+
packages.append('iwd')
23+
24+
if profile_config and profile_config.profile:
25+
if profile_config.profile.is_desktop_profile():
26+
packages.append('network-manager-applet')
27+
28+
installation.add_additional_packages(packages)
29+
installation.enable_service('NetworkManager.service')
30+
31+
if network_config.type == NicType.NM_IWD:
32+
_configure_nm_iwd(installation)
33+
installation.disable_service('iwd.service')
34+
35+
case NicType.MANUAL:
36+
for nic in network_config.nics:
37+
installation.configure_nic(nic)
38+
installation.enable_service('systemd-networkd')
39+
installation.enable_service('systemd-resolved')
40+
41+
42+
def _configure_nm_iwd(installation: Installer) -> None:
43+
nm_conf_dir = installation.target / 'etc/NetworkManager/conf.d'
44+
nm_conf_dir.mkdir(parents=True, exist_ok=True)
45+
46+
iwd_backend_conf = nm_conf_dir / 'wifi_backend.conf'
47+
_ = iwd_backend_conf.write_text('[device]\nwifi.backend=iwd\n')

archinstall/scripts/guided.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from archinstall.lib.models import Bootloader
1717
from archinstall.lib.models.device import DiskLayoutType, EncryptionType
1818
from archinstall.lib.models.users import User
19-
from archinstall.lib.network.network_handler import NetworkHandler
19+
from archinstall.lib.network.network_handler import install_network_config
2020
from archinstall.lib.output import debug, error, info
2121
from archinstall.lib.packages.util import check_version_upgrade
2222
from archinstall.lib.profile.profiles_handler import profile_handler
@@ -118,7 +118,7 @@ def perform_installation(
118118
installation.add_bootloader(config.bootloader_config.bootloader, config.bootloader_config.uki, config.bootloader_config.removable)
119119

120120
if config.network_config:
121-
NetworkHandler().install_network_config(
121+
install_network_config(
122122
config.network_config,
123123
installation,
124124
config.profile_config,

archinstall/scripts/minimal.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from archinstall.lib.models import Bootloader
99
from archinstall.lib.models.profile import ProfileConfiguration
1010
from archinstall.lib.models.users import Password, User
11-
from archinstall.lib.network.network_handler import NetworkHandler
11+
from archinstall.lib.network.network_handler import install_network_config
1212
from archinstall.lib.output import debug, error, info
1313
from archinstall.lib.profile.profiles_handler import profile_handler
1414
from archinstall.lib.translationhandler import tr
@@ -40,7 +40,7 @@ def perform_installation(arch_config_handler: ArchConfigHandler) -> None:
4040
installation.add_bootloader(Bootloader.Systemd)
4141

4242
if config.network_config:
43-
NetworkHandler().install_network_config(
43+
install_network_config(
4444
config.network_config,
4545
installation,
4646
config.profile_config,

0 commit comments

Comments
 (0)