index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-04-09 08:05:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-09 08:05:12 +0000 |
commit | f45429b099d1f22a925b8387e17ab11d675793d0 (patch) | |
tree | 3f4cd519d5e5846e6d8a58aaec3da0f5a0e7087a | |
parent | bfb342dc2dabc86cb2390ae792d61ee9fa317ab5 (diff) | |
parent | 82c5241946ec96223aebe6453c58845182290fbb (diff) |
-rw-r--r-- | profiles/applications/i3-gaps.py | 2 | ||||
-rw-r--r-- | profiles/applications/i3-wm.py | 2 | ||||
-rw-r--r-- | profiles/desktop.py | 2 | ||||
-rw-r--r-- | profiles/i3-gaps.py | 17 | ||||
-rw-r--r-- | profiles/i3-wm.py | 17 | ||||
-rw-r--r-- | profiles/i3.py | 72 |
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/desktop.py b/profiles/desktop.py index 3ba9a885..e2850da4 100644 --- a/profiles/desktop.py +++ b/profiles/desktop.py @@ -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', 'lxqt'] + 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']) + |