Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion archinstall/default_profiles/desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ def packages(self) -> list[str]:
'wget',
'iwd',
'wireless_tools',
'wpa_supplicant',
'smartmontools',
'xdg-utils',
]
Expand Down
8 changes: 8 additions & 0 deletions archinstall/lib/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,14 @@ def post_install_enable_networkd_resolved(*args: str, **kwargs: str) -> None:

return True

def configure_nm_iwd(self) -> None:
# Create NetworkManager config directory and write iwd backend conf
nm_conf_dir = self.target / 'etc/NetworkManager/conf.d'
nm_conf_dir.mkdir(parents=True, exist_ok=True)

iwd_backend_conf = nm_conf_dir / 'wifi_backend.conf'
iwd_backend_conf.write_text('[device]\nwifi.backend=iwd\n')

def mkinitcpio(self, flags: list[str]) -> bool:
for plugin in plugins.values():
if hasattr(plugin, 'on_mkinitcpio'):
Expand Down
2 changes: 2 additions & 0 deletions archinstall/lib/interactions/network_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ def ask_to_configure_network(preset: NetworkConfiguration | None) -> NetworkConf
return NetworkConfiguration(NicType.ISO)
case NicType.NM:
return NetworkConfiguration(NicType.NM)
case NicType.NM_IWD:
return NetworkConfiguration(NicType.NM_IWD)
case NicType.MANUAL:
preset_nics = preset.nics if preset else []
nics = ManualNetworkConfig(tr('Configure interfaces'), preset_nics).run()
Expand Down
26 changes: 21 additions & 5 deletions archinstall/lib/models/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@
class NicType(Enum):
ISO = 'iso'
NM = 'nm'
NM_IWD = 'nm_iwd'
MANUAL = 'manual'

def display_msg(self) -> str:
match self:
case NicType.ISO:
return tr('Copy ISO network configuration to installation')
case NicType.NM:
return tr('Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)')
return tr('Use Network Manager (default backend)')
case NicType.NM_IWD:
return tr('Use Network Manager (iwd backend)')
case NicType.MANUAL:
return tr('Manual configuration')

Expand Down Expand Up @@ -147,16 +150,29 @@ def install_network_config(
installation.copy_iso_network_config(
enable_services=True, # Sources the ISO network configuration to the install medium.
)
case NicType.NM:
installation.add_additional_packages(['networkmanager'])
case NicType.NM | NicType.NM_IWD:
# Install NetworkManager package for both cases
packages = ['networkmanager']
# Defautl back-end only for non-iwd
if self.type == NicType.NM:
packages.append('wpa_supplicant')

installation.add_additional_packages(packages)

# Desktop profile -> Always add applet
if profile_config and profile_config.profile:
if profile_config.profile.is_desktop_profile():
installation.add_additional_packages(['network-manager-applet'])
installation.add_additional_packages('network-manager-applet')

installation.enable_service('NetworkManager.service')
if self.type == NicType.NM_IWD:
# NM_IWD special handling
installation.configure_nm_iwd()
installation.disable_service('iwd.service')

case NicType.MANUAL:
for nic in self.nics:
installation.configure_nic(nic)

installation.enable_service('systemd-networkd')
installation.enable_service('systemd-resolved')

Expand Down