index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-04-09 14:01:34 +0200 |
---|---|---|
committer | Anton Hvornum <anton@hvornum.se> | 2021-04-09 14:01:34 +0200 |
commit | 5e0a192a9ab59199b805e9d37f51eb10f89691f4 (patch) | |
tree | 2721d9268422fe8d2f1051ad22bb78e8fbb5fa84 | |
parent | da12f3630575976d43a6c717235bc273c63da7bd (diff) | |
parent | 4664bcf29d31b7caaef2786a3af420a2397f04dd (diff) |
-rw-r--r-- | archinstall/lib/luks.py | 2 | ||||
-rw-r--r-- | archinstall/lib/user_interaction.py | 2 | ||||
-rw-r--r-- | profiles/applications/i3-gaps.py | 2 | ||||
-rw-r--r-- | profiles/applications/i3-wm.py | 2 | ||||
-rw-r--r-- | profiles/applications/lxqt.py | 3 | ||||
-rw-r--r-- | profiles/applications/sway.py | 4 | ||||
-rw-r--r-- | profiles/desktop.py | 4 | ||||
-rw-r--r-- | profiles/i3-gaps.py | 17 | ||||
-rw-r--r-- | profiles/i3-wm.py | 17 | ||||
-rw-r--r-- | profiles/i3.py | 72 | ||||
-rw-r--r-- | profiles/lxqt.py | 35 | ||||
-rw-r--r-- | profiles/sway.py | 2 |
diff --git a/archinstall/lib/luks.py b/archinstall/lib/luks.py index b076ac9b..561d4d6e 100644 --- a/archinstall/lib/luks.py +++ b/archinstall/lib/luks.py @@ -127,7 +127,7 @@ class luks2(): os.path.basename(mountpoint) # TODO: Raise exception instead? wait_timer = time.time() - while pathlib.Paht(partition.path).exists() is False and time.time() - wait_timer < 10: + while pathlib.Path(partition.path).exists() is False and time.time() - wait_timer < 10: time.sleep(0.025) sys_command(f'/usr/bin/cryptsetup open {partition.path} {mountpoint} --key-file {os.path.abspath(key_file)} --type luks2') diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py index 33abbefb..1f5924e4 100644 --- a/archinstall/lib/user_interaction.py +++ b/archinstall/lib/user_interaction.py @@ -220,7 +220,7 @@ def generic_select(options, input_text="Select one of the above by index or abso return None elif selected_option.isdigit(): selected_option = int(selected_option) - if selected_option >= len(options): + if selected_option > len(options): raise RequirementError(f'Selected option "{selected_option}" is out of range') selected_option = options[selected_option] elif selected_option in options: diff --git a/profiles/applications/i3-gaps.py b/profiles/applications/i3-gaps.py new file mode 100644 index 00000000..4daed7ad --- /dev/null +++ b/profiles/applications/i3-gaps.py @@ -0,0 +1,2 @@ +import archinstall +installation.add_additional_packages("i3-gaps")
\ No newline at end of file diff --git a/profiles/applications/i3-wm.py b/profiles/applications/i3-wm.py new file mode 100644 index 00000000..e7838a64 --- /dev/null +++ b/profiles/applications/i3-wm.py @@ -0,0 +1,2 @@ +import archinstall +installation.add_additional_packages("i3-wm")
\ No newline at end of file diff --git a/profiles/applications/lxqt.py b/profiles/applications/lxqt.py new file mode 100644 index 00000000..5ce875cc --- /dev/null +++ b/profiles/applications/lxqt.py @@ -0,0 +1,3 @@ +import archinstall + +installation.add_additional_packages("lxqt breeze-icons oxygen-icons xdg-utils ttf-freefont leafpad slock archlinux-wallpaper sddm") diff --git a/profiles/applications/sway.py b/profiles/applications/sway.py index 5f66233c..c99f378a 100644 --- a/profiles/applications/sway.py +++ b/profiles/applications/sway.py @@ -1,3 +1,3 @@ import archinstall - -installation.add_additional_packages("sway sddm") +packages = "sway swaylock swayidle dmenu alacritty" +installation.add_additional_packages(packages) diff --git a/profiles/desktop.py b/profiles/desktop.py index d552a17f..e2850da4 100644 --- a/profiles/desktop.py +++ b/profiles/desktop.py @@ -6,7 +6,7 @@ is_top_level_profile = True # 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', 'openssh', 'htop', 'wget', 'iwd', 'wireless_tools', 'wpa_supplicant', 'smartmontools'] +__packages__ = ['nano', 'vim', 'openssh', 'htop', 'wget', 'iwd', 'wireless_tools', 'wpa_supplicant', 'smartmontools'] def _prep_function(*args, **kwargs): """ @@ -16,7 +16,7 @@ def _prep_function(*args, **kwargs): for more input before any other installer steps start. """ - supported_desktops = ['gnome', 'kde', 'awesome', 'sway', 'cinnamon', 'xfce4'] + supported_desktops = ['gnome', 'kde', 'awesome', 'sway', 'cinnamon', 'xfce4', 'lxqt', 'i3'] desktop = archinstall.generic_select(supported_desktops, 'Select your desired desktop environment: ') # Temporarily store the selected desktop profile diff --git a/profiles/i3-gaps.py b/profiles/i3-gaps.py new file mode 100644 index 00000000..ddca34b7 --- /dev/null +++ b/profiles/i3-gaps.py @@ -0,0 +1,17 @@ +import archinstall, subprocess + +is_top_level_profile = False + +def _prep_function(*args, **kwargs): + """ + 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. + """ + return True + +if __name__ == 'i3-gaps': + # install the i3 group now + i3 = archinstall.Application(installation, 'i3-gaps') + i3.install() diff --git a/profiles/i3-wm.py b/profiles/i3-wm.py new file mode 100644 index 00000000..4a0415fc --- /dev/null +++ b/profiles/i3-wm.py @@ -0,0 +1,17 @@ +import archinstall, subprocess + +is_top_level_profile = False + +def _prep_function(*args, **kwargs): + """ + 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. + """ + return True + +if __name__ == 'i3-wm': + # install the i3 group now + i3 = archinstall.Application(installation, 'i3-wm') + i3.install() diff --git a/profiles/i3.py b/profiles/i3.py new file mode 100644 index 00000000..9f58e7eb --- /dev/null +++ b/profiles/i3.py @@ -0,0 +1,72 @@ +# Common package for i3, lets user select which i3 configuration they want. + +import archinstall, os + +is_top_level_profile = False + +# 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__ = ['i3lock', 'i3status', 'i3blocks'] + +def _prep_function(*args, **kwargs): + """ + 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. + """ + + supported_configurations = ['i3-wm', 'i3-gaps'] + desktop = archinstall.generic_select(supported_configurations, 'Select your desired configuration: ') + + # Temporarily store the selected desktop profile + # in a session-safe location, since this module will get reloaded + # the next time it gets executed. + archinstall.storage['_desktop_profile'] = desktop + + # i3 requires a functioning Xorg installation. + profile = archinstall.Profile(None, 'xorg') + with profile.load_instructions(namespace='xorg.py') as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + print('Deprecated (??): xorg profile has no _prep_function() anymore') + + profile = archinstall.Profile(None, desktop) + # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. + with profile.load_instructions(namespace=f"{desktop}.py") as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + print(f"Deprecated (??): {desktop} profile has no _prep_function() anymore") + +if __name__ == 'i3': + """ + 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 i3 configurations + installation.add_additional_packages(__packages__) + + # Install dependency profiles + installation.install_profile('xorg') + + # gaps is installed by deafult so we are overriding it here + installation.add_additional_packages("lightdm-gtk-greeter lightdm") + + # Auto start lightdm for all users + installation.enable_service('lightdm') + + # TODO: Remove magic variable 'installation' and place it + # in archinstall.storage or archinstall.session/archinstall.installation + installation.install_profile(archinstall.storage['_desktop_profile']) + diff --git a/profiles/lxqt.py b/profiles/lxqt.py new file mode 100644 index 00000000..871488ee --- /dev/null +++ b/profiles/lxqt.py @@ -0,0 +1,35 @@ + +# A desktop environment using "LXQt" + +import archinstall + +is_top_level_profile = False + +def _prep_function(*args, **kwargs): + """ + 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. + """ + + # LXQt requires a functional xorg installation. + profile = archinstall.Profile(None, 'xorg') + with profile.load_instructions(namespace='xorg.py') as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + print('Deprecated (??): xorg profile has no _prep_function() anymore') + +# Ensures that this code only gets executed if executed +# through importlib.util.spec_from_file_location("lxqt", "/somewhere/lxqt.py") +# or through conventional import lxqt +if __name__ == 'lxqt': + # Install dependency profiles + installation.install_profile('xorg') + + # Install the application xfce4 from the template under /applications/ + xfce = archinstall.Application(installation, 'lxqt') + xfce.install() + + installation.enable_service('sddm') # SDDM Display Manager diff --git a/profiles/sway.py b/profiles/sway.py index fd8407df..5633cce2 100644 --- a/profiles/sway.py +++ b/profiles/sway.py @@ -20,5 +20,3 @@ if __name__ == 'sway': # Install the application sway from the template under /applications/ sway = archinstall.Application(installation, 'sway') sway.install() - - installation.enable_service('sddm') # SDDM, which supports Sway |