feat: add Antergos NeXT Minimal (Xfce) profile — lightweight ISO edition

Introduces iso-profiles/antergos-minimal/, a new Xfce-based profile for
building a lightweight Antergos NeXT ISO under the 2 GB GitHub Releases
limit (the full Plasma profile produces ~2.15 GB).

Profile structure:
- profile.yaml: Xfce4 desktop, dinit-only init packages, Falkon browser,
  minimal app selection, antergos-xfce-theme included in rootfs
- root-overlay/: SDDM configured for xfce.desktop, GRUB theme pointed to
  antergos, xfconf settings for Antergos-NeXT GTK/xfwm4 theme
- live-overlay/: Calamares offline + online configs, netinstall with
  multiple DE options (Plasma, Xfce, Cinnamon, MATE, LXQt, i3, Sway,
  Hyprland), notesqml@minimal-info step explaining the edition rationale,
  basestrap operations for antergos-release/grub-theme/keyring, display
  manager selection (SDDM/LightDM/LXDM/LY), audio services (pipewire),
  and antergos-xfce-theme in the Xfce subgroup

Default Xfce theme is set to Antergos-NeXT (Numix-derived, blue accent)
via xfconf XML in both live-overlay and root-overlay skel directories.
This commit is contained in:
2026-07-08 18:51:35 +02:00
parent 64d5d7bf35
commit 8698fe4995
91 changed files with 4196 additions and 0 deletions
@@ -0,0 +1,36 @@
---
backend: pacman
pacman:
num_retries: 0
disable_download_timeout: false
needed_only: false
handle_keyrings: true
copy_pacconf: true
requirements:
- dest: /etc
mode: "0o755"
- dest: /var
mode: "0o755"
- dest: /var/cache
mode: "0o755"
- dest: /var/cache/pacman
mode: "0o755"
- dest: /var/cache/pacman/pkg
mode: "0o755"
- dest: /var/lib
mode: "0o755"
- dest: /var/lib/pacman
mode: "0o755"
keyrings:
- artix
- antergos-next
base_init: elogind
operations:
- install:
- base
- antergos-next-keyring
- antergos-release
- antergos-grub-theme
@@ -0,0 +1,21 @@
---
efiBootLoader: "grub"
kernel: "/vmlinuz-linux-x86_64"
img: "/initramfs-linux-x86_64.img"
fallback: "/initramfs-linux-x86_64-fallback.img"
timeout: "10"
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
installEFIFallback: true
efiBootloaderId: "Antergos"
# installHybridGRUB: false
# efiBootLoaderVar: "packagechooser_bootloader"
@@ -0,0 +1,10 @@
---
displaymanagers:
- lightdm
- gdm
- mdm
- sddm
- lxdm
- slim
basicSetup: false
@@ -0,0 +1,6 @@
---
restartNowMode: user-unchecked
restartNowCommand: "loginctl reboot"
notifyOnFinished: false
@@ -0,0 +1,21 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
---
# Create /etc/default/grub from scratch.
overwrite: true
prefer_grub_d: false
keep_distributor: false
kernel_params: [ "quiet", "splash" ]
defaults:
GRUB_TIMEOUT: 5
GRUB_DEFAULT: "saved"
GRUB_DISABLE_SUBMENU: true
GRUB_TERMINAL_OUTPUT: "console"
GRUB_DISABLE_RECOVERY: true
GRUB_THEME: "/usr/share/grub/themes/antergos/theme.txt"
always_use_defaults: false
@@ -0,0 +1,4 @@
---
kernel: all
be_unsafe: false
@@ -0,0 +1,7 @@
---
localeGenPath: /etc/locale.gen
geoip:
style: "json"
url: "https://geoip.kde.org/v1/calamares"
selector: ""
@@ -0,0 +1,5 @@
---
systemd: false
dbus: false
dbus-symlink: false
entropy-copy: false
@@ -0,0 +1,131 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Mount filesystems in the target (generally, before treating the
# target as a usable chroot / "live" system). Filesystems are
# automatically mounted from the partitioning module. Filesystems
# listed here are **extra**. The filesystems listed in *extraMounts*
# are mounted in all target systems.
---
# Extra filesystems to mount. The key's value is a list of entries; each
# entry has five keys:
# - device The device node to mount
# - fs (optional) The filesystem type to use
# - mountPoint Where to mount the filesystem
# - options (optional) An array of options to pass to mount
# - efi (optional) A boolean that when true is only mounted for UEFI installs
#
# The device is not mounted if the mountPoint is unset or if the fs is
# set to unformatted.
#
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: [ bind ]
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: [ bind ]
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
efi: true
# Btrfs subvolumes to create if root filesystem is on btrfs volume.
# If *mountpoint* is mounted already to another partition, it is ignored.
# Separate subvolume for swapfile is handled separately and automatically.
#
# It is possible to prevent subvolume creation -- this is likely only relevant
# for the root (/) subvolume -- by giving an empty string as a subvolume
# name. In this case no subvolume will be created.
#
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
# As an alternative:
#
# subvolume: ""
- mountPoint: /home
subvolume: /@home
- mountPoint: /root
subvolume: /@root
- mountPoint: /srv
subvolume: /@srv
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log
- mountPoint: /var/tmp
subvolume: /@tmp
# The name of the btrfs subvolume holding the swapfile. This only used when
# a swapfile is selected and the root filesystem is btrfs
#
btrfsSwapSubvol: /@swap
# The mount options used to mount each filesystem.
#
# filesystem contains the name of the filesystem or on of three special
# values, "default", efi" and "btrfs_swap". The logic is applied in this manner:
# - If the partition is the EFI partition, the "efi" entry will be used
# - If the fs is btrfs and the subvolume is for the swapfile,
# the "btrfs_swap" entry is used
# - If the filesystem is an exact match for filesystem, that entry is used
# - If no match is found in the above, the default entry is used
# - If there is no match and no default entry, "defaults" is used
# - If the mountOptions key is not present, "defaults" is used
#
# Each filesystem entry contains 3 keys, all of which are optional
# options - An array of mount options that is used on all disk types
# ssdOptions - An array of mount options combined with options for ssds
# hddOptions - An array of mount options combined with options for hdds
# If combining these options results in an empty array, "defaults" is used
#
# Example 1
# In this example, there are specific options for ext4 and btrfs filesystems,
# the EFI partition and the subvolume holding the btrfs swapfile. All other
# filesystems use the default entry. For the btrfs filesystem, there are
# additional options specific to hdds and ssds
#
mountOptions:
- filesystem: default
options: [ defaults ]
- filesystem: efi
options: [ defaults, umask=0077 ]
- filesystem: ext4
options: [ defaults ]
- filesystem: btrfs
options: [ defaults, noatime, compress=zstd:1 ]
ssdOptions: [ discard=async ]
hddOptions: [ autodefrag ]
- filesystem: btrfs_swap
options: [ defaults, noatime ]
#
# Example 2
# In this example there is a single default used by all filesystems
#
# mountOptions:
# - filesystem: default
# options: [ defaults ]
#
# mountOptions:
# - filesystem: default
# options: [ defaults ]
# - filesystem: efi
# options: [ defaults, umask=0077 ]
# - filesystem: btrfs
# options: [ defaults, compress=zstd:1 ]
# - filesystem: btrfs_swap
# options: [ defaults, noatime ]
@@ -0,0 +1,54 @@
---
groupsUrl:
- file:///etc/calamares/modules/netinstall.yaml
required: false
# To support multiple instances of this module,
# some strings are configurable and translatable here.
# Sub-keys under *label* are used for the user interface.
# - *sidebar* This is the name of the module in the progress-tree / sidebar
# in Calamares.
# - *title* This is displayed above the list of packages.
# If no *sidebar* values are provided, defaults to "Package selection"
# and existing translations. If no *title* values are provided, no string
# is displayed.
#
# Translations are handled through `[ll]` notation, much like in
# `.desktop` files. The string associated with `key[ll]` is used for
# *key* when when the language *ll* (language-code, like *nl* or *en_GB*
# or *ja*) is used.
#
# The following strings are **already** known to Calamares and can be
# listed here in *untranslated* form (e.g. as value of *sidebar*)
# without bothering with the translations: they are picked up from
# the regular translation framework:
# - "Package selection"
# - "Office software"
# - "Office package"
# - "Browser software"
# - "Browser package"
# - "Web browser"
# - "Kernel"
# - "Services"
# - "Login"
# - "Desktop"
# - "Applications"
# - "Communication"
# - "Development"
# - "Office"
# - "Multimedia"
# - "Internet"
# - "Theming"
# - "Gaming"
# - "Utilities"
# Other strings should follow the translations format.
label:
sidebar: "Package selection"
# sidebar[nl]: "Pakketkeuze"
# sidebar[en_GB]: "Package choice"
# sidebar[ja]: "知りません" # "I don't know"
# title: "Office Package"
# title[nl]: "Kantoorsoftware"
@@ -0,0 +1,141 @@
- name: "Default"
description: "Default packages"
hidden: false
selected: true
critical: true
immutable: true
packages:
- linux
- linux-headers
- grub
- efibootmgr
- sudo
- antergos-release
- antergos-next-keyring
- antergos-wallpapers
- antergos-grub-theme
- name: "Kernel"
description: "Kernel and modules"
selected: false
packages:
- acpi_call
- bbswitch
- broadcom-wl
- tp_smapi
- linux-lts
- linux-lts-headers
- name: "Firmware"
description: "Firmware"
selected: false
packages:
- b43-fwcutter
- linux-firmware
- linux-firmware-bnx2x
- linux-firmware-liquidio
- linux-firmware-marvell
- linux-firmware-mellanox
- linux-firmware-nfp
- linux-firmware-qcom
- linux-firmware-qlogic
- linux-firmware-whence
- sof-firmware
- alsa-firmware
- intel-ucode
- amd-ucode
- name: "Utilities"
description: "System Utilities"
selected: true
packages:
- antergos-lsb-release
- nano
- vi
- name: "Devel"
description: "Development tools"
selected: false
packages:
- base-devel
- artools-base
- artools-iso
- artools-pkg
- name: "Style"
description: "Antergos themes, icons, branding"
selected: false
packages: []
- name: "Desktop"
description: "DE"
selected: true
critical: false
subgroups:
- name: "Plasma"
description: "KDE Plasma Desktop"
selected: true
packages:
- plasma
- ark
- dolphin
- ffmpegthumbs
- gwenview
- kate
- keditbookmarks
- kfind
- kgpg
- kio-admin
- konsole
- konversation
- kwalletmanager
- okular
- partitionmanager
- name: "Xfce"
description: "Xfce Desktop"
selected: false
packages:
- xfce4
- xfce4-goodies
- name: "Cinnamon"
description: "Cinnamon Desktop"
selected: false
packages:
- cinnamon
- cinnamon-control-center
- cinnamon-desktop
- cinnamon-menus
- cinnamon-screensaver
- cinnamon-session
- cinnamon-settings-daemon
- cinnamon-translations
- name: "MATE"
description: "MATE Desktop"
selected: false
packages:
- mate
- mate-extra
- name: "LXQt"
description: "LXQt Desktop"
selected: false
packages:
- lxqt
- name: "i3"
description: "i3 Tiling WM"
selected: false
packages:
- i3
- name: "Sway"
description: "Sway Wayland Compositor"
selected: false
packages:
- sway
- swaybg
- swayidle
- swaylock
- name: "Hyprland"
description: "Hyprland Wayland Compositor"
selected: false
packages:
- hyprland
- xdg-desktop-portal-hyprland
@@ -0,0 +1,294 @@
---
mode: required
method: netinstall-add
labels:
step: "Init selection"
step[de]: "Initauswahl"
default: Dinit
items:
- id: Dinit
name: dinit
description: "Dinit init system"
screenshot: ""
netinstall:
name: "dinit"
description: "Dinit init system"
selected: true
critical: true
immutable: false
expanded: true
hidden: false
subgroups:
- name: "Default"
description: "Default services"
selected: true
hidden: true
packages:
- audit-dinit
- cryptsetup-dinit
- dbus-dinit
- dhcpcd-dinit
- lvm2-dinit
- mdadm-dinit
- name: "Cron"
description: "Cron init"
selected: true
packages:
- cronie-dinit
- name: "Syslog"
description: "Syslog init"
packages:
- syslog-ng-dinit
- metalog-dinit
- name: "Internet"
description: "Network init"
packages:
- avahi-dinit
- bluez-dinit
- iptables-dinit
- krb5-dinit
- networkmanager-dinit
- nfs-utils-dinit
- ntp-dinit
- openldap-dinit
- openssh-dinit
- rpcbind-dinit
- xinetd-dinit
- wpa_supplicant-dinit
- name: "Office"
description: "Office init"
packages:
- cups-dinit
- sane-dinit
- name: "Services"
description: "Services init"
packages:
- acpid-dinit
- alsa-utils-dinit
- apparmor-dinit
- brltty-dinit
- fuse-dinit
- gpm-dinit
- hdparm-dinit
- haveged-dinit
- lm_sensors-dinit
- openvpn-dinit
- power-profiles-daemon-dinit
- rsync-dinit
- id: OpenRC
name: openrc
description: "⚠ OpenRC init system — BROKEN in Antergos NeXT (init-rc conflict with dinit). Will be re-added once fixed."
screenshot: ""
netinstall:
name: "openrc"
description: "OpenRC init system"
selected: false
critical: false
immutable: false
expanded: true
hidden: false
subgroups:
- name: "Default"
description: "Default services"
selected: true
hidden: true
packages:
- audit-openrc
- cryptsetup-openrc
- dbus-openrc
- dhcpcd-openrc
- lvm2-openrc
- mdadm-openrc
- name: "Cron"
description: "Cron init"
selected: true
packages:
- cronie-openrc
- name: "Syslog"
description: "Syslog init"
packages:
- syslog-ng-openrc
- metalog-openrc
- name: "Internet"
description: "Network init"
packages:
- avahi-openrc
- bluez-openrc
- iptables-openrc
- krb5-openrc
- networkmanager-openrc
- nfs-utils-openrc
- ntp-openrc
- openldap-openrc
- openssh-openrc
- rpcbind-openrc
- xinetd-openrc
- wpa_supplicant-openrc
- name: "Office"
description: "Office init"
packages:
- cups-openrc
- sane-openrc
- name: "Services"
description: "Services init"
packages:
- acpid-openrc
- alsa-utils-openrc
- apparmor-openrc
- brltty-openrc
- fuse-openrc
- gpm-openrc
- hdparm-openrc
- haveged-openrc
- lm_sensors-openrc
- openrc-settingsd
- openvpn-openrc
- power-profiles-daemon-openrc
- rsync-openrc
- id: S6
name: s6
description: "S6 init system"
screenshot: ""
netinstall:
name: "s6"
description: "S6 init system"
selected: false
critical: true
immutable: false
expanded: true
hidden: false
subgroups:
- name: "Default"
description: "Default services"
selected: true
hidden: true
packages:
- audit-s6
- cryptsetup-s6
- dbus-s6
- dhcpcd-s6
- lvm2-s6
- mdadm-s6
- s6-contrib
- name: "Cron"
description: "Cron init"
selected: true
packages:
- cronie-s6
- name: "Syslog"
description: "Syslog init"
packages:
- syslog-ng-s6
- metalog-s6
- name: "Internet"
description: "Network init"
packages:
- avahi-s6
- bluez-s6
- iptables-s6
- krb5-s6
- networkmanager-s6
- nfs-utils-s6
- ntp-s6
- openldap-s6
- openssh-s6
- rpcbind-s6
- xinetd-s6
- wpa_supplicant-s6
- name: "Office"
description: "Office init"
packages:
- cups-s6
- sane-s6
- name: "Services"
description: "Services init"
packages:
- acpid-s6
- alsa-utils-s6
- apparmor-s6
- brltty-s6
- fuse-s6
- gpm-s6
- hdparm-s6
- haveged-s6
- lm_sensors-s6
- openvpn-s6
- power-profiles-daemon-s6
- rsync-s6
- id: Runit
name: runit
description: "Runit init system"
screenshot: ""
netinstall:
name: "runit"
description: "Runit init system"
selected: false
critical: true
immutable: false
expanded: true
hidden: false
subgroups:
- name: "Default"
description: "Default services"
selected: true
hidden: true
packages:
- audit-runit
- cryptsetup-runit
- dbus-runit
- dhcpcd-runit
- lvm2-runit
- mdadm-runit
- rsm
- name: "Cron"
description: "Cron init"
selected: true
packages:
- cronie-runit
- name: "Syslog"
description: "Syslog init"
packages:
- syslog-ng-runit
- metalog-runit
- name: "Internet"
description: "Network init"
packages:
- avahi-runit
- bluez-runit
- iptables-runit
- krb5-runit
- networkmanager-runit
- nfs-utils-runit
- ntp-runit
- openldap-runit
- openssh-runit
- rpcbind-runit
- xinetd-runit
- wpa_supplicant-runit
- name: "Office"
description: "Office init"
packages:
- cups-runit
- sane-runit
- name: "Services"
description: "Services init"
packages:
- acpid-runit
- alsa-utils-runit
- apparmor-runit
- brltty-runit
- fuse-runit
- gpm-runit
- hdparm-runit
- haveged-runit
- lm_sensors-runit
- openvpn-runit
- power-profiles-daemon-runit
- rsync-runit
@@ -0,0 +1,11 @@
---
backend: pacman
skip_if_no_internet: false
update_db: true
update_system: false
pacman:
num_retries: 0
disable_download_timeout: false
needed_only: false
@@ -0,0 +1,32 @@
efi:
mountPoint: "/boot/efi"
recommendedSize: 512MiB
minimumSize: 256MiB
label: "EFI"
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
- file # To swap file instead of partition
swapPartitionName: swap
luksGeneration: luks1
drawNestedPartitions: true
alwaysShowPartitionLabels: true
initialPartitioningChoice: none
initialSwapChoice: suspend
defaultPartitionTableType: msdos
requiredPartitionTableType:
- msdos
- gpt
defaultFileSystemType: "ext4"
availableFileSystemTypes: ["ext4","btrfs","f2fs","xfs"]
@@ -0,0 +1,13 @@
---
# set at iso build time
initsys: none
user-services:
- name: dbus
action: enable
- name: pipewire
action: enable
- name: pipewire-pulse
action: enable
- name: wireplumber
action: enable
@@ -0,0 +1,24 @@
---
command: artix-service
services:
- name: "acpid"
action: "enable"
- name: "bluetoothd"
action: "enable"
- name: "cronie"
action: "enable"
- name: "cupsd"
action: "enable"
- name: "dbus"
action: "enable"
- name: "dhcpcd"
action: "enable"
- name: "NetworkManager"
action: "enable"
- name: "power-profiles-daemon"
action: "enable"
- name: "sddm"
action: "enable"
- name: "syslog-ng"
action: "enable"
@@ -0,0 +1,2 @@
---
emergency: false
@@ -0,0 +1,49 @@
---
defaultGroups:
- name: users
must_exist: true
system: true
- lp
- video
- network
- storage
- name: wheel
must_exist: false
system: true
- audio
- power
- log
- optical
- network
- scanner
autologinGroup: autologin
doAutologin: false
sudoersGroup: wheel
setRootPassword: true
doReusePassword: false
passwordRequirements:
nonempty: true
minLength: 4 # Password at least this many characters
maxLength: -1 # Password at most this many characters
libpwquality:
- minlen=4
- minclass=0
allowWeakPasswords: true
allowWeakPasswordsDefault: true
userShell: /bin/bash
setHostname: EtcFile
writeHostsFile: true
user:
shell: /bin/bash
forbidden_names: [ root ]
@@ -0,0 +1,20 @@
---
showSupportUrl: true
showKnownIssuesUrl: true
showReleaseNotesUrl: true
requirements:
requiredStorage: 5.5
requiredRam: 1.0
internetCheckUrl: https://www.artixlinux.org
check:
- storage
- ram
- power
- internet
- root
required:
- storage
- ram
- root
- internet