From 00b0ae7ba439a5a420095175b3bedd52c569db51 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Wed, 19 Apr 2023 20:55:42 +1000 Subject: PyParted and a large rewrite of the underlying partitioning (#1604) * Invert mypy files * Add optional pre-commit hooks * New profile structure * Serialize profiles * Use profile instead of classmethod * Custom profile setup * Separator between back * Support profile import via url * Move profiles module * Refactor files * Remove symlink * Add user to docker group * Update schema description * Handle list services * mypy fixes * mypy fixes * Rename profilesv2 to profiles * flake8 * mypy again * Support selecting DM * Fix mypy * Cleanup * Update greeter setting * Update schema * Revert toml changes * Poc external dependencies * Dependency support * New encryption menu * flake8 * Mypy and flake8 * Unify lsblk command * Update bootloader configuration * Git hooks * Fix import * Pyparted * Remove custom font setting * flake8 * Remove default preview * Manual partitioning menu * Update structure * Disk configuration * Update filesystem * luks2 encryption * Everything works until installation * Btrfsutil * Btrfs handling * Update btrfs * Save encryption config * Fix pipewire issue * Update mypy version * Update all pre-commit * Update package versions * Revert audio/pipewire * Merge master PRs * Add master changes * Merge master changes * Small renaming * Pull master changes * Reset disk enc after disk config change * Generate locals * Update naming * Fix imports * Fix broken sync * Fix pre selection on table menu * Profile menu * Update profile * Fix post_install * Added python-pyparted to PKGBUILD, this requires [testing] to be enabled in order to run makepkg. Package still works via python -m build etc. * Swaped around some setuptools logic in pyproject Since we define `package-data` and `packages` there should be no need for: ``` [tool.setuptools.packages.find] where = ["archinstall", "archinstall.*"] ``` * Removed pyproject collisions. Duplicate definitions. * Made sure pyproject.toml includes languages * Add example and update README * Fix pyproject issues * Generate locale * Refactor imports * Simplify imports * Add profile description and package examples * Align code * Fix mypy * Simplify imports * Fix saving config * Fix wrong luks merge * Refactor installation * Fix cdrom device loading * Fix wrongly merged code * Fix imports and greeter * Don't terminate on partprobe error * Use specific path on partprobe from luks * Update archinstall/lib/disk/device_model.py Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> * Update archinstall/lib/disk/device_model.py Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> * Update github workflow to test archinstall installation * Update sway merge * Generate locales * Update workflow --------- Co-authored-by: Daniel Girtler Co-authored-by: Anton Hvornum Co-authored-by: Anton Hvornum Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com> --- profiles/desktop.py | 97 ----------------------------------------------------- 1 file changed, 97 deletions(-) delete mode 100644 profiles/desktop.py (limited to 'profiles/desktop.py') diff --git a/profiles/desktop.py b/profiles/desktop.py deleted file mode 100644 index e94d3505..00000000 --- a/profiles/desktop.py +++ /dev/null @@ -1,97 +0,0 @@ -# A desktop environment selector. -from typing import Any, TYPE_CHECKING - -import archinstall -from archinstall import log, Menu -from archinstall.lib.menu.menu import MenuSelectionType - -if TYPE_CHECKING: - _: Any - -is_top_level_profile = True - -__description__ = str(_('Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway')) - -# New way of defining packages for a profile, which is iterable and can be used out side -# of the profile to get a list of "what packages will be installed". -__packages__ = [ - 'nano', - 'vim', - 'openssh', - 'htop', - 'wget', - 'iwd', - 'wireless_tools', - 'wpa_supplicant', - 'smartmontools', - 'xdg-utils', -] - -__supported__ = [ - 'gnome', - 'kde', - 'awesome', - 'sway', - 'cinnamon', - 'xfce4', - 'lxqt', - 'i3', - 'bspwm', - 'budgie', - 'mate', - 'deepin', - 'enlightenment', - 'qtile' -] - - -def _prep_function(*args, **kwargs) -> bool: - """ - Magic function called by the importing installer - before continuing any further. It also avoids executing any - other code in this stage. So it's a safe way to ask the user - for more input before any other installer steps start. - """ - choice = Menu(str(_('Select your desired desktop environment')), __supported__).run() - - if choice.type_ != MenuSelectionType.Selection: - return False - - if choice.value: - # Temporarily store the selected desktop profile - # in a session-safe location, since this module will get reloaded - # the next time it gets executed. - if not archinstall.storage.get('_desktop_profile', None): - archinstall.storage['_desktop_profile'] = choice.value - if not archinstall.arguments.get('desktop-environment', None): - archinstall.arguments['desktop-environment'] = choice.value - profile = archinstall.Profile(None, choice.value) - # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. - with profile.load_instructions(namespace=f"{choice.value}.py") as imported: - if hasattr(imported, '_prep_function'): - return imported._prep_function() - else: - log(f"Deprecated (??): {choice.value} profile has no _prep_function() anymore") - exit(1) - - return False - - -if __name__ == 'desktop': - """ - This "profile" is a meta-profile. - There are no desktop-specific steps, it simply routes - the installer to whichever desktop environment/window manager was chosen. - - Maybe in the future, a network manager or similar things *could* be added here. - We should honor that Arch Linux does not officially endorse a desktop-setup, nor is - it trying to be a turn-key desktop distribution. - - There are plenty of desktop-turn-key-solutions based on Arch Linux, - this is therefore just a helper to get started - """ - - # Install common packages for all desktop environments - archinstall.storage['installation_session'].add_additional_packages(__packages__) - - archinstall.storage['installation_session'].install_profile(archinstall.storage['_desktop_profile']) -- cgit v1.2.3-54-g00ecf