From b71eeda773c181ad64601e2e04a3e9e287d7c6cf Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Tue, 31 Mar 2026 18:49:05 -0400 Subject: [PATCH 1/4] Add WaylandProfile to avoid installing xorg packages for Wayland compositors --- .../default_profiles/desktops/awesome.py | 1 - .../default_profiles/desktops/cosmic.py | 4 +-- .../default_profiles/desktops/gnome.py | 4 +-- .../default_profiles/desktops/hyprland.py | 4 +-- .../default_profiles/desktops/labwc.py | 4 +-- archinstall/default_profiles/desktops/niri.py | 4 +-- .../default_profiles/desktops/plasma.py | 4 +-- .../default_profiles/desktops/river.py | 4 +-- archinstall/default_profiles/desktops/sway.py | 4 +-- archinstall/default_profiles/profile.py | 3 +- archinstall/default_profiles/wayland.py | 30 +++++++++++++++++++ archinstall/default_profiles/xorg.py | 3 +- archinstall/lib/hardware.py | 4 +-- archinstall/lib/profile/profiles_handler.py | 4 +-- 14 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 archinstall/default_profiles/wayland.py diff --git a/archinstall/default_profiles/desktops/awesome.py b/archinstall/default_profiles/desktops/awesome.py index 05a4d09778..045a4854ab 100644 --- a/archinstall/default_profiles/desktops/awesome.py +++ b/archinstall/default_profiles/desktops/awesome.py @@ -19,7 +19,6 @@ def packages(self) -> list[str]: return super().packages + [ 'awesome', 'alacritty', - 'xorg-xinit', 'xorg-xrandr', 'xterm', 'feh', diff --git a/archinstall/default_profiles/desktops/cosmic.py b/archinstall/default_profiles/desktops/cosmic.py index 96742de6f6..6c71179578 100644 --- a/archinstall/default_profiles/desktops/cosmic.py +++ b/archinstall/default_profiles/desktops/cosmic.py @@ -1,10 +1,10 @@ from typing import override from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile -class CosmicProfile(XorgProfile): +class CosmicProfile(WaylandProfile): def __init__(self) -> None: super().__init__('Cosmic', ProfileType.DesktopEnv) diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index 58936434b1..f78491b16b 100644 --- a/archinstall/default_profiles/desktops/gnome.py +++ b/archinstall/default_profiles/desktops/gnome.py @@ -1,10 +1,10 @@ from typing import override from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile -class GnomeProfile(XorgProfile): +class GnomeProfile(WaylandProfile): def __init__(self) -> None: super().__init__('GNOME', ProfileType.DesktopEnv) diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 9593421140..20c54f853e 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -2,14 +2,14 @@ from archinstall.default_profiles.desktops import SeatAccess from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class HyprlandProfile(XorgProfile): +class HyprlandProfile(WaylandProfile): def __init__(self) -> None: super().__init__('Hyprland', ProfileType.DesktopEnv) diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index b4ebd95539..f622a7c067 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -2,14 +2,14 @@ from archinstall.default_profiles.desktops import SeatAccess from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class LabwcProfile(XorgProfile): +class LabwcProfile(WaylandProfile): def __init__(self) -> None: super().__init__( 'Labwc', diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index 4ba613c212..befa1376e6 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -2,14 +2,14 @@ from archinstall.default_profiles.desktops import SeatAccess from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class NiriProfile(XorgProfile): +class NiriProfile(WaylandProfile): def __init__(self) -> None: super().__init__( 'Niri', diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py index a29a5c5c2f..bfb88c7c2c 100644 --- a/archinstall/default_profiles/desktops/plasma.py +++ b/archinstall/default_profiles/desktops/plasma.py @@ -1,10 +1,10 @@ from typing import override from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile -class PlasmaProfile(XorgProfile): +class PlasmaProfile(WaylandProfile): def __init__(self) -> None: super().__init__('KDE Plasma', ProfileType.DesktopEnv) diff --git a/archinstall/default_profiles/desktops/river.py b/archinstall/default_profiles/desktops/river.py index 8e1396bb41..29205949b4 100644 --- a/archinstall/default_profiles/desktops/river.py +++ b/archinstall/default_profiles/desktops/river.py @@ -1,10 +1,10 @@ from typing import override from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile -class RiverProfile(XorgProfile): +class RiverProfile(WaylandProfile): def __init__(self) -> None: super().__init__('River', ProfileType.WindowMgr) diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 7418ad49db..c8fba6d673 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -2,14 +2,14 @@ from archinstall.default_profiles.desktops import SeatAccess from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile +from archinstall.default_profiles.wayland import WaylandProfile from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class SwayProfile(XorgProfile): +class SwayProfile(WaylandProfile): def __init__(self) -> None: super().__init__( 'Sway', diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index df55f03fdb..a8b173017a 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -15,6 +15,7 @@ class ProfileType(Enum): Server = 'Server' Desktop = 'Desktop' Xorg = 'Xorg' + Wayland = 'Wayland' Minimal = 'Minimal' Custom = 'Custom' # detailed selection default_profiles @@ -140,7 +141,7 @@ def reset(self) -> None: self.current_selection = [] def is_top_level_profile(self) -> bool: - top_levels = [ProfileType.Desktop, ProfileType.Server, ProfileType.Xorg, ProfileType.Minimal, ProfileType.Custom] + top_levels = [ProfileType.Desktop, ProfileType.Server, ProfileType.Xorg, ProfileType.Wayland, ProfileType.Minimal, ProfileType.Custom] return self.profile_type in top_levels def is_desktop_profile(self) -> bool: diff --git a/archinstall/default_profiles/wayland.py b/archinstall/default_profiles/wayland.py new file mode 100644 index 0000000000..0db0aba921 --- /dev/null +++ b/archinstall/default_profiles/wayland.py @@ -0,0 +1,30 @@ +from typing import override + +from archinstall.default_profiles.profile import Profile, ProfileType +from archinstall.lib.translationhandler import tr + + +class WaylandProfile(Profile): + def __init__( + self, + name: str = 'Wayland', + profile_type: ProfileType = ProfileType.Wayland, + ): + super().__init__( + name, + profile_type, + support_gfx_driver=True, + ) + + @override + def preview_text(self) -> str: + text = tr('Environment type: Wayland {}').format(self.profile_type.value) + if packages := self.packages_text(): + text += f'\n{packages}' + + return text + + @property + @override + def packages(self) -> list[str]: + return [] diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 52b03151ff..88990c9c64 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -18,7 +18,7 @@ def __init__( @override def preview_text(self) -> str: - text = tr('Environment type: {}').format(self.profile_type.value) + text = tr('Environment type: Xorg {}').format(self.profile_type.value) if packages := self.packages_text(): text += f'\n{packages}' @@ -29,4 +29,5 @@ def preview_text(self) -> str: def packages(self) -> list[str]: return [ 'xorg-server', + 'xorg-xinit', ] diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index 5af72b0763..ae790febac 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -51,8 +51,6 @@ class GfxPackage(Enum): Xf86VideoAmdgpu = 'xf86-video-amdgpu' Xf86VideoAti = 'xf86-video-ati' Xf86VideoNouveau = 'xf86-video-nouveau' - XorgServer = 'xorg-server' - XorgXinit = 'xorg-xinit' class GfxDriver(Enum): @@ -80,7 +78,7 @@ def packages_text(self) -> str: return text def gfx_packages(self) -> list[GfxPackage]: - packages = [GfxPackage.XorgServer, GfxPackage.XorgXinit] + packages: list[GfxPackage] = [] match self: case GfxDriver.AllOpenSource: diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 1145a09411..617832b1c9 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -349,8 +349,8 @@ def _find_available_profiles(self) -> list[Profile]: profiles_path = Path(__file__).parents[2] / 'default_profiles' profiles = [] for file in profiles_path.glob('**/*.py'): - # ignore the abstract default_profiles class - if 'profile.py' in file.name: + # ignore the abstract base classes + if file.name in ('profile.py', 'wayland.py'): continue profiles += self._process_profile_file(file) From 32b05c2967d529cc5b9ed40fd3fee209fab7064e Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 1 Apr 2026 08:37:56 -0400 Subject: [PATCH 2/4] Refactor: use composition (is_wayland) instead of WaylandProfile inheritance --- .../default_profiles/desktops/cosmic.py | 7 ++--- .../default_profiles/desktops/gnome.py | 7 ++--- .../default_profiles/desktops/hyprland.py | 7 ++--- .../default_profiles/desktops/labwc.py | 7 +++-- archinstall/default_profiles/desktops/niri.py | 7 +++-- .../default_profiles/desktops/plasma.py | 7 ++--- .../default_profiles/desktops/river.py | 7 ++--- archinstall/default_profiles/desktops/sway.py | 7 +++-- archinstall/default_profiles/profile.py | 16 ++++++++-- archinstall/default_profiles/wayland.py | 30 ------------------- archinstall/default_profiles/xorg.py | 9 ------ archinstall/lib/profile/profiles_handler.py | 2 +- 12 files changed, 42 insertions(+), 71 deletions(-) delete mode 100644 archinstall/default_profiles/wayland.py diff --git a/archinstall/default_profiles/desktops/cosmic.py b/archinstall/default_profiles/desktops/cosmic.py index 6c71179578..7ad49e51a1 100644 --- a/archinstall/default_profiles/desktops/cosmic.py +++ b/archinstall/default_profiles/desktops/cosmic.py @@ -1,12 +1,11 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType -class CosmicProfile(WaylandProfile): +class CosmicProfile(Profile): def __init__(self) -> None: - super().__init__('Cosmic', ProfileType.DesktopEnv) + super().__init__('Cosmic', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) @property @override diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index f78491b16b..9d7040b26f 100644 --- a/archinstall/default_profiles/desktops/gnome.py +++ b/archinstall/default_profiles/desktops/gnome.py @@ -1,12 +1,11 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType -class GnomeProfile(WaylandProfile): +class GnomeProfile(Profile): def __init__(self) -> None: - super().__init__('GNOME', ProfileType.DesktopEnv) + super().__init__('GNOME', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) @property @override diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index 20c54f853e..da18b398d2 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -1,17 +1,16 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class HyprlandProfile(WaylandProfile): +class HyprlandProfile(Profile): def __init__(self) -> None: - super().__init__('Hyprland', ProfileType.DesktopEnv) + super().__init__('Hyprland', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index f622a7c067..fe1eadfbc7 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class LabwcProfile(WaylandProfile): +class LabwcProfile(Profile): def __init__(self) -> None: super().__init__( 'Labwc', ProfileType.WindowMgr, + support_gfx_driver=True, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index befa1376e6..00c95e68db 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class NiriProfile(WaylandProfile): +class NiriProfile(Profile): def __init__(self) -> None: super().__init__( 'Niri', ProfileType.WindowMgr, + support_gfx_driver=True, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py index bfb88c7c2c..4c2f7b7f36 100644 --- a/archinstall/default_profiles/desktops/plasma.py +++ b/archinstall/default_profiles/desktops/plasma.py @@ -1,12 +1,11 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType -class PlasmaProfile(WaylandProfile): +class PlasmaProfile(Profile): def __init__(self) -> None: - super().__init__('KDE Plasma', ProfileType.DesktopEnv) + super().__init__('KDE Plasma', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) @property @override diff --git a/archinstall/default_profiles/desktops/river.py b/archinstall/default_profiles/desktops/river.py index 29205949b4..92187f8abf 100644 --- a/archinstall/default_profiles/desktops/river.py +++ b/archinstall/default_profiles/desktops/river.py @@ -1,12 +1,11 @@ from typing import override -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType -class RiverProfile(WaylandProfile): +class RiverProfile(Profile): def __init__(self) -> None: - super().__init__('River', ProfileType.WindowMgr) + super().__init__('River', ProfileType.WindowMgr, support_gfx_driver=True, is_wayland=True) @property @override diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index c8fba6d673..9414100f26 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -1,19 +1,20 @@ from typing import override from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.wayland import WaylandProfile +from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType from archinstall.lib.menu.helpers import Selection from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -class SwayProfile(WaylandProfile): +class SwayProfile(Profile): def __init__(self) -> None: super().__init__( 'Sway', ProfileType.WindowMgr, + support_gfx_driver=True, + is_wayland=True, ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/profile.py b/archinstall/default_profiles/profile.py index a8b173017a..f3cd43b783 100644 --- a/archinstall/default_profiles/profile.py +++ b/archinstall/default_profiles/profile.py @@ -15,7 +15,6 @@ class ProfileType(Enum): Server = 'Server' Desktop = 'Desktop' Xorg = 'Xorg' - Wayland = 'Wayland' Minimal = 'Minimal' Custom = 'Custom' # detailed selection default_profiles @@ -53,6 +52,7 @@ def __init__( services: list[str] = [], support_gfx_driver: bool = False, support_greeter: bool = False, + is_wayland: bool = False, ) -> None: self.name = name self.profile_type = profile_type @@ -60,6 +60,7 @@ def __init__( self._support_gfx_driver = support_gfx_driver self._support_greeter = support_greeter + self._is_wayland = is_wayland # self.gfx_driver: str | None = None @@ -141,7 +142,7 @@ def reset(self) -> None: self.current_selection = [] def is_top_level_profile(self) -> bool: - top_levels = [ProfileType.Desktop, ProfileType.Server, ProfileType.Xorg, ProfileType.Wayland, ProfileType.Minimal, ProfileType.Custom] + top_levels = [ProfileType.Desktop, ProfileType.Server, ProfileType.Xorg, ProfileType.Minimal, ProfileType.Custom] return self.profile_type in top_levels def is_desktop_profile(self) -> bool: @@ -170,10 +171,21 @@ def is_graphic_driver_supported(self) -> bool: def is_greeter_supported(self) -> bool: return self._support_greeter + @property + def is_wayland(self) -> bool: + return self._is_wayland + def preview_text(self) -> str: """ Override this method to provide a preview text for the profile """ + if self.is_desktop_type_profile(): + display_type = 'Wayland' if self._is_wayland else 'Xorg' + text = tr('Environment type: {} {}').format(display_type, self.profile_type.value) + if packages := self.packages_text(): + text += f'\n{packages}' + return text + return self.packages_text() def packages_text(self, include_sub_packages: bool = False) -> str: diff --git a/archinstall/default_profiles/wayland.py b/archinstall/default_profiles/wayland.py deleted file mode 100644 index 0db0aba921..0000000000 --- a/archinstall/default_profiles/wayland.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType -from archinstall.lib.translationhandler import tr - - -class WaylandProfile(Profile): - def __init__( - self, - name: str = 'Wayland', - profile_type: ProfileType = ProfileType.Wayland, - ): - super().__init__( - name, - profile_type, - support_gfx_driver=True, - ) - - @override - def preview_text(self) -> str: - text = tr('Environment type: Wayland {}').format(self.profile_type.value) - if packages := self.packages_text(): - text += f'\n{packages}' - - return text - - @property - @override - def packages(self) -> list[str]: - return [] diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 88990c9c64..39fb851ec3 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -1,7 +1,6 @@ from typing import override from archinstall.default_profiles.profile import Profile, ProfileType -from archinstall.lib.translationhandler import tr class XorgProfile(Profile): @@ -16,14 +15,6 @@ def __init__( support_gfx_driver=True, ) - @override - def preview_text(self) -> str: - text = tr('Environment type: Xorg {}').format(self.profile_type.value) - if packages := self.packages_text(): - text += f'\n{packages}' - - return text - @property @override def packages(self) -> list[str]: diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 617832b1c9..47e358aaa7 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -350,7 +350,7 @@ def _find_available_profiles(self) -> list[Profile]: profiles = [] for file in profiles_path.glob('**/*.py'): # ignore the abstract base classes - if file.name in ('profile.py', 'wayland.py'): + if file.name == 'profile.py': continue profiles += self._process_profile_file(file) From 8d89d1cfacbed404d5421deaaa66991d3a5ae6ee Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 1 Apr 2026 08:51:06 -0400 Subject: [PATCH 3/4] Fix X11 profiles to inherit xorg packages from XorgProfile --- archinstall/default_profiles/desktops/bspwm.py | 2 +- archinstall/default_profiles/desktops/budgie.py | 2 +- archinstall/default_profiles/desktops/cinnamon.py | 2 +- archinstall/default_profiles/desktops/cutefish.py | 2 +- archinstall/default_profiles/desktops/deepin.py | 2 +- archinstall/default_profiles/desktops/enlightenment.py | 2 +- archinstall/default_profiles/desktops/i3.py | 2 +- archinstall/default_profiles/desktops/lxqt.py | 2 +- archinstall/default_profiles/desktops/mate.py | 2 +- archinstall/default_profiles/desktops/qtile.py | 2 +- archinstall/default_profiles/desktops/xfce4.py | 2 +- archinstall/default_profiles/desktops/xmonad.py | 2 +- archinstall/default_profiles/xorg.py | 9 ++++++++- 13 files changed, 20 insertions(+), 13 deletions(-) diff --git a/archinstall/default_profiles/desktops/bspwm.py b/archinstall/default_profiles/desktops/bspwm.py index 9921172972..e5f1f55adf 100644 --- a/archinstall/default_profiles/desktops/bspwm.py +++ b/archinstall/default_profiles/desktops/bspwm.py @@ -12,7 +12,7 @@ def __init__(self) -> None: @override def packages(self) -> list[str]: # return super().packages + [ - return [ + return super().packages + [ 'bspwm', 'sxhkd', 'dmenu', diff --git a/archinstall/default_profiles/desktops/budgie.py b/archinstall/default_profiles/desktops/budgie.py index 17dc4de58e..5c52989517 100644 --- a/archinstall/default_profiles/desktops/budgie.py +++ b/archinstall/default_profiles/desktops/budgie.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'materia-gtk-theme', 'budgie', 'mate-terminal', diff --git a/archinstall/default_profiles/desktops/cinnamon.py b/archinstall/default_profiles/desktops/cinnamon.py index 797f73fe80..21327d38a2 100644 --- a/archinstall/default_profiles/desktops/cinnamon.py +++ b/archinstall/default_profiles/desktops/cinnamon.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'cinnamon', 'system-config-printer', 'gnome-keyring', diff --git a/archinstall/default_profiles/desktops/cutefish.py b/archinstall/default_profiles/desktops/cutefish.py index 0ad8a65de8..ec1b0f9be2 100644 --- a/archinstall/default_profiles/desktops/cutefish.py +++ b/archinstall/default_profiles/desktops/cutefish.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'cutefish', 'noto-fonts', ] diff --git a/archinstall/default_profiles/desktops/deepin.py b/archinstall/default_profiles/desktops/deepin.py index 1b871ed93f..ab88cfd703 100644 --- a/archinstall/default_profiles/desktops/deepin.py +++ b/archinstall/default_profiles/desktops/deepin.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'deepin', 'deepin-terminal', 'deepin-editor', diff --git a/archinstall/default_profiles/desktops/enlightenment.py b/archinstall/default_profiles/desktops/enlightenment.py index 7a329d9ea7..81f6cd9c44 100644 --- a/archinstall/default_profiles/desktops/enlightenment.py +++ b/archinstall/default_profiles/desktops/enlightenment.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'enlightenment', 'terminology', ] diff --git a/archinstall/default_profiles/desktops/i3.py b/archinstall/default_profiles/desktops/i3.py index b2a883afc8..fd81c96af4 100644 --- a/archinstall/default_profiles/desktops/i3.py +++ b/archinstall/default_profiles/desktops/i3.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'i3-wm', 'i3lock', 'i3status', diff --git a/archinstall/default_profiles/desktops/lxqt.py b/archinstall/default_profiles/desktops/lxqt.py index 819134cdcb..9bf6baa64f 100644 --- a/archinstall/default_profiles/desktops/lxqt.py +++ b/archinstall/default_profiles/desktops/lxqt.py @@ -14,7 +14,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'lxqt', 'breeze-icons', 'oxygen-icons', diff --git a/archinstall/default_profiles/desktops/mate.py b/archinstall/default_profiles/desktops/mate.py index 8d3dc2e1a3..74baf75cb8 100644 --- a/archinstall/default_profiles/desktops/mate.py +++ b/archinstall/default_profiles/desktops/mate.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'mate', 'mate-extra', ] diff --git a/archinstall/default_profiles/desktops/qtile.py b/archinstall/default_profiles/desktops/qtile.py index eeb1713b21..86d1ad0efd 100644 --- a/archinstall/default_profiles/desktops/qtile.py +++ b/archinstall/default_profiles/desktops/qtile.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'qtile', 'alacritty', ] diff --git a/archinstall/default_profiles/desktops/xfce4.py b/archinstall/default_profiles/desktops/xfce4.py index 34dfd8e342..c6a4988c97 100644 --- a/archinstall/default_profiles/desktops/xfce4.py +++ b/archinstall/default_profiles/desktops/xfce4.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'xfce4', 'xfce4-goodies', 'pavucontrol', diff --git a/archinstall/default_profiles/desktops/xmonad.py b/archinstall/default_profiles/desktops/xmonad.py index 4a9cac0b8e..8b8b9dcb87 100644 --- a/archinstall/default_profiles/desktops/xmonad.py +++ b/archinstall/default_profiles/desktops/xmonad.py @@ -11,7 +11,7 @@ def __init__(self) -> None: @property @override def packages(self) -> list[str]: - return [ + return super().packages + [ 'xmonad', 'xmonad-contrib', 'xmonad-extras', diff --git a/archinstall/default_profiles/xorg.py b/archinstall/default_profiles/xorg.py index 39fb851ec3..fd60c66964 100644 --- a/archinstall/default_profiles/xorg.py +++ b/archinstall/default_profiles/xorg.py @@ -1,7 +1,10 @@ -from typing import override +from typing import TYPE_CHECKING, override from archinstall.default_profiles.profile import Profile, ProfileType +if TYPE_CHECKING: + from archinstall.lib.installer import Installer + class XorgProfile(Profile): def __init__( @@ -22,3 +25,7 @@ def packages(self) -> list[str]: 'xorg-server', 'xorg-xinit', ] + + @override + def install(self, install_session: Installer) -> None: + install_session.add_additional_packages(self.packages) From 4504bb39051ccd983ffee53e8be343e026ebfb53 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 1 Apr 2026 09:00:53 -0400 Subject: [PATCH 4/4] Style: use consistent multi-line super().__init__ for Wayland profiles --- archinstall/default_profiles/desktops/cosmic.py | 7 ++++++- archinstall/default_profiles/desktops/gnome.py | 7 ++++++- archinstall/default_profiles/desktops/hyprland.py | 7 ++++++- archinstall/default_profiles/desktops/plasma.py | 7 ++++++- archinstall/default_profiles/desktops/river.py | 7 ++++++- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/archinstall/default_profiles/desktops/cosmic.py b/archinstall/default_profiles/desktops/cosmic.py index 7ad49e51a1..7327d7b7fd 100644 --- a/archinstall/default_profiles/desktops/cosmic.py +++ b/archinstall/default_profiles/desktops/cosmic.py @@ -5,7 +5,12 @@ class CosmicProfile(Profile): def __init__(self) -> None: - super().__init__('Cosmic', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) + super().__init__( + 'Cosmic', + ProfileType.DesktopEnv, + support_gfx_driver=True, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/gnome.py b/archinstall/default_profiles/desktops/gnome.py index 9d7040b26f..d759ff743f 100644 --- a/archinstall/default_profiles/desktops/gnome.py +++ b/archinstall/default_profiles/desktops/gnome.py @@ -5,7 +5,12 @@ class GnomeProfile(Profile): def __init__(self) -> None: - super().__init__('GNOME', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) + super().__init__( + 'GNOME', + ProfileType.DesktopEnv, + support_gfx_driver=True, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index da18b398d2..36eadd0fa8 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -10,7 +10,12 @@ class HyprlandProfile(Profile): def __init__(self) -> None: - super().__init__('Hyprland', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) + super().__init__( + 'Hyprland', + ProfileType.DesktopEnv, + support_gfx_driver=True, + is_wayland=True, + ) self.custom_settings = {'seat_access': None} diff --git a/archinstall/default_profiles/desktops/plasma.py b/archinstall/default_profiles/desktops/plasma.py index 4c2f7b7f36..0265dbb64b 100644 --- a/archinstall/default_profiles/desktops/plasma.py +++ b/archinstall/default_profiles/desktops/plasma.py @@ -5,7 +5,12 @@ class PlasmaProfile(Profile): def __init__(self) -> None: - super().__init__('KDE Plasma', ProfileType.DesktopEnv, support_gfx_driver=True, is_wayland=True) + super().__init__( + 'KDE Plasma', + ProfileType.DesktopEnv, + support_gfx_driver=True, + is_wayland=True, + ) @property @override diff --git a/archinstall/default_profiles/desktops/river.py b/archinstall/default_profiles/desktops/river.py index 92187f8abf..15035e107d 100644 --- a/archinstall/default_profiles/desktops/river.py +++ b/archinstall/default_profiles/desktops/river.py @@ -5,7 +5,12 @@ class RiverProfile(Profile): def __init__(self) -> None: - super().__init__('River', ProfileType.WindowMgr, support_gfx_driver=True, is_wayland=True) + super().__init__( + 'River', + ProfileType.WindowMgr, + support_gfx_driver=True, + is_wayland=True, + ) @property @override