Skip to content

Commit 9010ccf

Browse files
authored
Add kernel enum (#4489)
1 parent 074dfbb commit 9010ccf

6 files changed

Lines changed: 27 additions & 17 deletions

File tree

archinstall/lib/args.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from archinstall.lib.models.locale import LocaleConfiguration
2222
from archinstall.lib.models.mirrors import MirrorConfiguration
2323
from archinstall.lib.models.network import NetworkConfiguration
24+
from archinstall.lib.models.package_types import DEFAULT_KERNEL
2425
from archinstall.lib.models.packages import Repository
2526
from archinstall.lib.models.pacman import PacmanConfiguration
2627
from archinstall.lib.models.profile import ProfileConfiguration
@@ -71,7 +72,7 @@ class ArchConfig:
7172
auth_config: AuthenticationConfiguration | None = None
7273
swap: ZramConfiguration | None = None
7374
hostname: str = 'archlinux'
74-
kernels: list[str] = field(default_factory=lambda: ['linux'])
75+
kernels: list[str] = field(default_factory=lambda: [DEFAULT_KERNEL.value])
7576
ntp: bool = True
7677
packages: list[str] = field(default_factory=list)
7778
pacman_config: PacmanConfiguration = field(default_factory=PacmanConfiguration.default)

archinstall/lib/general/system_menu.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,24 @@
33
from archinstall.lib.hardware import GfxDriver, SysInfo
44
from archinstall.lib.menu.helpers import Confirmation, Selection
55
from archinstall.lib.models.application import ZramAlgorithm, ZramConfiguration
6+
from archinstall.lib.models.package_types import DEFAULT_KERNEL, Kernel
67
from archinstall.lib.translationhandler import tr
78
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
89
from archinstall.tui.ui.result import ResultType
910

1011

11-
async def select_kernel(preset: list[str] = []) -> list[str]:
12+
async def select_kernel(preset: list[Kernel] = []) -> list[Kernel]:
1213
"""
1314
Asks the user to select a kernel for system.
1415
1516
:return: The string as a selected kernel
1617
:rtype: string
1718
"""
18-
kernels = ['linux', 'linux-lts', 'linux-zen', 'linux-hardened']
19-
default_kernel = 'linux'
19+
group = MenuItemGroup.from_enum(Kernel, sort_items=True, preset=preset)
20+
group.set_default_by_value(DEFAULT_KERNEL)
21+
group.set_focus_by_value(DEFAULT_KERNEL)
2022

21-
items = [MenuItem(k, value=k) for k in kernels]
22-
23-
group = MenuItemGroup(items, sort_items=True)
24-
group.set_default_by_value(default_kernel)
25-
group.set_focus_by_value(default_kernel)
26-
group.set_selected_by_value(preset)
27-
28-
result = await Selection[str](
23+
result = await Selection[Kernel](
2924
group,
3025
header=tr('Select which kernel(s) to install'),
3126
allow_skip=True,

archinstall/lib/global_menu.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from archinstall.lib.models.locale import LocaleConfiguration
2323
from archinstall.lib.models.mirrors import MirrorConfiguration
2424
from archinstall.lib.models.network import NetworkConfiguration, NicType
25+
from archinstall.lib.models.package_types import DEFAULT_KERNEL
2526
from archinstall.lib.models.packages import Repository
2627
from archinstall.lib.models.pacman import PacmanConfiguration
2728
from archinstall.lib.models.profile import ProfileConfiguration
@@ -103,7 +104,7 @@ def _get_menu_options(self) -> list[MenuItem]:
103104
),
104105
MenuItem(
105106
text=tr('Kernels'),
106-
value=['linux'],
107+
value=[DEFAULT_KERNEL],
107108
action=select_kernel,
108109
preview_action=self._prev_kernel,
109110
mandatory=True,

archinstall/lib/installer.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
from archinstall.lib.models.locale import LocaleConfiguration
4949
from archinstall.lib.models.mirrors import MirrorConfiguration
5050
from archinstall.lib.models.network import Nic
51+
from archinstall.lib.models.package_types import DEFAULT_KERNEL, Kernel
5152
from archinstall.lib.models.packages import Repository
5253
from archinstall.lib.models.pacman import PacmanConfiguration
5354
from archinstall.lib.models.users import User
@@ -60,7 +61,7 @@
6061
from archinstall.lib.translationhandler import tr
6162

6263
# Any package that the Installer() is responsible for (optional and the default ones)
63-
__packages__ = ['base', 'sudo', 'linux-firmware', 'linux', 'linux-lts', 'linux-zen', 'linux-hardened']
64+
__packages__ = ['base', 'sudo', 'linux-firmware'] + [k.value for k in Kernel]
6465

6566
# Additional packages that are installed if the user is running the Live ISO with accessibility tools enabled
6667
__accessibility_packages__ = ['brltty', 'espeakup', 'alsa-utils']
@@ -80,7 +81,7 @@ def __init__(
8081
It also wraps :py:func:`~archinstall.Installer.pacstrap` among other things.
8182
"""
8283
self._base_packages = base_packages or __packages__[:3]
83-
self.kernels = kernels or ['linux']
84+
self.kernels = kernels or [DEFAULT_KERNEL.value]
8485
self._disk_config = disk_config
8586

8687
self._disk_encryption = disk_config.disk_encryption or DiskEncryption(EncryptionType.NO_ENCRYPTION)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from enum import StrEnum, auto
2+
from typing import Final
3+
4+
5+
class Kernel(StrEnum):
6+
LINUX = auto()
7+
LINUX_LTS = 'linux-lts'
8+
LINUX_ZEN = 'linux-zen'
9+
LINUX_HARDENED = 'linux-hardened'
10+
11+
12+
DEFAULT_KERNEL: Final = Kernel.LINUX

archinstall/tui/ui/menu_item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from collections.abc import Awaitable, Callable
1+
from collections.abc import Awaitable, Callable, Iterable
22
from dataclasses import dataclass, field
33
from enum import Enum
44
from functools import cached_property
@@ -148,7 +148,7 @@ def from_enum(
148148
cls,
149149
enum_cls: type[Enum],
150150
sort_items: bool = False,
151-
preset: Enum | None = None,
151+
preset: Iterable[Enum] | Enum | None = None,
152152
) -> Self:
153153
items = [MenuItem(elem.value, value=elem) for elem in enum_cls]
154154
group = cls(items, sort_items=sort_items)

0 commit comments

Comments
 (0)