Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/profiles
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-05-01 12:12:10 +0200
committerAnton Hvornum <anton@hvornum.se>2021-05-01 12:12:10 +0200
commitea0d0a88174dbf7d8cad7d957ab3fd2ca00e02a4 (patch)
tree5ba03b7e2ecc37b72cb83f3a8908ab747028f695 /profiles
parenta7c0142099066791d48240815c47c07772f9e025 (diff)
parentb58bec202ab47259d5a3855032aca70fa8f36b91 (diff)
Merge branch 'master' of https://github.com/archlinux/archinstall into torxed-partitioning
Diffstat (limited to 'profiles')
-rw-r--r--profiles/52-54-00-12-34-56.py24
-rw-r--r--profiles/applications/alacritty.py3
-rw-r--r--profiles/applications/awesome.py6
-rw-r--r--profiles/applications/budgie.py4
-rw-r--r--profiles/applications/cinnamon.py3
-rw-r--r--profiles/applications/cockpit.py9
-rw-r--r--profiles/applications/docker.py9
-rw-r--r--profiles/applications/gnome.py4
-rw-r--r--profiles/applications/httpd.py9
-rw-r--r--profiles/applications/i3-gaps.py2
-rw-r--r--profiles/applications/i3-wm.py2
-rw-r--r--profiles/applications/kde.py5
-rw-r--r--profiles/applications/lighttpd.py9
-rw-r--r--profiles/applications/lxqt.py3
-rw-r--r--profiles/applications/mariadb.py11
-rw-r--r--profiles/applications/mate.py3
-rw-r--r--profiles/applications/nginx.py9
-rw-r--r--profiles/applications/postgresql.py11
-rw-r--r--profiles/applications/sshd.py9
-rw-r--r--profiles/applications/sway.py3
-rw-r--r--profiles/applications/tomcat.py12
-rw-r--r--profiles/applications/xfce4.py3
-rw-r--r--profiles/awesome.py5
-rw-r--r--profiles/budgie.py8
-rw-r--r--profiles/cinnamon.py7
-rw-r--r--profiles/deepin.py37
-rw-r--r--profiles/desktop.py3
-rw-r--r--profiles/gnome.py8
-rw-r--r--profiles/i3.py14
-rw-r--r--profiles/kde.py7
-rw-r--r--profiles/lxqt.py7
-rw-r--r--profiles/mate.py7
-rw-r--r--profiles/server.py30
-rw-r--r--profiles/sway.py14
-rw-r--r--profiles/xfce4.py7
-rw-r--r--profiles/xorg.py99
36 files changed, 235 insertions, 171 deletions
diff --git a/profiles/52-54-00-12-34-56.py b/profiles/52-54-00-12-34-56.py
index 679c6721..a3347760 100644
--- a/profiles/52-54-00-12-34-56.py
+++ b/profiles/52-54-00-12-34-56.py
@@ -1,8 +1,14 @@
import archinstall
import json
import urllib.request
-import git
+__packages__ = ['nano', 'wget', 'git']
+
+if __name__ == '52-54-00-12-34-56':
+ awesome = archinstall.Application(installation, 'postgresql')
+ awesome.install()
+
+"""
# Unmount and close previous runs (Mainly only used for re-runs, but won't hurt.)
archinstall.sys_command(f'umount -R /mnt', suppress_errors=True)
archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', suppress_errors=True)
@@ -11,7 +17,7 @@ archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', suppress_error
harddrive = archinstall.all_disks()['/dev/sda']
disk_password = '1234'
-with archinstall.Filesystem(harddrive, archinstall.GPT) as fs:
+with archinstall.Filesystem(harddrive) as fs:
# Use the entire disk instead of setting up partitions on your own
fs.use_entire_disk('luks2')
@@ -30,22 +36,19 @@ with archinstall.Filesystem(harddrive, archinstall.GPT) as fs:
if installation.minimal_installation():
installation.add_bootloader()
- installation.add_additional_packages(['nano', 'wget', 'git'])
+ installation.add_additional_packages(__packages__)
installation.install_profile('awesome')
- installation.user_create('anton', 'test')
+ installation.user_create('devel', 'devel')
installation.user_set_pw('root', 'toor')
- repo = git.Repo('./')
- commit = repo.head.commit.hexsha[:7]
-
- print(f'Submitting {commit}: success')
+ print(f'Submitting {archinstall.__version__}: success')
conditions = {
"project": "archinstall",
"profile": "52-54-00-12-34-56",
"status": "success",
- "commit": commit
+ "version": archinstall.__version__
}
req = urllib.request.Request("https://api.archlinux.life/build/success",
data=json.dumps(conditions).encode('utf8'),
@@ -53,4 +56,5 @@ with archinstall.Filesystem(harddrive, archinstall.GPT) as fs:
try:
urllib.request.urlopen(req, timeout=5)
except:
- pass \ No newline at end of file
+ pass
+""" \ No newline at end of file
diff --git a/profiles/applications/alacritty.py b/profiles/applications/alacritty.py
deleted file mode 100644
index aab64bb4..00000000
--- a/profiles/applications/alacritty.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import archinstall
-
-installation.add_additional_packages("alacritty") \ No newline at end of file
diff --git a/profiles/applications/awesome.py b/profiles/applications/awesome.py
index 793ee52b..a63c707b 100644
--- a/profiles/applications/awesome.py
+++ b/profiles/applications/awesome.py
@@ -1,10 +1,10 @@
import archinstall
+__packages__ = ["awesome", "xorg-xrandr", "xterm", "feh", "slock", "terminus-font", "gnu-free-fonts", "ttf-liberation", "xsel"]
+
installation.install_profile('xorg')
-installation.add_additional_packages(
- "awesome xorg-xrandr xterm feh slock terminus-font gnu-free-fonts ttf-liberation xsel"
-)
+installation.add_additional_packages(__packages__)
with open(f'{installation.target}/etc/X11/xinit/xinitrc', 'r') as xinitrc:
xinitrc_data = xinitrc.read()
diff --git a/profiles/applications/budgie.py b/profiles/applications/budgie.py
deleted file mode 100644
index ccec4e14..00000000
--- a/profiles/applications/budgie.py
+++ /dev/null
@@ -1,4 +0,0 @@
-import archinstall
-
-# "It is recommended also to install the gnome group, which contains applications required for the standard GNOME experience." - Arch Wiki
-installation.add_additional_packages("budgie-desktop lightdm lightdm-gtk-greeter gnome") \ No newline at end of file
diff --git a/profiles/applications/cinnamon.py b/profiles/applications/cinnamon.py
deleted file mode 100644
index de29aa09..00000000
--- a/profiles/applications/cinnamon.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import archinstall
-
-installation.add_additional_packages("cinnamon system-config-printer gnome-keyring gnome-terminal blueberry metacity lightdm lightdm-gtk-greeter") \ No newline at end of file
diff --git a/profiles/applications/cockpit.py b/profiles/applications/cockpit.py
new file mode 100644
index 00000000..f1cea1d2
--- /dev/null
+++ b/profiles/applications/cockpit.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["cockpit", "udisks2", "packagekit"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('cockpit.socket')
diff --git a/profiles/applications/docker.py b/profiles/applications/docker.py
new file mode 100644
index 00000000..afa3f8fb
--- /dev/null
+++ b/profiles/applications/docker.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["docker"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('docker')
diff --git a/profiles/applications/gnome.py b/profiles/applications/gnome.py
deleted file mode 100644
index e26290dc..00000000
--- a/profiles/applications/gnome.py
+++ /dev/null
@@ -1,4 +0,0 @@
-import archinstall
-
-installation.add_additional_packages("gnome gnome-tweaks gdm")
-# Note: gdm should be part of the gnome group, but adding it here for clarity
diff --git a/profiles/applications/httpd.py b/profiles/applications/httpd.py
new file mode 100644
index 00000000..00d64b6e
--- /dev/null
+++ b/profiles/applications/httpd.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["apache"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('httpd')
diff --git a/profiles/applications/i3-gaps.py b/profiles/applications/i3-gaps.py
deleted file mode 100644
index 4daed7ad..00000000
--- a/profiles/applications/i3-gaps.py
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index e7838a64..00000000
--- a/profiles/applications/i3-wm.py
+++ /dev/null
@@ -1,2 +0,0 @@
-import archinstall
-installation.add_additional_packages("i3-wm") \ No newline at end of file
diff --git a/profiles/applications/kde.py b/profiles/applications/kde.py
deleted file mode 100644
index af1e6597..00000000
--- a/profiles/applications/kde.py
+++ /dev/null
@@ -1,5 +0,0 @@
-import archinstall
-packages = "plasma-meta konsole kate dolphin sddm plasma-wayland-session"
-if "nvidia" in _gfx_driver_packages:
- packages = packages + " egl-wayland"
-installation.add_additional_packages(packages)
diff --git a/profiles/applications/lighttpd.py b/profiles/applications/lighttpd.py
new file mode 100644
index 00000000..a1e6a371
--- /dev/null
+++ b/profiles/applications/lighttpd.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["lighttpd"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('lighttpd')
diff --git a/profiles/applications/lxqt.py b/profiles/applications/lxqt.py
deleted file mode 100644
index 5ce875cc..00000000
--- a/profiles/applications/lxqt.py
+++ /dev/null
@@ -1,3 +0,0 @@
-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/mariadb.py b/profiles/applications/mariadb.py
new file mode 100644
index 00000000..e458a45a
--- /dev/null
+++ b/profiles/applications/mariadb.py
@@ -0,0 +1,11 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["mariadb"]
+
+installation.add_additional_packages(__packages__)
+
+installation.arch_chroot("mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql")
+
+installation.enable_service('mariadb')
diff --git a/profiles/applications/mate.py b/profiles/applications/mate.py
deleted file mode 100644
index 24d6be47..00000000
--- a/profiles/applications/mate.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import archinstall
-
-installation.add_additional_packages("mate mate-extra lightdm lightdm-gtk-greeter") \ No newline at end of file
diff --git a/profiles/applications/nginx.py b/profiles/applications/nginx.py
new file mode 100644
index 00000000..50eb0506
--- /dev/null
+++ b/profiles/applications/nginx.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["nginx"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('nginx')
diff --git a/profiles/applications/postgresql.py b/profiles/applications/postgresql.py
new file mode 100644
index 00000000..fcdce824
--- /dev/null
+++ b/profiles/applications/postgresql.py
@@ -0,0 +1,11 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["postgresql"]
+
+installation.add_additional_packages(__packages__)
+
+installation.arch_chroot("initdb -D /var/lib/postgres/data", runas='postgres')
+
+installation.enable_service('postgresql') \ No newline at end of file
diff --git a/profiles/applications/sshd.py b/profiles/applications/sshd.py
new file mode 100644
index 00000000..234638d5
--- /dev/null
+++ b/profiles/applications/sshd.py
@@ -0,0 +1,9 @@
+import archinstall
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["openssh"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('sshd')
diff --git a/profiles/applications/sway.py b/profiles/applications/sway.py
deleted file mode 100644
index 56d7f318..00000000
--- a/profiles/applications/sway.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import archinstall
-packages = "sway swaylock swayidle waybar dmenu light grim slurp pavucontrol alacritty"
-installation.add_additional_packages(packages)
diff --git a/profiles/applications/tomcat.py b/profiles/applications/tomcat.py
new file mode 100644
index 00000000..9c521390
--- /dev/null
+++ b/profiles/applications/tomcat.py
@@ -0,0 +1,12 @@
+import archinstall
+
+# This is using Tomcat 10 as that is the latest release at the time of implementation.
+# This should probably be updated to use newer releases as they come out.
+
+# Define the package list in order for lib to source
+# which packages will be installed by this profile
+__packages__ = ["tomcat10"]
+
+installation.add_additional_packages(__packages__)
+
+installation.enable_service('tomcat10')
diff --git a/profiles/applications/xfce4.py b/profiles/applications/xfce4.py
deleted file mode 100644
index e8f659c2..00000000
--- a/profiles/applications/xfce4.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import archinstall
-
-installation.add_additional_packages("xfce4 xfce4-goodies lightdm lightdm-gtk-greeter") \ No newline at end of file
diff --git a/profiles/awesome.py b/profiles/awesome.py
index cbd52a3c..a5dedccd 100644
--- a/profiles/awesome.py
+++ b/profiles/awesome.py
@@ -6,7 +6,7 @@ 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__ = ['nemo', 'gpicview-gtk3', 'scrot']
+__packages__ = ['nemo', 'gpicview-gtk3', 'main', 'alacritty']
def _prep_function(*args, **kwargs):
"""
@@ -35,9 +35,6 @@ if __name__ == 'awesome':
installation.add_additional_packages(__packages__)
- alacritty = archinstall.Application(installation, 'alacritty')
- alacritty.install()
-
# TODO: Copy a full configuration to ~/.config/awesome/rc.lua instead.
with open(f'{installation.target}/etc/xdg/awesome/rc.lua', 'r') as fh:
awesome_lua = fh.read()
diff --git a/profiles/budgie.py b/profiles/budgie.py
index 6c5475ae..fc061cd2 100644
--- a/profiles/budgie.py
+++ b/profiles/budgie.py
@@ -4,6 +4,9 @@ import archinstall
is_top_level_profile = False
+# "It is recommended also to install the gnome group, which contains applications required for the standard GNOME experience." - Arch Wiki
+__packages__ = ["budgie-desktop", "lightdm", "lightdm-gtk-greeter", "gnome"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -27,8 +30,7 @@ if __name__ == 'budgie':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application budgie from the template under /applications/
- budgie = archinstall.Application(installation, 'budgie')
- budgie.install()
+ # Install the Budgie packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager
diff --git a/profiles/cinnamon.py b/profiles/cinnamon.py
index 91a59811..4ca9cfed 100644
--- a/profiles/cinnamon.py
+++ b/profiles/cinnamon.py
@@ -4,6 +4,8 @@ import archinstall
is_top_level_profile = False
+__packages__ = ["cinnamon", "system-config-printer", "gnome-keyring", "gnome-terminal", "blueberry", "metacity", "lightdm", "lightdm-gtk-greeter"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -27,8 +29,7 @@ if __name__ == 'cinnamon':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application cinnamon from the template under /applications/
- cinnamon = archinstall.Application(installation, 'cinnamon')
- cinnamon.install()
+ # Install the Cinnamon packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager
diff --git a/profiles/deepin.py b/profiles/deepin.py
new file mode 100644
index 00000000..ce59a699
--- /dev/null
+++ b/profiles/deepin.py
@@ -0,0 +1,37 @@
+# A desktop environment using "Deepin".
+
+import archinstall, os
+
+is_top_level_profile = False
+
+__packages__ = ["deepin", "deepin-terminal", "deepin-editor"]
+
+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.
+ """
+
+ # Deepin 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')
+
+
+# Ensures that this code only gets executed if executed
+# through importlib.util.spec_from_file_location("deepin", "/somewhere/deepin.py")
+# or through conventional import deepin
+if __name__ == 'deepin':
+ # Install dependency profiles
+ installation.install_profile('xorg')
+
+ # Install the Deepin packages
+ installation.add_additional_packages(__packages__)
+
+ # Enable autostart of Deepin for all users
+ installation.enable_service('lightdm')
diff --git a/profiles/desktop.py b/profiles/desktop.py
index 846182e2..2aea6d30 100644
--- a/profiles/desktop.py
+++ b/profiles/desktop.py
@@ -17,7 +17,8 @@ def _prep_function(*args, **kwargs):
"""
supported_desktops = ['gnome', 'kde', 'awesome', 'sway', 'cinnamon', 'xfce4', 'lxqt', 'i3', 'budgie', 'mate']
- desktop = archinstall.generic_select(supported_desktops, 'Select your desired desktop environment: ')
+ desktop = archinstall.generic_select(supported_desktops, 'Select your desired desktop environment: ',
+ allow_empty_input=False, sort=True)
# Temporarily store the selected desktop profile
# in a session-safe location, since this module will get reloaded
diff --git a/profiles/gnome.py b/profiles/gnome.py
index c75cafee..77c90859 100644
--- a/profiles/gnome.py
+++ b/profiles/gnome.py
@@ -4,6 +4,9 @@ import archinstall
is_top_level_profile = False
+# Note: GDM should be part of the gnome group, but adding it here for clarity
+__packages__ = ["gnome", "gnome-tweaks", "gdm"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -28,9 +31,8 @@ if __name__ == 'gnome':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application gnome from the template under /applications/
- gnome = archinstall.Application(installation, 'gnome')
- gnome.install()
+ # Install the GNOME packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('gdm') # Gnome Display Manager
# We could also start it via xinitrc since we do have Xorg,
diff --git a/profiles/i3.py b/profiles/i3.py
index 67028b2d..e2db5fc7 100644
--- a/profiles/i3.py
+++ b/profiles/i3.py
@@ -6,7 +6,7 @@ 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', 'xterm']
+__packages__ = ['i3lock', 'i3status', 'i3blocks', 'xterm', 'lightdm-gtk-greeter', 'lightdm']
def _prep_function(*args, **kwargs):
"""
@@ -17,7 +17,8 @@ def _prep_function(*args, **kwargs):
"""
supported_configurations = ['i3-wm', 'i3-gaps']
- desktop = archinstall.generic_select(supported_configurations, 'Select your desired configuration: ')
+ desktop = archinstall.generic_select(supported_configurations, 'Select your desired configuration: ',
+ allow_empty_input=False, sort=True)
# Temporarily store the selected desktop profile
# in a session-safe location, since this module will get reloaded
@@ -47,17 +48,16 @@ if __name__ == 'i3':
"""
# Install common packages for all i3 configurations
- installation.add_additional_packages(__packages__)
+ installation.add_additional_packages(__packages__[:4])
# 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")
+ # gaps is installed by deafult so we are overriding it here with lightdm
+ installation.add_additional_packages(__packages__[4:])
# Auto start lightdm for all users
installation.enable_service('lightdm')
# install the i3 group now
- i3 = archinstall.Application(installation, archinstall.storage['_i3_configuration'])
- i3.install()
+ installation.add_additional_packages(archinstall.storage['_i3_configuration'])
diff --git a/profiles/kde.py b/profiles/kde.py
index 6654dfa7..c8efdcde 100644
--- a/profiles/kde.py
+++ b/profiles/kde.py
@@ -4,6 +4,8 @@ import archinstall, os
is_top_level_profile = False
+__packages__ = ["plasma-meta", "konsole", "kate", "dolphin", "sddm", "plasma-wayland-session", "egl-wayland"]
+
# TODO: Remove hard dependency of bash (due to .bash_profile)
def _prep_function(*args, **kwargs):
@@ -37,9 +39,8 @@ if __name__ == 'kde':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application kde from the template under /applications/
- kde = archinstall.Application(installation, 'kde')
- kde.install()
+ # Install the KDE packages
+ installation.add_additional_packages(__packages__)
# Enable autostart of KDE for all users
installation.enable_service('sddm')
diff --git a/profiles/lxqt.py b/profiles/lxqt.py
index 871488ee..d0727a90 100644
--- a/profiles/lxqt.py
+++ b/profiles/lxqt.py
@@ -5,6 +5,8 @@ import archinstall
is_top_level_profile = False
+__packages__ = ["lxqt", "breeze-icons", "oxygen-icons", "xdg-utils", "ttf-freefont", "leafpad", "slock", "sddm"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -28,8 +30,7 @@ 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()
+ # Install the LXQt packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('sddm') # SDDM Display Manager
diff --git a/profiles/mate.py b/profiles/mate.py
index b4c697b1..2cfe7305 100644
--- a/profiles/mate.py
+++ b/profiles/mate.py
@@ -4,6 +4,8 @@ import archinstall
is_top_level_profile = False
+__packages__ = ["mate", "mate-extra", "lightdm", "lightdm-gtk-greeter"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -27,8 +29,7 @@ if __name__ == 'mate':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application mate from the template under /applications/
- mate = archinstall.Application(installation, 'mate')
- mate.install()
+ # Install the MATE packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager
diff --git a/profiles/server.py b/profiles/server.py
new file mode 100644
index 00000000..9d28054d
--- /dev/null
+++ b/profiles/server.py
@@ -0,0 +1,30 @@
+# Used to select various server application profiles on top of a minimal installation.
+
+import archinstall, os, logging
+
+is_top_level_profile = True
+
+available_servers = ["cockpit", "docker", "httpd", "lighttpd", "mariadb", "nginx", "postgresql", "sshd", "tomcat"]
+
+def _prep_function(*args, **kwargs):
+ """
+ Magic function called by the importing installer
+ before continuing any further.
+ """
+ selected_servers = archinstall.generic_multi_select(available_servers, f"Choose which servers to install and enable (leave blank for a minimal installation): ")
+ archinstall.storage['_selected_servers'] = selected_servers
+
+ return True
+
+if __name__ == 'server':
+ """
+ This "profile" is a meta-profile.
+ """
+ archinstall.log(f'Now installing the selected servers.', level=logging.INFO)
+ archinstall.log(archinstall.storage['_selected_servers'], level=logging.DEBUG)
+ for server in archinstall.storage['_selected_servers']:
+ archinstall.log(f'Installing {server} ...', level=logging.INFO)
+ app = archinstall.Application(installation, server)
+ app.install()
+
+ archinstall.log('If your selections included multiple servers with the same port, you may have to reconfigure them.', fg="yellow", level=logging.INFO)
diff --git a/profiles/sway.py b/profiles/sway.py
index 5633cce2..db94ae2c 100644
--- a/profiles/sway.py
+++ b/profiles/sway.py
@@ -4,6 +4,8 @@ import archinstall
is_top_level_profile = False
+__packages__ = ["sway", "swaylock", "swayidle", "waybar", "dmenu", "light", "grim", "slurp", "pavucontrol", "alacritty"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -11,12 +13,18 @@ def _prep_function(*args, **kwargs):
other code in this stage. So it's a safe way to ask the user
for more input before any other installer steps start.
"""
+ if "nvidia" in _gfx_driver_packages:
+ choice = input("The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues. Continue anyways? [y/N] ")
+ if choice.lower() in ("n", ""):
+ raise archinstall.lib.exceptions.HardwareIncompatibilityError("Sway does not support the proprietary nvidia drivers.")
+
+ __builtins__['_gfx_driver_packages'] = archinstall.select_driver()
+
return True
# Ensures that this code only gets executed if executed
# through importlib.util.spec_from_file_location("sway", "/somewhere/sway.py")
# or through conventional import sway
if __name__ == 'sway':
- # Install the application sway from the template under /applications/
- sway = archinstall.Application(installation, 'sway')
- sway.install()
+ # Install the Sway packages
+ installation.add_additional_packages(__packages__)
diff --git a/profiles/xfce4.py b/profiles/xfce4.py
index fee8c37a..8102919b 100644
--- a/profiles/xfce4.py
+++ b/profiles/xfce4.py
@@ -5,6 +5,8 @@ import archinstall
is_top_level_profile = False
+__packages__ = ["xfce4", "xfce4-goodies", "lightdm", "lightdm-gtk-greeter"]
+
def _prep_function(*args, **kwargs):
"""
Magic function called by the importing installer
@@ -28,8 +30,7 @@ if __name__ == 'xfce4':
# Install dependency profiles
installation.install_profile('xorg')
- # Install the application xfce4 from the template under /applications/
- xfce = archinstall.Application(installation, 'xfce4')
- xfce.install()
+ # Install the XFCE4 packages
+ installation.add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager
diff --git a/profiles/xorg.py b/profiles/xorg.py
index e905d533..7546a01b 100644
--- a/profiles/xorg.py
+++ b/profiles/xorg.py
@@ -1,91 +1,11 @@
# A system with "xorg" installed
-import archinstall, os
+import os
+import archinstall
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
- 'AMD / ATI' : {
- 'amd' : ['xf86-video-amdgpu'],
- 'ati' : ['xf86-video-ati']
- },
- 'intel' : ['xf86-video-intel'],
- 'nvidia' : {
- 'open source' : ['xf86-video-nouveau'],
- 'proprietary' : ['nvidia']
- },
- 'mesa' : ['mesa'],
- 'fbdev' : ['xf86-video-fbdev'],
- 'vesa' : ['xf86-video-vesa'],
- 'vmware' : ['xf86-video-vmware']
-}
-
-def select_driver(options):
- """
- Some what convoluted function, which's job is simple.
- Select a graphics driver from a pre-defined set of popular options.
-
- (The template xorg is for beginner users, not advanced, and should
- there for appeal to the general public first and edge cases later)
- """
- drivers = sorted(list(options))
-
- if len(drivers) >= 1:
- for index, driver in enumerate(drivers):
- print(f"{index}: {driver}")
-
- print(' -- The above list are supported graphic card drivers. --')
- print(' -- You need to select (and read about) which one you need. --')
-
- lspci = archinstall.sys_command(f'/usr/bin/lspci')
- for line in lspci.trace_log.split(b'\r\n'):
- if b' vga ' in line.lower():
- if b'nvidia' in line.lower():
- print(' ** nvidia card detected, suggested driver: nvidia **')
- elif b'amd' in line.lower():
- print(' ** AMD card detected, suggested driver: AMD / ATI **')
-
- selected_driver = input('Select your graphics card driver: ')
- initial_option = selected_driver
-
- # Disabled search for now, only a few profiles exist anyway
- #
- #print(' -- You can enter ? or help to search for more drivers --')
- #if selected_driver.lower() in ('?', 'help'):
- # filter_string = input('Search for layout containing (example: "sv-"): ')
- # new_options = search_keyboard_layout(filter_string)
- # return select_language(new_options)
- if selected_driver.isdigit() and (pos := int(selected_driver)) <= len(drivers)-1:
- selected_driver = options[drivers[pos]]
- elif selected_driver in options:
- selected_driver = options[options.index(selected_driver)]
- elif len(selected_driver) == 0:
- raise archinstall.RequirementError("At least one graphics driver is needed to support a graphical environment. Please restart the installer and try again.")
- else:
- raise archinstall.RequirementError("Selected driver does not exist.")
-
- if type(selected_driver) == dict:
- driver_options = sorted(list(selected_driver))
- for index, driver_package_group in enumerate(driver_options):
- print(f"{index}: {driver_package_group}")
-
- selected_driver_package_group = input(f'Which driver-type do you want for {initial_option}: ')
- if selected_driver_package_group.isdigit() and (pos := int(selected_driver_package_group)) <= len(driver_options)-1:
- selected_driver_package_group = selected_driver[driver_options[pos]]
- elif selected_driver_package_group in selected_driver:
- selected_driver_package_group = selected_driver[selected_driver.index(selected_driver_package_group)]
- elif len(selected_driver_package_group) == 0:
- raise archinstall.RequirementError(f"At least one driver package is required for a graphical environment using {selected_driver}. Please restart the installer and try again.")
- else:
- raise archinstall.RequirementError(f"Selected driver-type does not exist for {initial_option}.")
-
- return selected_driver_package_group
-
- return selected_driver
-
- raise archinstall.RequirementError("Selecting drivers require a least one profile to be given as an option.")
+__packages__ = ['dkms', 'xorg-server', 'xorg-xinit', 'nvidia-dkms', 'xorg-server', *archinstall.lib.hardware.__packages__]
def _prep_function(*args, **kwargs):
"""
@@ -94,10 +14,8 @@ def _prep_function(*args, **kwargs):
other code in this stage. So it's a safe way to ask the user
for more input before any other installer steps start.
"""
- print('You need to select which graphics card you\'re using.')
- print('This in order to setup the required graphics drivers.')
- __builtins__['_gfx_driver_packages'] = select_driver(AVAILABLE_DRIVERS)
+ __builtins__['_gfx_driver_packages'] = archinstall.select_driver()
# TODO: Add language section and/or merge it with the locale selected
# earlier in for instance guided.py installer.
@@ -109,7 +27,14 @@ def _prep_function(*args, **kwargs):
# or through conventional import xorg
if __name__ == 'xorg':
try:
- installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
+ if "nvidia" in _gfx_driver_packages:
+ if "linux-zen" in installation.base_packages or "linux-lts" in installation.base_packages:
+ installation.add_additional_packages("dkms")#I've had kernel regen fail if it wasn't installed before nvidia-dkms
+ installation.add_additional_packages("xorg-server xorg-xinit nvidia-dkms")
+ else:
+ installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
+ else:
+ installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
except:
installation.add_additional_packages(f"xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install