summaryrefslogtreecommitdiff
path: root/releng/airootfs/etc
diff options
context:
space:
mode:
Diffstat (limited to 'releng/airootfs/etc')
-rw-r--r--releng/airootfs/etc/NetworkManager/conf.d/wifi_backend.conf2
-rw-r--r--releng/airootfs/etc/default/grub54
-rw-r--r--releng/airootfs/etc/group17
-rw-r--r--releng/airootfs/etc/gshadow2
-rw-r--r--releng/airootfs/etc/hostname1
-rw-r--r--releng/airootfs/etc/iwd/main.conf2
-rw-r--r--releng/airootfs/etc/locale.conf1
l---------releng/airootfs/etc/localtime1
-rw-r--r--releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf3
-rw-r--r--releng/airootfs/etc/mkinitcpio.d/linux.preset8
-rw-r--r--releng/airootfs/etc/modprobe.d/broadcom-wl.conf11
-rw-r--r--releng/airootfs/etc/motd11
-rw-r--r--releng/airootfs/etc/os-release11
-rw-r--r--releng/airootfs/etc/pacman.conf108
-rw-r--r--releng/airootfs/etc/pacman.d/chaotic-mirrorlist349
-rw-r--r--releng/airootfs/etc/pacman.d/hooks/reflector-mirrorlist.hook11
-rw-r--r--releng/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook18
-rw-r--r--releng/airootfs/etc/pacman.d/mirrorlist111
-rw-r--r--releng/airootfs/etc/passwd2
-rw-r--r--releng/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules8
-rwxr-xr-xreleng/airootfs/etc/profile.d/autostart.sh4
-rw-r--r--releng/airootfs/etc/profile.d/raveos-fastfetch.sh18
-rw-r--r--releng/airootfs/etc/resolv.conf1
-rw-r--r--releng/airootfs/etc/shadow2
-rw-r--r--releng/airootfs/etc/skel/.bashrc16
-rw-r--r--releng/airootfs/etc/skel/.config/fastfetch/config-kitty.jsonc43
-rw-r--r--releng/airootfs/etc/skel/.config/fastfetch/config.jsonc93
-rw-r--r--releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.pngbin0 -> 136727 bytes
-rw-r--r--releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.txt19
-rw-r--r--releng/airootfs/etc/ssh/sshd_config.d/10-archiso.conf3
-rw-r--r--releng/airootfs/etc/sudoers139
-rw-r--r--releng/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf2
-rw-r--r--releng/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf4
-rw-r--r--releng/airootfs/etc/systemd/network/20-ethernet.network24
-rw-r--r--releng/airootfs/etc/systemd/network/20-wlan.network.disabled20
-rw-r--r--releng/airootfs/etc/systemd/network/20-wwan.network19
-rw-r--r--releng/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf2
-rw-r--r--releng/airootfs/etc/systemd/resolved.conf.d/archiso.conf4
l---------releng/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator1
-rw-r--r--releng/airootfs/etc/systemd/system/choose-mirror.service10
l---------releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service1
l---------releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service1
l---------releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service1
l---------releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-main.service1
l---------releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-network.service1
l---------releng/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service1
l---------releng/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service1
l---------releng/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service1
l---------releng/airootfs/etc/systemd/system/dbus-org.freedesktop.timesync1.service1
-rw-r--r--releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount8
-rw-r--r--releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf3
-rw-r--r--releng/airootfs/etc/systemd/system/livecd-alsa-unmuter.service13
-rw-r--r--releng/airootfs/etc/systemd/system/livecd-talk.service20
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/livecd-talk.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector-once.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service1
l---------releng/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service1
l---------releng/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service1
-rw-r--r--releng/airootfs/etc/systemd/system/pacman-init.service16
-rw-r--r--releng/airootfs/etc/systemd/system/reflector-once.service11
l---------releng/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket1
l---------releng/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket1
l---------releng/airootfs/etc/systemd/system/sound.target.wants/livecd-alsa-unmuter.service1
l---------releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-time-wait-sync.service1
l---------releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service1
-rw-r--r--releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf6
l---------releng/airootfs/etc/systemd/system/wpa_supplicant.service1
78 files changed, 1263 insertions, 0 deletions
diff --git a/releng/airootfs/etc/NetworkManager/conf.d/wifi_backend.conf b/releng/airootfs/etc/NetworkManager/conf.d/wifi_backend.conf
new file mode 100644
index 0000000..515c976
--- /dev/null
+++ b/releng/airootfs/etc/NetworkManager/conf.d/wifi_backend.conf
@@ -0,0 +1,2 @@
+[device]
+wifi.backend=iwd
diff --git a/releng/airootfs/etc/default/grub b/releng/airootfs/etc/default/grub
new file mode 100644
index 0000000..c9416a2
--- /dev/null
+++ b/releng/airootfs/etc/default/grub
@@ -0,0 +1,54 @@
+# GRUB boot loader configuration
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="RaveOS"
+GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
+GRUB_CMDLINE_LINUX=""
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable booting from LUKS encrypted devices
+GRUB_ENABLE_CRYPTODISK=y
+
+# Set to 'countdown' or 'hidden' to change timeout behavior,
+# press ESC key to display menu.
+GRUB_TIMEOUT_STYLE=menu
+
+# Uncomment to use basic console
+GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors. Used by normal and wallpaper
+# modes only. Entries specified as foreground/background.
+#GRUB_COLOR_NORMAL="light-blue/black"
+#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+#GRUB_THEME="/path/to/gfxtheme"
+
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+# Uncomment to make GRUB remember the last selection. This requires
+# setting 'GRUB_DEFAULT=saved' above.
+#GRUB_SAVEDEFAULT="true"
diff --git a/releng/airootfs/etc/group b/releng/airootfs/etc/group
new file mode 100644
index 0000000..5b8b111
--- /dev/null
+++ b/releng/airootfs/etc/group
@@ -0,0 +1,17 @@
+root:x:0:root
+sys:x:3:bin,raveos
+network:x:90:raveos
+power:x:98:raveos
+adm:x:999:raveos
+wheel:x:998:raveos
+uucp:x:987:raveos
+optical:x:990:raveos
+rfkill:x:983:raveos
+video:x:986:raveos
+storage:x:988:raveos
+audio:x:995:raveos
+users:x:985:raveos
+nopasswdlogin:x:966:raveos
+autologin:x:967:raveos
+plugdev:x:46:raveos
+raveos:x:1000:
diff --git a/releng/airootfs/etc/gshadow b/releng/airootfs/etc/gshadow
new file mode 100644
index 0000000..b37e18f
--- /dev/null
+++ b/releng/airootfs/etc/gshadow
@@ -0,0 +1,2 @@
+root:!*::root
+raveos:!*::
diff --git a/releng/airootfs/etc/hostname b/releng/airootfs/etc/hostname
new file mode 100644
index 0000000..02af87a
--- /dev/null
+++ b/releng/airootfs/etc/hostname
@@ -0,0 +1 @@
+raveos-netinst
diff --git a/releng/airootfs/etc/iwd/main.conf b/releng/airootfs/etc/iwd/main.conf
new file mode 100644
index 0000000..d613231
--- /dev/null
+++ b/releng/airootfs/etc/iwd/main.conf
@@ -0,0 +1,2 @@
+[General]
+EnableNetworkConfiguration=false
diff --git a/releng/airootfs/etc/locale.conf b/releng/airootfs/etc/locale.conf
new file mode 100644
index 0000000..f9c983c
--- /dev/null
+++ b/releng/airootfs/etc/locale.conf
@@ -0,0 +1 @@
+LANG=C.UTF-8
diff --git a/releng/airootfs/etc/localtime b/releng/airootfs/etc/localtime
new file mode 120000
index 0000000..0e35b57
--- /dev/null
+++ b/releng/airootfs/etc/localtime
@@ -0,0 +1 @@
+/usr/share/zoneinfo/UTC \ No newline at end of file
diff --git a/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf b/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf
new file mode 100644
index 0000000..5c008e5
--- /dev/null
+++ b/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf
@@ -0,0 +1,3 @@
+HOOKS=(base udev microcode modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard)
+COMPRESSION="xz"
+COMPRESSION_OPTIONS=(-9e)
diff --git a/releng/airootfs/etc/mkinitcpio.d/linux.preset b/releng/airootfs/etc/mkinitcpio.d/linux.preset
new file mode 100644
index 0000000..8e85205
--- /dev/null
+++ b/releng/airootfs/etc/mkinitcpio.d/linux.preset
@@ -0,0 +1,8 @@
+# mkinitcpio preset file for the 'linux' package on archiso
+
+PRESETS=('archiso')
+
+ALL_kver='/boot/vmlinuz-linux'
+archiso_config='/etc/mkinitcpio.conf.d/archiso.conf'
+
+archiso_image="/boot/initramfs-linux.img"
diff --git a/releng/airootfs/etc/modprobe.d/broadcom-wl.conf b/releng/airootfs/etc/modprobe.d/broadcom-wl.conf
new file mode 100644
index 0000000..d57bc07
--- /dev/null
+++ b/releng/airootfs/etc/modprobe.d/broadcom-wl.conf
@@ -0,0 +1,11 @@
+# The broadcom-wl package requires some modules to be disabled in order to use
+# wl. Since the ISO image needs to cover many hardware cases, this file
+# overrides the default blacklist in /usr/lib/modprobe.d/
+#
+# If you need to use wl, you may need to delete this file, then `rmmod` any
+# already-loaded modules that are now blacklisted before proceeding to modprobe
+# wl itself.
+
+blacklist b43
+blacklist bcma
+blacklist ssb \ No newline at end of file
diff --git a/releng/airootfs/etc/motd b/releng/airootfs/etc/motd
new file mode 100644
index 0000000..4d9eda1
--- /dev/null
+++ b/releng/airootfs/etc/motd
@@ -0,0 +1,11 @@
+To install Arch Linux follow the installation guide:
+https://wiki.archlinux.org/title/Installation_guide
+
+For Wi-Fi, authenticate to the wireless network using the iwctl utility.
+For mobile broadband (WWAN) modems, connect with the mmcli utility.
+Ethernet, WLAN and WWAN interfaces using DHCP should work automatically.
+
+After connecting to the internet, the installation guide can be accessed
+via the convenience script Installation_guide.
+
+                                          
diff --git a/releng/airootfs/etc/os-release b/releng/airootfs/etc/os-release
new file mode 100644
index 0000000..4728aeb
--- /dev/null
+++ b/releng/airootfs/etc/os-release
@@ -0,0 +1,11 @@
+NAME="RaveOS"
+PRETTY_NAME="RaveOS"
+ID=arch
+BUILD_ID=rolling
+ANSI_COLOR="38;2;23;147;209"
+HOME_URL="https://rp1.hu"
+DOCUMENTATION_URL="https://rp1.hu/"
+SUPPORT_URL="https://rp1.hu/"
+BUG_REPORT_URL="https://git.rp1.hu"
+PRIVACY_POLICY_URL="https://git.rp1.hu"
+LOGO=raveos-logo
diff --git a/releng/airootfs/etc/pacman.conf b/releng/airootfs/etc/pacman.conf
new file mode 100644
index 0000000..9ba30ee
--- /dev/null
+++ b/releng/airootfs/etc/pacman.conf
@@ -0,0 +1,108 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+#DBPath = /var/lib/pacman/
+#CacheDir = /var/cache/pacman/pkg/
+#LogFile = /var/log/pacman.log
+#GPGDir = /etc/pacman.d/gnupg/
+#HookDir = /etc/pacman.d/hooks/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg = linux-cachyos linux-cachyos-headers gnome-session gnome-console gedit gnome-disk-utility gnome-system-monitor eog gnome-calculator baobab gnome-control-center gnome-tweaks gnome-browser-connector gnome-settings-daemon nautilus gnome-shell-extensions mutter
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+Color
+#NoProgressBar
+# We cannot check disk space from within a chroot environment
+#CheckSpace
+#VerbosePkgLists
+ILoveCandy
+ParallelDownloads = 5
+#DownloadUser = alpm
+#DisableSandbox
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+# - can be defined here or included from another file
+# - pacman will search repositories in the order defined here
+# - local/custom mirrors can be added here or in separate files
+# - repositories listed first will take precedence when packages
+# have identical names, regardless of version number
+# - URLs will have $repo replaced by the name of the current repo
+# - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+# [repo-name]
+# Server = ServerName
+# Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[core-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+#[extra-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[multilib]
+Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository. See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
+[raveos-core-repo]
+SigLevel = Never TrustAll
+Server = https://page.rp1.hu/x86_64/
+
+[chaotic-aur]
+Include = /etc/pacman.d/chaotic-mirrorlist
diff --git a/releng/airootfs/etc/pacman.d/chaotic-mirrorlist b/releng/airootfs/etc/pacman.d/chaotic-mirrorlist
new file mode 100644
index 0000000..283a314
--- /dev/null
+++ b/releng/airootfs/etc/pacman.d/chaotic-mirrorlist
@@ -0,0 +1,349 @@
+# Mirrorlist for Chaotic-AUR (https://aur.chaotic.cx/)
+
+# This file contains 3 different types of mirrors:
+# 1. Virtual mirrors: These mirrors do not refer to any specific mirror or region of the world
+# * geo-mirror.chaotic.cx: Automatically routes to the geographically closest up-to-date mirror based on IP address.
+# * random-mirror.chaotic.cx: Automatically routes to a random (but semi-persistent) up-to-date mirror.
+# 2. Country mirrors: Any requests made to these mirrors will be routed to an up-to-date mirror located in the specific country.
+# * If your machine is located in the same country as the country mirror in question, the closest mirror in that country will be used.
+# * If your machine is located in a different country than the country mirror, a random (but semi-persistent) mirror in that country will be used.
+# * Common format: [country code]-mirror.chaotic.cx
+# 3. Regular mirrors: These refer to specific mirrors and do not automatically route to any other mirror.
+# * If the mirror is out of date or offline, the mirror will return an appropriate error code. Pacman will skip it automatically.
+# * Common format: [country code]-[number]-mirror.chaotic.cx (but there are exceptions to this format)
+
+# Most of these mirrors are disabled by default. The topmost mirror will be the default mirror. The rest will be fallbacks.
+# Uncomment+move the mirrors to your desire. By default, geo-mirror, cdn-mirror and a few country mirrors are enabled,
+# to allow for a reasonable number of fallbacks while keeping the defaults short. Have fun!
+
+## Geo mirror (virtual)
+# Automatic routing to the geographically closest mirror (default)
+Server = https://geo-mirror.chaotic.cx/$repo/$arch
+
+## CDN mirror (regular)
+# Global
+# * By: Garuda Linux donators, hosted on Cloudflare R2
+Server = https://cdn-mirror.chaotic.cx/$repo/$arch
+
+
+## --- Country mirrors ---
+
+# Argentina (AR)
+#Server = https://ar-mirror.chaotic.cx/$repo/$arch
+
+# Australia (AU)
+#Server = https://au-mirror.chaotic.cx/$repo/$arch
+
+# Brazil (BR)
+Server = https://br-mirror.chaotic.cx/$repo/$arch
+
+# Canada (CA)
+#Server = https://ca-mirror.chaotic.cx/$repo/$arch
+
+# Chile (CL)
+#Server = https://cl-mirror.chaotic.cx/$repo/$arch
+
+# Colombia (CO)
+#Server = https://co-mirror.chaotic.cx/$repo/$arch
+
+# France (FR)
+#Server = https://fr-mirror.chaotic.cx/$repo/$arch
+
+# Germany (DE)
+Server = https://de-mirror.chaotic.cx/$repo/$arch
+
+# Greece (GR)
+#Server = https://gr-mirror.chaotic.cx/$repo/$arch
+
+# Hong Kong (HK)
+#Server = https://hk-mirror.chaotic.cx/$repo/$arch
+
+# India (IN)
+Server = https://in-mirror.chaotic.cx/$repo/$arch
+
+# Indonesia (ID)
+#Server = https://id-mirror.chaotic.cx/$repo/$arch
+
+# Israel (IL)
+#Server = https://il-mirror.chaotic.cx/$repo/$arch
+
+# Italy (IT)
+#Server = https://it-mirror.chaotic.cx/$repo/$arch
+
+# Japan (JP)
+#Server = https://jp-mirror.chaotic.cx/$repo/$arch
+
+# Mexico (MX)
+#Server = https://mx-mirror.chaotic.cx/$repo/$arch
+
+# Netherlands (NL)
+#Server = https://nl-mirror.chaotic.cx/$repo/$arch
+
+# New Zealand (NZ)
+#Server = https://nz-mirror.chaotic.cx/$repo/$arch
+
+# Nigeria (NG)
+#Server = https://ng-mirror.chaotic.cx/$repo/$arch
+
+# Peru (PE)
+#Server = https://pe-mirror.chaotic.cx/$repo/$arch
+
+# Poland (PL)
+#Server = https://pl-mirror.chaotic.cx/$repo/$arch
+
+# Russia (RU)
+#Server = https://ru-mirror.chaotic.cx/$repo/$arch
+
+# Saudi Arabia (SA)
+#Server = https://sa-mirror.chaotic.cx/$repo/$arch
+
+# Singapore (SG)
+#Server = https://sg-mirror.chaotic.cx/$repo/$arch
+
+# South Africa (ZA)
+#Server = https://za-mirror.chaotic.cx/$repo/$arch
+
+# South Korea (KR)
+#Server = https://kr-mirror.chaotic.cx/$repo/$arch
+
+# Spain (ES)
+#Server = https://es-mirror.chaotic.cx/$repo/$arch
+
+# Sweden (SE)
+#Server = https://se-mirror.chaotic.cx/$repo/$arch
+
+# Switzerland (CH)
+#Server = https://ch-mirror.chaotic.cx/$repo/$arch
+
+# Taiwan (TW)
+#Server = https://tw-mirror.chaotic.cx/$repo/$arch
+
+# Thailand (TH)
+#Server = https://th-mirror.chaotic.cx/$repo/$arch
+
+# United Arab Emirates (AE)
+#Server = https://ae-mirror.chaotic.cx/$repo/$arch
+
+# United Kingdom (GB)
+#Server = https://gb-mirror.chaotic.cx/$repo/$arch
+
+# United States of America (US)
+Server = https://us-mirror.chaotic.cx/$repo/$arch
+
+# Vietnam (VN)
+#Server = https://vn-mirror.chaotic.cx/$repo/$arch
+
+
+## --- Regular mirrors ---
+
+# Argentina (AR)
+# * By: a0xz
+#Server = https://ar-1-mirror.chaotic.cx/$repo/$arch
+
+# Australia (AU)
+# * By: a0xz
+#Server = https://au-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://au-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://au-3-mirror.chaotic.cx/$repo/$arch
+
+# Brazil (BR)
+# * By: Universidade Federal de São Carlos (São Carlos)
+#Server = https://br-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://br-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://br-3-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://br-4-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://br-5-mirror.chaotic.cx/$repo/$arch
+
+# Canada (CA)
+# * By: All Things Linux
+#Server = https://ca-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://ca-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://ca-3-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://ca-4-mirror.chaotic.cx/$repo/$arch
+
+# Chile (CL)
+# * By: Jonathan Gutiérrez
+#Server = https://cl-1-mirror.chaotic.cx/$repo/$arch
+# * By: Jonathan Gutiérrez
+#Server = https://cl-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://cl-3-mirror.chaotic.cx/$repo/$arch
+
+# Colombia (CO)
+# * By: Eduard Tolosa
+#Server = https://co-1-mirror.chaotic.cx/$repo/$arch
+
+# France (FR)
+# * By: a0xz
+#Server = https://fr-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://fr-2-mirror.chaotic.cx/$repo/$arch
+
+# Germany (DE)
+# * By: Nico
+#Server = https://de-2-mirror.chaotic.cx/$repo/$arch
+# * By: redgloboli
+#Server = https://de-4-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://de-1-mirror.chaotic.cx/$repo/$arch
+
+# Greece (GR)
+# * By: vmmaniac <github.com/vmmaniac>
+#Server = https://gr-1-mirror.chaotic.cx/$repo/$arch
+
+# Hong Kong (HK)
+# * By: a0xz
+#Server = https://hk-1-mirror.chaotic.cx/$repo/$arch
+
+# India (IN)
+# * By: Albony <https://albony.xyz/>
+#Server = https://in-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://in-3-mirror.chaotic.cx/$repo/$arch
+# * By: Albony (Chennai)
+#Server = https://in-4-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://in-5-mirror.chaotic.cx/$repo/$arch
+
+# Indonesia (ID)
+# * By: a0xz
+#Server = https://id-1-mirror.chaotic.cx/$repo/$arch
+
+# Israel (IL)
+# * By: a0xz
+#Server = https://il-1-mirror.chaotic.cx/$repo/$arch
+
+# Italy (IT)
+# * By: a0xz
+#Server = https://it-1-mirror.chaotic.cx/$repo/$arch
+
+# Japan (JP)
+# * By: a0xz
+#Server = https://jp-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://jp-2-mirror.chaotic.cx/$repo/$arch
+
+# Mexico (MX)
+# * By: a0xz
+#Server = https://mx-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://mx-2-mirror.chaotic.cx/$repo/$arch
+
+# Netherlands (NL)
+# * By: a0xz
+#Server = https://nl-1-mirror.chaotic.cx/$repo/$arch
+
+# New Zealand (NZ)
+# * By: a0xz
+#Server = https://nz-1-mirror.chaotic.cx/$repo/$arch
+
+# Nigeria (NG)
+# * By: a0xz
+#Server = https://ng-1-mirror.chaotic.cx/$repo/$arch
+
+# Peru (PE)
+# * By: a0xz
+#Server = https://pe-1-mirror.chaotic.cx/$repo/$arch
+
+# Poland (PL)
+# * By: a0xz
+#Server = https://pl-1-mirror.chaotic.cx/$repo/$arch
+
+# Russia (RU)
+# * By: Котпро203
+#Server = https://ru-1-mirror.chaotic.cx/$repo/$arch
+
+# Saudi Arabia (SA)
+# * By: a0xz
+#Server = https://sa-1-mirror.chaotic.cx/$repo/$arch
+
+# Singapore (SG)
+# * By: freedif.org (City state)
+#Server = https://sg-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://sg-2-mirror.chaotic.cx/$repo/$arch
+
+# South Africa (ZA)
+# * By: a0xz
+#Server = https://za-1-mirror.chaotic.cx/$repo/$arch
+
+# South Korea (KR)
+# * By: <t.me/silent_heigou> (Seoul)
+#Server = https://kr-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://kr-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://kr-3-mirror.chaotic.cx/$repo/$arch
+
+# Spain (ES)
+# * By: JKANetwork
+#Server = https://es-1-mirror.chaotic.cx/$repo/$arch
+# * By: Ícar <t.me/IcarNS>
+#Server = https://es-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://es-3-mirror.chaotic.cx/$repo/$arch
+
+# Sweden (SE)
+# * By: Academic Computer Club in Umeå (accum.se)
+#Server = https://se-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://se-2-mirror.chaotic.cx/$repo/$arch
+
+# Switzerland (CH)
+# * By: a0xz
+#Server = https://ch-1-mirror.chaotic.cx/$repo/$arch
+
+# Taiwan (TW)
+# * By: a0xz
+#Server = https://tw-1-mirror.chaotic.cx/$repo/$arch
+
+# Thailand (TH)
+# * By: a0xz
+#Server = https://th-1-mirror.chaotic.cx/$repo/$arch
+
+# United Arab Emirates (AE)
+# * By: a0xz
+#Server = https://ae-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://ae-2-mirror.chaotic.cx/$repo/$arch
+
+# United Kingdom (GB)
+# * By: Wilbur <github.com/ThisCatLikesCrypto>
+#Server = https://gb-1-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://gb-2-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://gb-3-mirror.chaotic.cx/$repo/$arch
+
+# United States of America (US)
+# * By: Technetium1 <github.com/Technetium1>
+#Server = https://us-mi-mirror.chaotic.cx/$repo/$arch
+# * By: ash <t.me/the_ashh>
+#Server = https://us-ut-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-hi-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-nv-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-fl-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-ny-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-az-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-or-mirror.chaotic.cx/$repo/$arch
+# * By: a0xz
+#Server = https://us-ca-mirror.chaotic.cx/$repo/$arch
+
+# Vietnam (VN)
+# * By: <t.me/meowice>
+#Server = https://vn-1-mirror.chaotic.cx/$repo/$arch
diff --git a/releng/airootfs/etc/pacman.d/hooks/reflector-mirrorlist.hook b/releng/airootfs/etc/pacman.d/hooks/reflector-mirrorlist.hook
new file mode 100644
index 0000000..312c41e
--- /dev/null
+++ b/releng/airootfs/etc/pacman.d/hooks/reflector-mirrorlist.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = Package
+Target = pacman-mirrorlist
+
+[Action]
+Description = Updating mirrorlist with reflector (Hungary)...
+When = PostTransaction
+Depends = reflector
+Exec = /usr/bin/reflector -c HU --protocol https --sort rate --latest 20 --download-timeout 5 --threads 20 --save /etc/pacman.d/mirrorlist
diff --git a/releng/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook b/releng/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook
new file mode 100644
index 0000000..8dfb943
--- /dev/null
+++ b/releng/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook
@@ -0,0 +1,18 @@
+# remove from airootfs!
+# As a workaround for https://bugs.archlinux.org/task/49347 , remove pacman hooks specific to the ISO build process.
+# If not, they would be used when pacstrap is run in the live environment.
+
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Type = Package
+Target = *
+
+[Action]
+Description = Work around FS#49347 by removing custom pacman hooks that are only required during ISO build...
+When = PostTransaction
+Depends = sh
+Depends = coreutils
+Depends = grep
+Exec = /bin/sh -c "rm -- $(grep -Frl 'remove from airootfs' /etc/pacman.d/hooks/)"
diff --git a/releng/airootfs/etc/pacman.d/mirrorlist b/releng/airootfs/etc/pacman.d/mirrorlist
new file mode 100644
index 0000000..71078e6
--- /dev/null
+++ b/releng/airootfs/etc/pacman.d/mirrorlist
@@ -0,0 +1,111 @@
+
+
+## France
+Server = http://mirror.trap.moe/archlinux/$repo/os/$arch
+Server = http://mirror.cyberbits.eu/archlinux/$repo/os/$arch
+Server = http://archlinux.mailtunnel.eu/$repo/os/$arch
+Server = https://mirror.cyberbits.eu/archlinux/$repo/os/$arch
+Server = https://archlinux.mailtunnel.eu/$repo/os/$arch
+Server = https://mirror.theo546.fr/archlinux/$repo/os/$arch
+Server = http://mirror.theo546.fr/archlinux/$repo/os/$arch
+Server = http://fr.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = https://fr.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = https://f.matthieul.dev/mirror/archlinux/$repo/os/$arch
+Server = http://f.matthieul.dev/mirror/archlinux/$repo/os/$arch
+Server = https://mirror.trap.moe/archlinux/$repo/os/$arch
+Server = https://mirror.peeres-telecom.fr/archlinux/$repo/os/$arch
+Server = https://mirrors.jtremesay.org/archlinux/$repo/os/$arch
+Server = http://mirror.peeres-telecom.fr/archlinux/$repo/os/$arch
+Server = http://archlinux.datagr.am/$repo/os/$arch
+Server = https://arch.syxpi.fr/arch/$repo/os/$arch
+Server = http://archmirror.hogwarts.fr/$repo/os/$arch
+Server = http://arch.yourlabs.org/$repo/os/$arch
+Server = http://mirror.oldsql.cc/archlinux/$repo/os/$arch
+Server = https://mirror.rznet.fr/archlinux/$repo/os/$arch
+Server = http://mirror.rznet.fr/archlinux/$repo/os/$arch
+Server = https://arch.yourlabs.org/$repo/os/$arch
+Server = https://mirror.oldsql.cc/archlinux/$repo/os/$arch
+Server = https://mirror.thekinrar.fr/archlinux/$repo/os/$arch
+Server = http://mirror.bakertelekom.fr/Arch/$repo/os/$arch
+Server = https://mirror.bakertelekom.fr/Arch/$repo/os/$arch
+Server = http://arch.syxpi.fr/arch/$repo/os/$arch
+Server = https://archmirror.hogwarts.fr/$repo/os/$arch
+Server = https://mirror.smayzy.ovh/archlinux/$repo/os/$arch
+Server = http://mirror.lastmikoi.net/archlinux/$repo/os/$arch
+Server = https://mirrors.eric.ovh/arch/$repo/os/$arch
+Server = http://mir.archlinux.fr/$repo/os/$arch
+Server = http://mirrors.gandi.net/archlinux/$repo/os/$arch
+Server = https://mirrors.gandi.net/archlinux/$repo/os/$arch
+Server = http://mirror.archlinux.ikoula.com/archlinux/$repo/os/$arch
+Server = http://mirror.its-tps.fr/archlinux/$repo/os/$arch
+Server = https://mirror.its-tps.fr/archlinux/$repo/os/$arch
+Server = https://mirror.wormhole.eu/archlinux/$repo/os/$arch
+Server = http://archlinux.mirrors.ovh.net/archlinux/$repo/os/$arch
+Server = https://archlinux.mirrors.ovh.net/archlinux/$repo/os/$arch
+Server = http://ftp.u-strasbg.fr/linux/distributions/archlinux/$repo/os/$arch
+Server = https://elda.asgardius.company/archlinux/$repo/os/$arch
+
+
+## Netherlands
+Server = http://ams.nl.mirrors.bjg.at/arch/$repo/os/$arch
+Server = https://ams.nl.mirrors.bjg.at/arch/$repo/os/$arch
+Server = http://ftp.nluug.nl/os/Linux/distr/archlinux/$repo/os/$arch
+Server = https://nl.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = http://nl.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = http://mirror.ams1.nl.leaseweb.net/archlinux/$repo/os/$arch
+Server = https://mirror.ams1.nl.leaseweb.net/archlinux/$repo/os/$arch
+Server = http://mirror.nl.cdn-perfprod.com/archlinux/$repo/os/$arch
+Server = http://ftp.snt.utwente.nl/pub/os/linux/archlinux/$repo/os/$arch
+Server = http://mirror.cj2.nl/archlinux/$repo/os/$arch
+Server = https://mirror.nl.cdn-perfprod.com/archlinux/$repo/os/$arch
+Server = https://mirror.cj2.nl/archlinux/$repo/os/$arch
+Server = http://archlinux.mirror.wearetriple.com/$repo/os/$arch
+Server = https://archlinux.mirror.wearetriple.com/$repo/os/$arch
+Server = http://mirrors.xtom.nl/archlinux/$repo/os/$arch
+Server = https://mirrors.xtom.nl/archlinux/$repo/os/$arch
+Server = http://mirror.bouwhuis.network/archlinux/$repo/os/$arch
+Server = https://mirror.bouwhuis.network/archlinux/$repo/os/$arch
+Server = https://nl.mirror.flokinet.net/archlinux/$repo/os/$arch
+Server = http://nl.mirror.flokinet.net/archlinux/$repo/os/$arch
+Server = http://arch.mirrors.lavatech.top/$repo/os/$arch
+Server = http://mirror.koddos.net/archlinux/$repo/os/$arch
+Server = https://mirror.mijn.host/archlinux/$repo/os/$arch
+Server = http://mirror.mijn.host/archlinux/$repo/os/$arch
+Server = https://mirror.koddos.net/archlinux/$repo/os/$arch
+Server = https://arch.mirrors.lavatech.top/$repo/os/$arch
+Server = https://archlinux.mirror.liteserver.nl/$repo/os/$arch
+Server = http://archlinux.mirror.liteserver.nl/$repo/os/$arch
+Server = http://mirror.lyrahosting.com/archlinux/$repo/os/$arch
+Server = https://mirror.lyrahosting.com/archlinux/$repo/os/$arch
+Server = https://mirror.iusearchbtw.nl/$repo/os/$arch
+Server = http://mirrors.evoluso.com/archlinux/$repo/os/$arch
+Server = http://mirror.serverion.com/archlinux/$repo/os/$arch
+Server = https://mirror.serverion.com/archlinux/$repo/os/$arch
+
+
+## United Kingdom
+Server = https://london.mirror.pkgbuild.com/$repo/os/$arch
+Server = https://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch
+Server = http://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch
+Server = https://repo.c48.uk/arch/$repo/os/$arch
+Server = https://uk.repo.c48.uk/arch/$repo/os/$arch
+Server = https://gb.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = http://gb.mirrors.cicku.me/archlinux/$repo/os/$arch
+Server = http://mirrors.melbourne.co.uk/archlinux/$repo/os/$arch
+Server = https://mirror.server.net/archlinux/$repo/os/$arch
+Server = http://mirror.server.net/archlinux/$repo/os/$arch
+Server = https://mirrors.melbourne.co.uk/archlinux/$repo/os/$arch
+Server = https://repo.slithery.uk/$repo/os/$arch
+Server = http://mirror.netweaver.uk/archlinux/$repo/os/$arch
+Server = https://mirror.netweaver.uk/archlinux/$repo/os/$arch
+Server = https://mirror.st2projects.com/archlinux/$repo/os/$arch
+Server = http://mirrors.ukfast.co.uk/sites/archlinux.org/$repo/os/$arch
+Server = https://mirrors.ukfast.co.uk/sites/archlinux.org/$repo/os/$arch
+Server = https://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/$arch
+Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/$arch
+Server = http://mirror.marcusn.net/archlinux/$repo/os/$arch
+Server = https://mirror.marcusn.net/archlinux/$repo/os/$arch
+Server = http://mirror.cov.ukservers.com/archlinux/$repo/os/$arch
+Server = https://mirror.cov.ukservers.com/archlinux/$repo/os/$arch
+Server = https://lon.mirror.rackspace.com/archlinux/$repo/os/$arch
+Server = http://lon.mirror.rackspace.com/archlinux/$repo/os/$arch
diff --git a/releng/airootfs/etc/passwd b/releng/airootfs/etc/passwd
new file mode 100644
index 0000000..e997f05
--- /dev/null
+++ b/releng/airootfs/etc/passwd
@@ -0,0 +1,2 @@
+root:x:0:0:root:/root:/usr/bin/zsh
+raveos:x:1000:1000::/home/raveos:/usr/bin/bash
diff --git a/releng/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/releng/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules
new file mode 100644
index 0000000..cca8039
--- /dev/null
+++ b/releng/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules
@@ -0,0 +1,8 @@
+/* Allow members of the wheel group to execute any actions
+ * without password authentication, similar to "sudo NOPASSWD:"
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.isInGroup("wheel")) {
+ return polkit.Result.YES;
+ }
+});
diff --git a/releng/airootfs/etc/profile.d/autostart.sh b/releng/airootfs/etc/profile.d/autostart.sh
new file mode 100755
index 0000000..1dfb4a5
--- /dev/null
+++ b/releng/airootfs/etc/profile.d/autostart.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
+ startx
+fi
diff --git a/releng/airootfs/etc/profile.d/raveos-fastfetch.sh b/releng/airootfs/etc/profile.d/raveos-fastfetch.sh
new file mode 100644
index 0000000..c97dc67
--- /dev/null
+++ b/releng/airootfs/etc/profile.d/raveos-fastfetch.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# RaveOS terminal greeting
+# Guard: prevent double execution (login shell profile.d + .bashrc)
+[[ -n "$_RAVEOS_GREETING_DONE" ]] && return 2>/dev/null
+_RAVEOS_GREETING_DONE=1
+
+if command -v fastfetch &>/dev/null; then
+ if [[ "$TERM" == "xterm-kitty" ]]; then
+ _rows=$(tput lines 2>/dev/null || echo 40)
+ _logo_h=$(( _rows * 40 / 100 ))
+ (( _logo_h < 8 )) && _logo_h=8
+ (( _logo_h > 24 )) && _logo_h=24
+ fastfetch --config ~/.config/fastfetch/config-kitty.jsonc --logo-height "$_logo_h"
+ unset _rows _logo_h
+ else
+ fastfetch
+ fi
+fi
diff --git a/releng/airootfs/etc/resolv.conf b/releng/airootfs/etc/resolv.conf
new file mode 100644
index 0000000..8dda3fc
--- /dev/null
+++ b/releng/airootfs/etc/resolv.conf
@@ -0,0 +1 @@
+nameserver 1.1.1.1
diff --git a/releng/airootfs/etc/shadow b/releng/airootfs/etc/shadow
new file mode 100644
index 0000000..824230b
--- /dev/null
+++ b/releng/airootfs/etc/shadow
@@ -0,0 +1,2 @@
+root::14871::::::
+raveos:$6$jcfVB0VnKJYxHo7t$j/U9j8Civmx0O9f/mb1.nzw.BZLISLEKS.QwgOXNKWGpkLVisvP5Zfs4lcuzXglZBUAxj9oknnPBiCZOIgd25.:14871::::::
diff --git a/releng/airootfs/etc/skel/.bashrc b/releng/airootfs/etc/skel/.bashrc
new file mode 100644
index 0000000..2d2fb5e
--- /dev/null
+++ b/releng/airootfs/etc/skel/.bashrc
@@ -0,0 +1,16 @@
+#
+# ~/.bashrc
+#
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+alias ls='ls --color=auto'
+alias grep='grep --color=auto'
+PS1='[\u@\h \W]\$ '
+
+# >>> RaveOS terminal greeting >>>
+if [[ -f /etc/profile.d/raveos-fastfetch.sh ]]; then
+ source /etc/profile.d/raveos-fastfetch.sh
+fi
+# <<< RaveOS terminal greeting <<<
diff --git a/releng/airootfs/etc/skel/.config/fastfetch/config-kitty.jsonc b/releng/airootfs/etc/skel/.config/fastfetch/config-kitty.jsonc
new file mode 100644
index 0000000..d99f7a7
--- /dev/null
+++ b/releng/airootfs/etc/skel/.config/fastfetch/config-kitty.jsonc
@@ -0,0 +1,43 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "source": "~/.config/fastfetch/raveos-logo.png",
+ "type": "kitty-direct",
+ "height": 16,
+ "padding": {
+ "top": 1,
+ "left": 2,
+ "right": 2
+ }
+ },
+ "display": {
+ "separator": " → ",
+ "color": {
+ "keys": "green",
+ "title": "cyan"
+ }
+ },
+ "modules": [
+ { "type": "custom", "format": "\u001b[1;32mRaveOS \u001b[0;36m" },
+ "separator",
+ { "type": "os", "key": "OS" },
+ { "type": "kernel", "key": "Kernel" },
+ { "type": "uptime", "key": "Uptime" },
+ { "type": "packages", "key": "Packages" },
+ { "type": "shell", "key": "Shell" },
+ { "type": "de", "key": "DE" },
+ { "type": "wm", "key": "WM" },
+ { "type": "terminal", "key": "Terminal" },
+ "separator",
+ { "type": "cpu", "key": "CPU" },
+ { "type": "gpu", "key": "GPU" },
+ { "type": "memory", "key": "RAM" },
+ { "type": "disk", "key": "Disk", "folders": "/" },
+ "separator",
+ { "type": "display", "key": "Display" },
+ { "type": "theme", "key": "Theme" },
+ { "type": "icons", "key": "Icons" },
+ "break",
+ "colors"
+ ]
+}
diff --git a/releng/airootfs/etc/skel/.config/fastfetch/config.jsonc b/releng/airootfs/etc/skel/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..f5f842d
--- /dev/null
+++ b/releng/airootfs/etc/skel/.config/fastfetch/config.jsonc
@@ -0,0 +1,93 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "source": "~/.config/fastfetch/raveos-logo.txt",
+ "type": "file",
+ "color": {
+ "1": "green",
+ "2": "36",
+ "3": "white"
+ },
+ "padding": {
+ "top": 1,
+ "left": 2,
+ "right": 3
+ }
+ },
+ "display": {
+ "separator": " → ",
+ "color": {
+ "keys": "green",
+ "title": "cyan"
+ }
+ },
+ "modules": [
+ "title",
+ "separator",
+ {
+ "type": "os",
+ "key": "OS"
+ },
+ {
+ "type": "kernel",
+ "key": "Kernel"
+ },
+ {
+ "type": "uptime",
+ "key": "Uptime"
+ },
+ {
+ "type": "packages",
+ "key": "Packages"
+ },
+ {
+ "type": "shell",
+ "key": "Shell"
+ },
+ {
+ "type": "de",
+ "key": "DE"
+ },
+ {
+ "type": "wm",
+ "key": "WM"
+ },
+ {
+ "type": "terminal",
+ "key": "Terminal"
+ },
+ "separator",
+ {
+ "type": "cpu",
+ "key": "CPU"
+ },
+ {
+ "type": "gpu",
+ "key": "GPU"
+ },
+ {
+ "type": "memory",
+ "key": "RAM"
+ },
+ {
+ "type": "disk",
+ "key": "Disk",
+ "folders": "/"
+ },
+ "separator",
+ {
+ "type": "display",
+ "key": "Display"
+ },
+ {
+ "type": "theme",
+ "key": "Theme"
+ },
+ {
+ "type": "icons",
+ "key": "Icons"
+ },
+ "break",
+ "colors"
+ ]
+}
diff --git a/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.png b/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.png
new file mode 100644
index 0000000..93ebb33
--- /dev/null
+++ b/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.png
Binary files differ
diff --git a/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.txt b/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.txt
new file mode 100644
index 0000000..41f87e2
--- /dev/null
+++ b/releng/airootfs/etc/skel/.config/fastfetch/raveos-logo.txt
@@ -0,0 +1,19 @@
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⠀⠀⠀⡀⠀⣰⣾⣿⣿⣷⣄⠀⣠⠀⠀⠀⠀⠀⠀⢀⠄⠀⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠙⣦⣄⡀⠠⡀⠀⣿⡆⠙⣿⣿⣿⡿⠃⢰⣧⠀⣀⠄⢀⣤⡴⠋⠀⠀⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⣀⠀⠑⢮⣙⠛⠂⠙⠀⡅⣹⣄⢸⣿⣿⡇⣠⡏⠁⠈⠉⠐⠟⣉⡵⠊⠀⣠⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠄⢈⣃⡀⠐⠿⣷⣦⣀⢰⣼⣈⣿⣾⣿⣿⣿⣿⢁⣥⡆⣠⣴⣾⠿⠂⢀⣀⠁⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠠⠤⠬⠿⠿⠷⠌⠻⢿⢷⡝⢿⣿⡌⣿⡿⢱⣿⡿⢫⡾⠿⠟⠡⠾⠿⠯⠥⠤⠄⠀⠀⠀⠀
+⠀⠀⠀⠙⠂⠈⠀⠀⠄⠀⠉⠀⠐⠶⢷⣦⣬⡁⠏⠷⢈⣥⣴⠿⠶⠂⠀⠉⠁⠀⠀⠀⠁⠘⠊⠂⠀⠀
+⠀⠀⠀⠀⢀⠄⢠⣴⣶⠀⠀⠀⢀⡀⠀⠉⠙⠃⣠⡄⠘⠉⠁⠀⢀⡀⠀⠀⢠⣶⣦⠀⠀⠀⠀⠀⠀⠀
+⠀⠀⠀⣠⠤⠌⠁⣩⣿⣇⡀⠢⣜⣛⠛⠀⠀⡴⢫⡝⣄⠀⠀⠛⢛⡡⠔⢀⣼⣯⣅⠈⠁⠤⡄⠀⠀⠀
+⠀⠀⠀⢀⡠⢴⠾⠉⢉⣿⣿⣷⣶⣭⣶⣾⡟⣱⣿⣿⡜⢻⣶⣦⣥⣶⣾⣿⣯⡉⠉⠷⡤⢄⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⢀⡴⠂⢚⠟⢉⣾⠿⠛⢙⠉⣠⠈⢹⠇⠁⣄⢈⠋⠛⠿⣷⡉⠿⡓⡐⢦⡀⠀⠁⠀⠀⠀
+⠀⠀⠀⠀⠀⠒⢉⣵⣿⣷⣧⠆⢂⠶⢿⡽⠛⠰⣦⣴⠀⠛⣯⠿⡢⡐⠲⣽⣼⣿⣮⡙⠓⠀⠀⠄⠀⠀
+⠀⠀⢀⣴⠷⠂⣾⣿⠿⠛⣡⣾⡤⠀⠘⠁⢰⣴⣿⣿⣤⠀⠈⠃⠀⢤⣶⣌⠻⢿⣿⣧⠐⠾⣦⡀⠀⠀
+⠀⠀⠀⠀⠀⠘⠉⠀⢠⣼⠏⠋⣠⢠⡄⢀⠻⠉⣿⡿⠈⠟⡄⢰⡀⡀⠻⠹⣦⡀⠀⠉⠃⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠂⠀⠁⠀⡄⡿⠀⢣⠀⠀⠐⡌⢡⠀⠈⢀⡌⠈⢧⠂⠀⠈⠀⠑⠀⠀⠀⠀⠀⠀⠀
+⢠⣤⣤⣤⣤⣄⣰⢠⣤⣴⣦⠟⣥⣦⣀⢳⣦⡆⣴⣦⣶⣴⣾⣄⠀⢈⣷⣶⣶⣦⣄⣄⣠⣴⣶⣦⣤⠀
+⢸⣿⣧⣤⣽⡿⢁⣿⣟⣹⣿⡄⠘⣿⣿⣾⡿⠀⣿⣿⣶⣶⣾⠋⠀⢾⣿⡍⠁⢹⣿⡎⠿⠷⠶⣶⣭⡀
+⠸⣿⠇⠙⢿⡦⢼⡿⠛⠛⢿⣷⠀⠹⣿⡿⠁⠀⢿⣿⣶⣶⣶⠆⠀⠘⠿⢷⣶⠿⠟⠀⠿⢿⣶⡾⠿⠃
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
diff --git a/releng/airootfs/etc/ssh/sshd_config.d/10-archiso.conf b/releng/airootfs/etc/ssh/sshd_config.d/10-archiso.conf
new file mode 100644
index 0000000..6ea7b41
--- /dev/null
+++ b/releng/airootfs/etc/ssh/sshd_config.d/10-archiso.conf
@@ -0,0 +1,3 @@
+# Allow root login using password authentication
+PasswordAuthentication yes
+PermitRootLogin yes
diff --git a/releng/airootfs/etc/sudoers b/releng/airootfs/etc/sudoers
new file mode 100644
index 0000000..faf0e3f
--- /dev/null
+++ b/releng/airootfs/etc/sudoers
@@ -0,0 +1,139 @@
+## sudoers file.
+##
+## This file MUST be edited with the 'visudo' command as root.
+## Failure to use 'visudo' may result in syntax or file permission errors
+## that prevent sudo from running.
+##
+## See the sudoers man page for the details on how to write a sudoers file.
+##
+
+##
+## Host alias specification
+##
+## Groups of machines. These may include host names (optionally with wildcards),
+## IP addresses, network numbers or netgroups.
+# Host_Alias WEBSERVERS = www1, www2, www3
+
+##
+## User alias specification
+##
+## Groups of users. These may consist of user names, uids, Unix groups,
+## or netgroups.
+# User_Alias ADMINS = millert, dowdy, mikef
+
+##
+## Cmnd alias specification
+##
+## Groups of commands. Often used to group related commands together.
+# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
+# /usr/bin/pkill, /usr/bin/top
+#
+# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
+#
+# Cmnd_Alias DEBUGGERS = /usr/bin/gdb, /usr/bin/lldb, /usr/bin/strace, \
+# /usr/bin/truss, /usr/bin/bpftrace, \
+# /usr/bin/dtrace, /usr/bin/dtruss
+#
+# Cmnd_Alias PKGMAN = /usr/bin/apt, /usr/bin/dpkg, /usr/bin/rpm, \
+# /usr/bin/yum, /usr/bin/dnf, /usr/bin/zypper, \
+# /usr/bin/pacman
+
+##
+## Defaults specification
+##
+## Preserve editor environment variables for visudo.
+## To preserve these for all commands, remove the "!visudo" qualifier.
+Defaults!/usr/bin/visudo env_keep += "SUDO_EDITOR EDITOR VISUAL"
+##
+## Use a hard-coded PATH instead of the user's to find commands.
+## This also helps prevent poorly written scripts from running
+## arbitrary commands under sudo.
+Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/bin"
+##
+## You may wish to keep some of the following environment variables
+## when running commands via sudo.
+##
+## Locale settings
+# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
+##
+## Run X applications through sudo; HOME is used to find the
+## .Xauthority file. Note that other programs use HOME to find
+## configuration files and this may lead to privilege escalation!
+# Defaults env_keep += "HOME"
+##
+## X11 resource path settings
+# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
+##
+## Desktop path settings
+# Defaults env_keep += "QTDIR KDEDIR"
+##
+## Allow sudo-run commands to inherit the callers' ConsoleKit session
+# Defaults env_keep += "XDG_SESSION_COOKIE"
+##
+## Uncomment to enable special input methods. Care should be taken as
+## this may allow users to subvert the command being run via sudo.
+# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
+##
+## Uncomment to disable "use_pty" when running commands as root.
+## Commands run as non-root users will run in a pseudo-terminal,
+## not the user's own terminal, to prevent command injection.
+# Defaults>root !use_pty
+##
+## Uncomment to run commands in the background by default.
+## This can be used to prevent sudo from consuming user input while
+## a non-interactive command runs if "use_pty" or I/O logging are
+## enabled. Some commands may not run properly in the background.
+# Defaults exec_background
+##
+## Uncomment to send mail if the user does not enter the correct password.
+# Defaults mail_badpass
+##
+## Uncomment to enable logging of a command's output, except for
+## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
+## Sudo will create up to 2,176,782,336 I/O logs before recycling them.
+## Set maxseq to a smaller number if you don't have unlimited disk space.
+# Defaults log_output
+# Defaults!/usr/bin/sudoreplay !log_output
+# Defaults!/usr/local/bin/sudoreplay !log_output
+# Defaults!REBOOT !log_output
+# Defaults maxseq = 1000
+##
+## Uncomment to disable intercept and log_subcmds for debuggers and
+## tracers. Otherwise, anything that uses ptrace(2) will be unable
+## to run under sudo if intercept_type is set to "trace".
+# Defaults!DEBUGGERS !intercept, !log_subcmds
+##
+## Uncomment to disable intercept and log_subcmds for package managers.
+## Some package scripts run a huge number of commands, which is made
+## slower by these options and also can clutter up the logs.
+# Defaults!PKGMAN !intercept, !log_subcmds
+##
+## Uncomment to disable PAM silent mode. Otherwise messages by PAM
+## modules such as pam_faillock will not be printed.
+# Defaults !pam_silent
+
+##
+## Runas alias specification
+##
+
+##
+## User privilege specification
+##
+root ALL=(ALL:ALL) ALL
+
+## Uncomment to allow members of group wheel to execute any command
+%wheel ALL=(ALL:ALL) ALL
+
+## Same thing without a password
+# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
+
+## Uncomment to allow members of group sudo to execute any command
+# %sudo ALL=(ALL:ALL) ALL
+
+## Uncomment to allow any user to run sudo if they know the password
+## of the user they are running the command as (root by default).
+# Defaults targetpw # Ask for the password of the target user
+# ALL ALL=(ALL:ALL) ALL # WARNING: only use this together with 'Defaults targetpw'
+
+## Read drop-in files from /etc/sudoers.d
+@includedir /etc/sudoers.d
diff --git a/releng/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf b/releng/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf
new file mode 100644
index 0000000..b69850d
--- /dev/null
+++ b/releng/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf
@@ -0,0 +1,2 @@
+[Journal]
+Storage=volatile
diff --git a/releng/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf b/releng/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf
new file mode 100644
index 0000000..f3ecb39
--- /dev/null
+++ b/releng/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf
@@ -0,0 +1,4 @@
+[Login]
+HandleSuspendKey=ignore
+HandleHibernateKey=ignore
+HandleLidSwitch=ignore
diff --git a/releng/airootfs/etc/systemd/network/20-ethernet.network b/releng/airootfs/etc/systemd/network/20-ethernet.network
new file mode 100644
index 0000000..d3a3271
--- /dev/null
+++ b/releng/airootfs/etc/systemd/network/20-ethernet.network
@@ -0,0 +1,24 @@
+[Match]
+# Matching with "Type=ether" causes issues with containers because it also matches virtual Ethernet interfaces (veth*).
+# See https://bugs.archlinux.org/task/70892
+# Instead match by globbing the network interface name.
+Name=en*
+Name=eth*
+
+[Link]
+RequiredForOnline=routable
+
+[Network]
+DHCP=yes
+MulticastDNS=yes
+
+# systemd-networkd does not set per-interface-type default route metrics
+# https://github.com/systemd/systemd/issues/17698
+# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
+# Use values from NetworkManager. From nm_device_get_route_metric_default in
+# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
+[DHCPv4]
+RouteMetric=100
+
+[IPv6AcceptRA]
+RouteMetric=100
diff --git a/releng/airootfs/etc/systemd/network/20-wlan.network.disabled b/releng/airootfs/etc/systemd/network/20-wlan.network.disabled
new file mode 100644
index 0000000..8b70a95
--- /dev/null
+++ b/releng/airootfs/etc/systemd/network/20-wlan.network.disabled
@@ -0,0 +1,20 @@
+[Match]
+Name=wl*
+
+[Link]
+RequiredForOnline=routable
+
+[Network]
+DHCP=yes
+MulticastDNS=yes
+
+# systemd-networkd does not set per-interface-type default route metrics
+# https://github.com/systemd/systemd/issues/17698
+# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
+# Use values from NetworkManager. From nm_device_get_route_metric_default in
+# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
+[DHCPv4]
+RouteMetric=600
+
+[IPv6AcceptRA]
+RouteMetric=600
diff --git a/releng/airootfs/etc/systemd/network/20-wwan.network b/releng/airootfs/etc/systemd/network/20-wwan.network
new file mode 100644
index 0000000..6e1c8dd
--- /dev/null
+++ b/releng/airootfs/etc/systemd/network/20-wwan.network
@@ -0,0 +1,19 @@
+[Match]
+Name=ww*
+
+[Link]
+RequiredForOnline=routable
+
+[Network]
+DHCP=yes
+
+# systemd-networkd does not set per-interface-type default route metrics
+# https://github.com/systemd/systemd/issues/17698
+# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
+# Use values from NetworkManager. From nm_device_get_route_metric_default in
+# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
+[DHCPv4]
+RouteMetric=700
+
+[IPv6AcceptRA]
+RouteMetric=700
diff --git a/releng/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf b/releng/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf
new file mode 100644
index 0000000..0e9ceb4
--- /dev/null
+++ b/releng/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf
@@ -0,0 +1,2 @@
+[Network]
+IPv6PrivacyExtensions=yes
diff --git a/releng/airootfs/etc/systemd/resolved.conf.d/archiso.conf b/releng/airootfs/etc/systemd/resolved.conf.d/archiso.conf
new file mode 100644
index 0000000..636f3bd
--- /dev/null
+++ b/releng/airootfs/etc/systemd/resolved.conf.d/archiso.conf
@@ -0,0 +1,4 @@
+# Default systemd-resolved configuration for archiso
+
+[Resolve]
+MulticastDNS=yes
diff --git a/releng/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator b/releng/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator
new file mode 120000
index 0000000..dc1dc0c
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system-generators/systemd-gpt-auto-generator
@@ -0,0 +1 @@
+/dev/null \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/choose-mirror.service b/releng/airootfs/etc/systemd/system/choose-mirror.service
new file mode 100644
index 0000000..b6a3562
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/choose-mirror.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Choose mirror from the kernel command line
+ConditionKernelCommandLine=mirror
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/choose-mirror
+
+[Install]
+WantedBy=multi-user.target
diff --git a/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service
new file mode 120000
index 0000000..ebc50f0
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cloud-config.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service
new file mode 120000
index 0000000..80fa3c8
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cloud-final.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
new file mode 120000
index 0000000..dd8e9f1
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cloud-init-local.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-main.service b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-main.service
new file mode 120000
index 0000000..875ff73
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-main.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cloud-init-main.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-network.service b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-network.service
new file mode 120000
index 0000000..ae77734
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-network.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/cloud-init-network.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
new file mode 120000
index 0000000..dcf7c8e
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/ModemManager.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service
new file mode 120000
index 0000000..4c158e6
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-networkd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
new file mode 120000
index 0000000..4f6ae34
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-resolved.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.timesync1.service b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.timesync1.service
new file mode 120000
index 0000000..cd00411
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.timesync1.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-timesyncd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
new file mode 100644
index 0000000..038961e
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
@@ -0,0 +1,8 @@
+[Unit]
+Description=Temporary /etc/pacman.d/gnupg directory
+
+[Mount]
+What=tmpfs
+Where=/etc/pacman.d/gnupg
+Type=tmpfs
+Options=mode=0755,noswap
diff --git a/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
new file mode 100644
index 0000000..b9d22eb
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
@@ -0,0 +1,3 @@
+[Service]
+ExecStart=
+ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root - $TERM
diff --git a/releng/airootfs/etc/systemd/system/livecd-alsa-unmuter.service b/releng/airootfs/etc/systemd/system/livecd-alsa-unmuter.service
new file mode 100644
index 0000000..03db4b9
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/livecd-alsa-unmuter.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Unmute All Sound Card Controls For Use With The Live Arch Environment
+# This needs to run after the audio device becomes available.
+Wants=systemd-udev-settle.service
+After=systemd-udev-settle.service sound.target
+ConditionKernelCommandLine=accessibility=on
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/livecd-sound -u
+
+[Install]
+WantedBy=sound.target
diff --git a/releng/airootfs/etc/systemd/system/livecd-talk.service b/releng/airootfs/etc/systemd/system/livecd-talk.service
new file mode 100644
index 0000000..b38df22
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/livecd-talk.service
@@ -0,0 +1,20 @@
+[Unit]
+Description=Screen reader service
+After=livecd-alsa-unmuter.service
+Before=getty@tty1.service
+ConditionKernelCommandLine=accessibility=on
+
+[Service]
+Type=oneshot
+TTYPath=/dev/tty13
+ExecStartPre=/usr/bin/chvt 13
+ExecStart=/usr/local/bin/livecd-sound -p
+ExecStartPost=/usr/bin/chvt 1
+ExecStartPost=systemctl start espeakup.service
+StandardInput=tty
+TTYVHangup=yes
+TTYVTDisallocate=yes
+RemainAfterExit=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service
new file mode 120000
index 0000000..dcf7c8e
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/ModemManager.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/ModemManager.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
new file mode 120000
index 0000000..e874a9b
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service
new file mode 120000
index 0000000..2d8d256
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/choose-mirror.service
@@ -0,0 +1 @@
+../choose-mirror.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
new file mode 120000
index 0000000..20ac7b2
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_fcopy_daemon.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/hv_fcopy_daemon.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
new file mode 120000
index 0000000..a7eac4a
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_kvp_daemon.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/hv_kvp_daemon.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
new file mode 120000
index 0000000..eae19ef
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/hv_vss_daemon.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/hv_vss_daemon.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
new file mode 120000
index 0000000..3625abd
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/iwd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/livecd-talk.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/livecd-talk.service
new file mode 120000
index 0000000..b917481
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/livecd-talk.service
@@ -0,0 +1 @@
+/etc/systemd/system/livecd-talk.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service
new file mode 120000
index 0000000..d09eec6
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/pacman-init.service
@@ -0,0 +1 @@
+../pacman-init.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector-once.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector-once.service
new file mode 120000
index 0000000..d1b7b88
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector-once.service
@@ -0,0 +1 @@
+../reflector-once.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
new file mode 120000
index 0000000..d21ebd9
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/sshd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
new file mode 120000
index 0000000..4f6ae34
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-resolved.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service
new file mode 120000
index 0000000..cb2d560
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vboxservice.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/vboxservice.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
new file mode 120000
index 0000000..e0a11a7
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/vmtoolsd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
new file mode 120000
index 0000000..173f306
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/vmware-vmblock-fuse.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/vmware-vmblock-fuse.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service b/releng/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
new file mode 120000
index 0000000..7d6ad92
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-networkd-wait-online.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/pacman-init.service b/releng/airootfs/etc/systemd/system/pacman-init.service
new file mode 100644
index 0000000..82e0e0f
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/pacman-init.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Initializes Pacman keyring
+Requires=etc-pacman.d-gnupg.mount
+Wants=network-online.target
+After=etc-pacman.d-gnupg.mount time-sync.target network-online.target
+BindsTo=etc-pacman.d-gnupg.mount
+Before=archlinux-keyring-wkd-sync.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/pacman-key --init
+ExecStart=/usr/bin/pacman-key --populate
+
+[Install]
+WantedBy=multi-user.target
diff --git a/releng/airootfs/etc/systemd/system/reflector-once.service b/releng/airootfs/etc/systemd/system/reflector-once.service
new file mode 100644
index 0000000..5a73044
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/reflector-once.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Update pacman mirrorlist with reflector
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/reflector -c HU --protocol https --sort rate --latest 20 --download-timeout 5 --threads 20 --save /etc/pacman.d/mirrorlist
+
+[Install]
+WantedBy=multi-user.target
diff --git a/releng/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket b/releng/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket
new file mode 120000
index 0000000..3897c63
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/sockets.target.wants/pcscd.socket
@@ -0,0 +1 @@
+/usr/lib/systemd/system/pcscd.socket \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket b/releng/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket
new file mode 120000
index 0000000..51942c8
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-networkd.socket \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/sound.target.wants/livecd-alsa-unmuter.service b/releng/airootfs/etc/systemd/system/sound.target.wants/livecd-alsa-unmuter.service
new file mode 120000
index 0000000..98c0fc8
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/sound.target.wants/livecd-alsa-unmuter.service
@@ -0,0 +1 @@
+../livecd-alsa-unmuter.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-time-wait-sync.service b/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-time-wait-sync.service
new file mode 120000
index 0000000..cabf28b
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-time-wait-sync.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-time-wait-sync.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service b/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
new file mode 120000
index 0000000..cd00411
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/system/systemd-timesyncd.service \ No newline at end of file
diff --git a/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf b/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf
new file mode 100644
index 0000000..c9f9bce
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf
@@ -0,0 +1,6 @@
+# Allow systemd-networkd-wait-online to succeed with one interface, otherwise, if multiple network interfaces exist,
+# network-online.target gets needlessly delayed.
+# See https://wiki.archlinux.org/title/systemd-networkd#systemd-networkd-wait-online
+[Service]
+ExecStart=
+ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any
diff --git a/releng/airootfs/etc/systemd/system/wpa_supplicant.service b/releng/airootfs/etc/systemd/system/wpa_supplicant.service
new file mode 120000
index 0000000..dc1dc0c
--- /dev/null
+++ b/releng/airootfs/etc/systemd/system/wpa_supplicant.service
@@ -0,0 +1 @@
+/dev/null \ No newline at end of file