Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-04-08 06:10:28 +0000
committerGitHub <noreply@github.com>2021-04-08 06:10:28 +0000
commitb2b9ac2d405698bb259ff338b159f94bdcb0f87d (patch)
treec58f42e555ac81f8526022e0ba73e175e8025450
parentb7891f500350d0069699a5e7e23f81df2eea952c (diff)
parent10649639ac045ae2396265bbbd65af9b78d89a5a (diff)
Merge pull request #219 from dylanmtaylor/minimal-install-profile
Add minimal profile and implement idea of 'top-level' profiles
-rw-r--r--archinstall/lib/profiles.py6
-rw-r--r--examples/guided.py3
-rw-r--r--profiles/awesome.py2
-rw-r--r--profiles/cinnamon.py2
-rw-r--r--profiles/desktop.py4
-rw-r--r--profiles/gnome.py2
-rw-r--r--profiles/i3-gaps.py2
-rw-r--r--profiles/i3-wm.py2
-rw-r--r--profiles/kde.py2
-rw-r--r--profiles/minimal.py20
-rw-r--r--profiles/xfce4.py2
-rw-r--r--profiles/xorg.py2
12 files changed, 47 insertions, 2 deletions
diff --git a/archinstall/lib/profiles.py b/archinstall/lib/profiles.py
index 39411553..7e76c891 100644
--- a/archinstall/lib/profiles.py
+++ b/archinstall/lib/profiles.py
@@ -177,6 +177,7 @@ class Profile(Script):
if hasattr(imported, '_prep_function'):
return True
return False
+
def has_post_install(self):
with open(self.path, 'r') as source:
source_data = source.read()
@@ -193,6 +194,11 @@ class Profile(Script):
if hasattr(imported, '_post_install'):
return True
+ def is_top_level_profile(self):
+ with open(self.path, 'r') as source:
+ source_data = source.read()
+ return 'top_level_profile = True' in source_data
+
@property
def packages(self) -> list:
"""
diff --git a/examples/guided.py b/examples/guided.py
index 2e704b94..55855d1b 100644
--- a/examples/guided.py
+++ b/examples/guided.py
@@ -1,6 +1,7 @@
import getpass, time, json, sys, signal, os
import archinstall
from archinstall.lib.hardware import hasUEFI
+from archinstall.lib.profiles import Profile
"""
This signal-handler chain (and global variable)
@@ -167,7 +168,7 @@ def ask_user_questions():
# Ask for archinstall-specific profiles (such as desktop environments etc)
if not archinstall.arguments.get('profile', None):
- archinstall.arguments['profile'] = archinstall.select_profile(archinstall.list_profiles())
+ archinstall.arguments['profile'] = archinstall.select_profile(filter(lambda profile: (Profile(None, profile).is_top_level_profile()), archinstall.list_profiles()))
else:
archinstall.arguments['profile'] = archinstall.list_profiles()[archinstall.arguments['profile']]
diff --git a/profiles/awesome.py b/profiles/awesome.py
index 6b1167bf..0d133962 100644
--- a/profiles/awesome.py
+++ b/profiles/awesome.py
@@ -2,6 +2,8 @@
import archinstall
+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__ = ['nano', 'nemo', 'gpicview-gtk3', 'openssh', 'sshfs', 'htop', 'scrot', 'wget']
diff --git a/profiles/cinnamon.py b/profiles/cinnamon.py
index 528158d8..1a796bc7 100644
--- a/profiles/cinnamon.py
+++ b/profiles/cinnamon.py
@@ -1,6 +1,8 @@
# A desktop environment using "Cinnamon"
import archinstall
+is_top_level_profile = False
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
diff --git a/profiles/desktop.py b/profiles/desktop.py
index b8270881..389198d6 100644
--- a/profiles/desktop.py
+++ b/profiles/desktop.py
@@ -2,6 +2,8 @@
import archinstall, os
+is_top_level_profile = True
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -10,7 +12,7 @@ def _prep_function(*args, **kwargs):
for more input before any other installer steps start.
"""
- supported_desktops = ['gnome', 'kde', 'awesome', 'xfce4', 'cinnamon']
+ supported_desktops = ['gnome', 'kde', 'awesome', 'xfce4', 'cinnamon', 'i3-gaps', 'i3-wm']
desktop = archinstall.generic_select(supported_desktops, 'Select your desired desktop environment: ')
# Temporarily store the selected desktop profile
diff --git a/profiles/gnome.py b/profiles/gnome.py
index b37679de..c75cafee 100644
--- a/profiles/gnome.py
+++ b/profiles/gnome.py
@@ -2,6 +2,8 @@
import archinstall
+is_top_level_profile = False
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
diff --git a/profiles/i3-gaps.py b/profiles/i3-gaps.py
index 50511dce..e900117a 100644
--- a/profiles/i3-gaps.py
+++ b/profiles/i3-gaps.py
@@ -1,5 +1,7 @@
import archinstall, subprocess
+is_top_level_profile = False
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
diff --git a/profiles/i3-wm.py b/profiles/i3-wm.py
index cd6cbc81..a2449e39 100644
--- a/profiles/i3-wm.py
+++ b/profiles/i3-wm.py
@@ -1,5 +1,7 @@
import archinstall, subprocess
+is_top_level_profile = False
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
diff --git a/profiles/kde.py b/profiles/kde.py
index e1449d81..10ef3766 100644
--- a/profiles/kde.py
+++ b/profiles/kde.py
@@ -2,6 +2,8 @@
import archinstall, os
+is_top_level_profile = False
+
# TODO: Remove hard dependency of bash (due to .bash_profile)
def _prep_function(*args, **kwargs):
diff --git a/profiles/minimal.py b/profiles/minimal.py
new file mode 100644
index 00000000..79821a89
--- /dev/null
+++ b/profiles/minimal.py
@@ -0,0 +1,20 @@
+# Used to do a minimal install
+
+import archinstall, os
+
+is_top_level_profile = True
+
+def _prep_function(*args, **kwargs):
+ """
+ Magic function called by the importing installer
+ before continuing any further. For minimal install,
+ we don't need to do anything special here, but it
+ needs to exist and return True.
+ """
+ return True # Do nothing and just return True
+
+if __name__ == 'minimal':
+ """
+ This "profile" is a meta-profile.
+ It is used for a custom minimal installation, without any desktop-specific packages.
+ """
diff --git a/profiles/xfce4.py b/profiles/xfce4.py
index 36c9958a..c8637eda 100644
--- a/profiles/xfce4.py
+++ b/profiles/xfce4.py
@@ -1,6 +1,8 @@
# A desktop environment using "Xfce4"
+is_top_level_profile = False
+
import archinstall
def _prep_function(*args, **kwargs):
diff --git a/profiles/xorg.py b/profiles/xorg.py
index 1282b8a5..e905d533 100644
--- a/profiles/xorg.py
+++ b/profiles/xorg.py
@@ -2,6 +2,8 @@
import archinstall, os
+is_top_level_profile = True
+
AVAILABLE_DRIVERS = {
# Sub-dicts are layer-2 options to be selected
# and lists are a list of packages to be installed