diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 0bf46b96db..f5f2050c9f 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -1,6 +1,6 @@ from typing import override -from archinstall.default_profiles.desktops.utils import select_seat_access +from archinstall.default_profiles.desktops.utils import seat_access_services, select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType @@ -41,9 +41,7 @@ def default_greeter_type(self) -> GreeterType: @property @override def services(self) -> list[str]: - if pref := self.custom_settings.get(CustomSetting.SeatAccess, None): - return [pref] - return [] + return seat_access_services(self.custom_settings.get(CustomSetting.SeatAccess)) @override async def do_on_select(self) -> None: diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index 48fe344e13..9eb8f9dcdc 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -1,6 +1,6 @@ from typing import override -from archinstall.default_profiles.desktops.utils import select_seat_access +from archinstall.default_profiles.desktops.utils import seat_access_packages, seat_access_services, select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType @@ -18,14 +18,10 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get(CustomSetting.SeatAccess, None): - additional = [seat] - return [ 'alacritty', 'labwc', - ] + additional + ] + seat_access_packages(self.custom_settings.get(CustomSetting.SeatAccess)) @property @override @@ -35,9 +31,7 @@ def default_greeter_type(self) -> GreeterType: @property @override def services(self) -> list[str]: - if pref := self.custom_settings.get(CustomSetting.SeatAccess, None): - return [pref] - return [] + return seat_access_services(self.custom_settings.get(CustomSetting.SeatAccess)) @override async def do_on_select(self) -> None: diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index d8db75f5da..27d2f1e6fb 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -1,6 +1,6 @@ from typing import override -from archinstall.default_profiles.desktops.utils import select_seat_access +from archinstall.default_profiles.desktops.utils import seat_access_packages, seat_access_services, select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType @@ -18,10 +18,6 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get(CustomSetting.SeatAccess, None): - additional = [seat] - return [ 'niri', 'alacritty', @@ -33,7 +29,7 @@ def packages(self) -> list[str]: 'swayidle', 'swaylock', 'xdg-desktop-portal-gnome', - ] + additional + ] + seat_access_packages(self.custom_settings.get(CustomSetting.SeatAccess)) @property @override @@ -43,9 +39,7 @@ def default_greeter_type(self) -> GreeterType: @property @override def services(self) -> list[str]: - if pref := self.custom_settings.get(CustomSetting.SeatAccess, None): - return [pref] - return [] + return seat_access_services(self.custom_settings.get(CustomSetting.SeatAccess)) @override async def do_on_select(self) -> None: diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 7a038dc0ba..9b70438902 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,6 +1,6 @@ from typing import override -from archinstall.default_profiles.desktops.utils import select_seat_access +from archinstall.default_profiles.desktops.utils import seat_access_packages, seat_access_services, select_seat_access from archinstall.default_profiles.profile import CustomSetting, DisplayServerType, GreeterType, Profile, ProfileType @@ -18,10 +18,6 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get(CustomSetting.SeatAccess, None): - additional = [seat] - return [ 'sway', 'swaybg', @@ -35,7 +31,7 @@ def packages(self) -> list[str]: 'pavucontrol', 'foot', 'xorg-xwayland', - ] + additional + ] + seat_access_packages(self.custom_settings.get(CustomSetting.SeatAccess)) @property @override @@ -45,9 +41,7 @@ def default_greeter_type(self) -> GreeterType: @property @override def services(self) -> list[str]: - if pref := self.custom_settings.get(CustomSetting.SeatAccess, None): - return [pref] - return [] + return seat_access_services(self.custom_settings.get(CustomSetting.SeatAccess)) @override async def do_on_select(self) -> None: diff --git a/archinstall/default_profiles/desktops/utils.py b/archinstall/default_profiles/desktops/utils.py index b179ad5061..c52782a960 100644 --- a/archinstall/default_profiles/desktops/utils.py +++ b/archinstall/default_profiles/desktops/utils.py @@ -10,7 +10,23 @@ class SeatAccess(Enum): seatd = 'seatd' - polkit = 'polkit' + systemd_logind = 'systemd-logind' + + +# Arch builds systemd with polkit support, logind depends on it +def seat_access_packages(seat_access: str | None) -> list[str]: + if seat_access == SeatAccess.seatd.value: + return ['seatd'] + if seat_access == SeatAccess.systemd_logind.value: + return ['polkit'] + return [] + + +# polkit.service is static (dbus activated), only seatd needs enabling +def seat_access_services(seat_access: str | None) -> list[str]: + if seat_access == SeatAccess.seatd.value: + return ['seatd'] + return [] def provision_seat_access( diff --git a/tests/data/test_config.json b/tests/data/test_config.json index 618bd8e9c7..03ad618cd3 100644 --- a/tests/data/test_config.json +++ b/tests/data/test_config.json @@ -187,7 +187,7 @@ "profile": { "custom_settings": { "Hyprland": { - "seat_access": "polkit" + "seat_access": "systemd-logind" }, "Sway": { "seat_access": "seatd" diff --git a/tests/test_args.py b/tests/test_args.py index 685c01ff13..d2ee8ad82c 100644 --- a/tests/test_args.py +++ b/tests/test_args.py @@ -177,7 +177,7 @@ def test_config_file_parsing( { 'custom_settings': { 'Hyprland': { - CustomSetting.SeatAccess: 'polkit', + CustomSetting.SeatAccess: 'systemd-logind', }, 'Sway': { CustomSetting.SeatAccess: 'seatd',