From 2d175312d9cda24bacfc0a336bff772ce3b6ab6d Mon Sep 17 00:00:00 2001 From: Softer Date: Mon, 8 Jun 2026 13:16:16 +0300 Subject: [PATCH] Move seat access provisioning into DesktopProfile.provision() The four Wayland profiles (Hyprland, Sway, niri, labwc) each duplicated a provision() override calling provision_seat_access(). Move that into the base DesktopProfile.provision() loop, which already iterates the selected profiles, and read CustomSetting.SeatAccess from each. The None check now lives at the call site (walrus), so provision_seat_access() takes a plain str. This removes the per-profile overrides and their TYPE_CHECKING imports. --- archinstall/default_profiles/desktop.py | 6 +++++- archinstall/default_profiles/desktops/hyprland.py | 12 ++---------- archinstall/default_profiles/desktops/labwc.py | 12 ++---------- archinstall/default_profiles/desktops/niri.py | 12 ++---------- archinstall/default_profiles/desktops/sway.py | 12 ++---------- archinstall/default_profiles/desktops/utils.py | 2 +- 6 files changed, 14 insertions(+), 42 deletions(-) diff --git a/archinstall/default_profiles/desktop.py b/archinstall/default_profiles/desktop.py index b70f9f11..f9195357 100644 --- a/archinstall/default_profiles/desktop.py +++ b/archinstall/default_profiles/desktop.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING, Self, override -from archinstall.default_profiles.profile import DisplayServerType, GreeterType, Profile, ProfileType, SelectResult +from archinstall.default_profiles.desktops.utils import provision_seat_access +from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType, SelectResult from archinstall.lib.log import info from archinstall.lib.menu.helpers import Selection from archinstall.lib.profile.profiles_handler import profile_handler @@ -94,6 +95,9 @@ class DesktopProfile(Profile): for profile in self.current_selection: profile.provision(install_session, users) + if seat_access := profile.custom_settings.get(CustomSetting.SeatAccess): + provision_seat_access(install_session, users, seat_access) + @override def install(self, install_session: Installer) -> None: # Install common packages for all desktop environments diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 7a84fcda..0bf46b96 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -1,12 +1,8 @@ -from typing import TYPE_CHECKING, override +from typing import override -from archinstall.default_profiles.desktops.utils import provision_seat_access, select_seat_access +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - from archinstall.lib.models.users import User - class HyprlandProfile(Profile): def __init__(self) -> None: @@ -49,10 +45,6 @@ class HyprlandProfile(Profile): return [pref] return [] - @override - def provision(self, install_session: Installer, users: list[User]) -> None: - provision_seat_access(install_session, users, self.custom_settings.get(CustomSetting.SeatAccess)) - @override async def do_on_select(self) -> None: default = self.custom_settings.get(CustomSetting.SeatAccess, None) diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index 1a0fa8b2..48fe344e 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -1,12 +1,8 @@ -from typing import TYPE_CHECKING, override +from typing import override -from archinstall.default_profiles.desktops.utils import provision_seat_access, select_seat_access +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - from archinstall.lib.models.users import User - class LabwcProfile(Profile): def __init__(self) -> None: @@ -43,10 +39,6 @@ class LabwcProfile(Profile): return [pref] return [] - @override - def provision(self, install_session: Installer, users: list[User]) -> None: - provision_seat_access(install_session, users, self.custom_settings.get(CustomSetting.SeatAccess)) - @override async def do_on_select(self) -> None: default = self.custom_settings.get(CustomSetting.SeatAccess, None) diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index bc08d327..d8db75f5 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -1,12 +1,8 @@ -from typing import TYPE_CHECKING, override +from typing import override -from archinstall.default_profiles.desktops.utils import provision_seat_access, select_seat_access +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - from archinstall.lib.models.users import User - class NiriProfile(Profile): def __init__(self) -> None: @@ -51,10 +47,6 @@ class NiriProfile(Profile): return [pref] return [] - @override - def provision(self, install_session: Installer, users: list[User]) -> None: - provision_seat_access(install_session, users, self.custom_settings.get(CustomSetting.SeatAccess)) - @override async def do_on_select(self) -> None: default = self.custom_settings.get(CustomSetting.SeatAccess, None) diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 161b8ee1..7a038dc0 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,12 +1,8 @@ -from typing import TYPE_CHECKING, override +from typing import override -from archinstall.default_profiles.desktops.utils import provision_seat_access, select_seat_access +from archinstall.default_profiles.desktops.utils import select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - from archinstall.lib.models.users import User - class SwayProfile(Profile): def __init__(self) -> None: @@ -53,10 +49,6 @@ class SwayProfile(Profile): return [pref] return [] - @override - def provision(self, install_session: Installer, users: list[User]) -> None: - provision_seat_access(install_session, users, self.custom_settings.get(CustomSetting.SeatAccess)) - @override async def do_on_select(self) -> None: default = self.custom_settings.get(CustomSetting.SeatAccess, None) diff --git a/archinstall/default_profiles/desktops/utils.py b/archinstall/default_profiles/desktops/utils.py index a28320b3..261151b4 100644 --- a/archinstall/default_profiles/desktops/utils.py +++ b/archinstall/default_profiles/desktops/utils.py @@ -19,7 +19,7 @@ class SeatAccess(Enum): def provision_seat_access( install_session: Installer, users: list[User], - seat_access: str | None, + seat_access: str, ) -> None: if seat_access == SeatAccess.seatd.value: for user in users: