commit f3002f5898011f69ccbc84d12671db1672633a5d Author: airmancooma Date: Wed Mar 19 22:24:02 2025 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..6add2fd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +RaveOS Base iso build file-ok. diff --git a/arch-iso-builder.sh b/arch-iso-builder.sh new file mode 100755 index 0000000..6196798 --- /dev/null +++ b/arch-iso-builder.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# Exit on error +set -e + +################################################################################################################## +# Custom Arch ISO Builder Script +################################################################################################################## + +# Get absolute path of script directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Check if running on btrfs +if lsblk -f | grep btrfs > /dev/null 2>&1; then + echo "Warning: Building on BTRFS filesystem. Make backups before continuing." + read -p "Press Enter to continue... CTRL + C to stop" +fi + +# Setting general parameters +buildFolder="$SCRIPT_DIR/build" +outFolder="$SCRIPT_DIR/out" + +echo "################################################################" +echo "Build folder: $buildFolder" +echo "Out folder : $outFolder" +echo "################################################################" + +# Check if archiso is installed +if ! pacman -Qi archiso &> /dev/null; then + echo "Installing archiso..." + sudo pacman -S --noconfirm archiso +fi + +# Make mkarchiso verbose +sudo sed -i 's/quiet="y"/quiet="n"/g' /usr/bin/mkarchiso + +echo "Cleaning build environment..." +[ -d "$buildFolder" ] && sudo rm -rf "$buildFolder" +mkdir -p "$buildFolder" + +echo "Copying releng folder to build directory..." +cp -r "$SCRIPT_DIR/releng" "$buildFolder/" + +#echo "Cleaning pacman cache..." +#yes | sudo pacman -Scc + +echo "Creating output directory..." +mkdir -p "$outFolder" + +echo "Building ISO..." +cd "$buildFolder/releng" +sudo mkarchiso -v -w "$buildFolder" -o "$outFolder" "$PWD" + +# Save package list +echo "Saving package list..." +rename=$(date +%Y-%m-%d) +cp "$buildFolder/iso/arch/pkglist.x86_64.txt" "$outFolder/archlinux-$rename-pkglist.txt" + +echo "Cleaning build environment..." +[ -d "$buildFolder" ] && sudo rm -rf "$buildFolder" + +sudo chown -R $USER:$GROUP "$outFolder" + +echo "################################################################" +echo "DONE" +echo "Check your out folder: $outFolder" +echo "################################################################" diff --git a/pkgs/calamares-3.3.14-1-x86_64.pkg.tar.zst b/pkgs/calamares-3.3.14-1-x86_64.pkg.tar.zst new file mode 100644 index 0000000..2f8106f Binary files /dev/null and b/pkgs/calamares-3.3.14-1-x86_64.pkg.tar.zst differ diff --git a/pkgs/custom.db b/pkgs/custom.db new file mode 120000 index 0000000..2ca137e --- /dev/null +++ b/pkgs/custom.db @@ -0,0 +1 @@ +custom.db.tar.gz \ No newline at end of file diff --git a/pkgs/custom.db.tar.gz b/pkgs/custom.db.tar.gz new file mode 100644 index 0000000..7d94251 Binary files /dev/null and b/pkgs/custom.db.tar.gz differ diff --git a/pkgs/custom.files b/pkgs/custom.files new file mode 120000 index 0000000..3ac51f6 --- /dev/null +++ b/pkgs/custom.files @@ -0,0 +1 @@ +custom.files.tar.gz \ No newline at end of file diff --git a/pkgs/custom.files.tar.gz b/pkgs/custom.files.tar.gz new file mode 100644 index 0000000..f814d76 Binary files /dev/null and b/pkgs/custom.files.tar.gz differ diff --git a/pkgs/flatseal-2.3.0-1-any.pkg.tar.zst b/pkgs/flatseal-2.3.0-1-any.pkg.tar.zst new file mode 100644 index 0000000..d8f8ec8 Binary files /dev/null and b/pkgs/flatseal-2.3.0-1-any.pkg.tar.zst differ diff --git a/pkgs/libpamac-aur-11.7.2-2-x86_64.pkg.tar.zst b/pkgs/libpamac-aur-11.7.2-2-x86_64.pkg.tar.zst new file mode 100644 index 0000000..b319dc7 Binary files /dev/null and b/pkgs/libpamac-aur-11.7.2-2-x86_64.pkg.tar.zst differ diff --git a/pkgs/pamac-aur-11.7.2-3-x86_64.pkg.tar.zst b/pkgs/pamac-aur-11.7.2-3-x86_64.pkg.tar.zst new file mode 100644 index 0000000..6f745a4 Binary files /dev/null and b/pkgs/pamac-aur-11.7.2-3-x86_64.pkg.tar.zst differ diff --git a/pkgs/yay-bin-12.4.2-1-x86_64.pkg.tar.zst b/pkgs/yay-bin-12.4.2-1-x86_64.pkg.tar.zst new file mode 100644 index 0000000..ad4296c Binary files /dev/null and b/pkgs/yay-bin-12.4.2-1-x86_64.pkg.tar.zst differ diff --git a/releng/airootfs/etc/bash_completion.d/rave-comp.sh b/releng/airootfs/etc/bash_completion.d/rave-comp.sh new file mode 100644 index 0000000..b95301d --- /dev/null +++ b/releng/airootfs/etc/bash_completion.d/rave-comp.sh @@ -0,0 +1,3 @@ +#/usr/bin/env bash + +complete -W "install install-local remove purge search update upgrade full-upgrade autoclean clean autoremove list-installed show install-flatpak update-flatpak remove-flatpak search-flatpak init" rave 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..d8419cc --- /dev/null +++ b/releng/airootfs/etc/group @@ -0,0 +1,17 @@ +root:x:0:root +sys:x:3:bin,liveuser +network:x:90:liveuser +power:x:98:liveuser +adm:x:999:liveuser +wheel:x:998:liveuser +uucp:x:987:liveuser +optical:x:990:liveuser +rfkill:x:983:liveuser +video:x:986:liveuser +storage:x:988:liveuser +audio:x:995:liveuser +users:x:985:liveuser +nopasswdlogin:x:966:liveuser +autologin:x:967:liveuser +plugdev:x:46:liveuser +liveuser:x:1000: diff --git a/releng/airootfs/etc/gshadow b/releng/airootfs/etc/gshadow new file mode 100644 index 0000000..8bf2275 --- /dev/null +++ b/releng/airootfs/etc/gshadow @@ -0,0 +1,16 @@ +root:::root +sys:!!::liveuser +network:!!::liveuser +power:!!::liveuser +adm:!!::liveuser +wheel:!!::liveuser +uucp:!!::liveuser +optical:!!::liveuser +rfkill:!!::liveuser +video:!!::liveuser +storage:!!::liveuser +audio:!!::liveuser +users:!!::liveuser +nopasswdlogin:!::liveuser +autologin:!::liveuser +liveuser:!:: diff --git a/releng/airootfs/etc/hostname b/releng/airootfs/etc/hostname new file mode 100644 index 0000000..8a2429b --- /dev/null +++ b/releng/airootfs/etc/hostname @@ -0,0 +1 @@ +raveos-machine 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 b/releng/airootfs/etc/mkinitcpio.conf new file mode 100644 index 0000000..be5c1ac --- /dev/null +++ b/releng/airootfs/etc/mkinitcpio.conf @@ -0,0 +1,67 @@ +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES=(piix ide_disk reiserfs) +MODULES=() + +# BINARIES +# This setting includes any additional binaries a given user may +# wish into the CPIO image. This is run last, so it may be used to +# override the actual binaries included by a given hook +# BINARIES are dependency parsed, so you may safely ignore libraries +BINARIES=() + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in any way. This is useful for config files. +FILES=() + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H ' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +## This setup specifies all modules in the MODULES setting above. +## No raid, lvm2, or encrypted root is needed. +# HOOKS=(base) +# +## This setup will autodetect all modules for your system and should +## work as a sane default +# HOOKS=(base udev autodetect block filesystems) +# +## This setup will generate a 'full' image which supports most systems. +## No autodetection is done. +# HOOKS=(base udev block filesystems) +# +## This setup assembles a pata mdadm array with an encrypted root FS. +## Note: See 'mkinitcpio -H mdadm' for more information on raid devices. +# HOOKS=(base udev block mdadm encrypt filesystems) +# +## This setup loads an lvm2 volume group on a usb device. +# HOOKS=(base udev block lvm2 filesystems) +# +## NOTE: If you have /usr on a separate partition, you MUST include the +# usr, fsck and shutdown hooks. +HOOKS=(base udev modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard) + +# COMPRESSION +# Use this to compress the initramfs image. By default, gzip compression +# is used. Use 'cat' to create an uncompressed image. +#COMPRESSION="gzip" +#COMPRESSION="bzip2" +#COMPRESSION="lzma" +#COMPRESSION="xz" +#COMPRESSION="lzop" +#COMPRESSION="lz4" +COMPRESSION="zstd" + +# COMPRESSION_OPTIONS +# Additional options for the compressor +#COMPRESSION_OPTIONS=() 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-zen.preset b/releng/airootfs/etc/mkinitcpio.d/linux-zen.preset new file mode 100644 index 0000000..55096d9 --- /dev/null +++ b/releng/airootfs/etc/mkinitcpio.d/linux-zen.preset @@ -0,0 +1,8 @@ +# mkinitcpio preset file for the 'linux' package on archiso + +PRESETS=('archiso') + +ALL_kver='/boot/vmlinuz-linux-zen' +ALL_config='/etc/mkinitcpio.conf' + +archiso_image="/boot/initramfs-linux-zen.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..0eae70c --- /dev/null +++ b/releng/airootfs/etc/modprobe.d/broadcom-wl.conf @@ -0,0 +1,7 @@ +# 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. diff --git a/releng/airootfs/etc/os-release b/releng/airootfs/etc/os-release new file mode 100644 index 0000000..afc6b45 --- /dev/null +++ b/releng/airootfs/etc/os-release @@ -0,0 +1,12 @@ +NAME="RaveOS XXX 1.0" +PRETTY_NAME="RaveOS XXX 1.0" +ID=arch +BUILD_ID=rolling +ANSI_COLOR="38;2;255;0;255" +HOME_URL="https://rp1.hu/" +DOCUMENTATION_URL="https://git.rp1.hu/explore/repos" +SUPPORT_URL="https://git.rp1.hu/explore/repos" +BUG_REPORT_URL="https://git.rp1.hu/explore/repos" +LOGO=raveos-logo +VERSION="1.0" +VERSION_ID="1.0" diff --git a/releng/airootfs/etc/pacman.conf b/releng/airootfs/etc/pacman.conf new file mode 100644 index 0000000..b6b1b16 --- /dev/null +++ b/releng/airootfs/etc/pacman.conf @@ -0,0 +1,101 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# +# 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 = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#NoProgressBar +#CheckSpace +#VerbosePkgLists +ParallelDownloads = 8 +#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 diff --git a/releng/airootfs/etc/pacman.d/gnupg/gpg.conf b/releng/airootfs/etc/pacman.d/gnupg/gpg.conf new file mode 100644 index 0000000..fa7f15f --- /dev/null +++ b/releng/airootfs/etc/pacman.d/gnupg/gpg.conf @@ -0,0 +1,13 @@ +no-greeting +no-permission-warning +lock-never +keyserver-options timeout=10 +keyserver-options import-clean +keyserver-options no-self-sigs-only + +keyserver hkp://keyserver.ubuntu.com:80 +#keyserver hkp://pool.sks-keyservers.net:80 +#keyserver hkps://hkps.pool.sks-keyservers.net:443 +#keyserver hkp://ipv4.pool.sks-keyservers.net:11371 + + diff --git a/releng/airootfs/etc/pacman.d/hooks/install-calamares.hook b/releng/airootfs/etc/pacman.d/hooks/install-calamares.hook new file mode 100644 index 0000000..79cd69f --- /dev/null +++ b/releng/airootfs/etc/pacman.d/hooks/install-calamares.hook @@ -0,0 +1,9 @@ +[Trigger] +Operation = Install +Type = Package +Target = bash + +[Action] +Description = Installing Calamares... +When = PostTransaction +Exec = /root/install-calamares.sh diff --git a/releng/airootfs/etc/pacman.d/hooks/settings.hook b/releng/airootfs/etc/pacman.d/hooks/settings.hook new file mode 100644 index 0000000..d72a88b --- /dev/null +++ b/releng/airootfs/etc/pacman.d/hooks/settings.hook @@ -0,0 +1,9 @@ +[Trigger] +Operation = Install +Type = Package +Target = bash + +[Action] +Description = Installing RaveOS Settings... +When = PostTransaction +Exec = /root/ros-settings.sh diff --git a/releng/airootfs/etc/pacman.d/hooks/theme-config.hook b/releng/airootfs/etc/pacman.d/hooks/theme-config.hook new file mode 100644 index 0000000..9e734dc --- /dev/null +++ b/releng/airootfs/etc/pacman.d/hooks/theme-config.hook @@ -0,0 +1,9 @@ +[Trigger] +Type = Package +Operation = Install +Target = bash + +[Action] +Description = Configuring GTK themes for live user... +When = PostTransaction +Exec = /root/configure-theme.sh diff --git a/releng/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook b/releng/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook new file mode 100644 index 0000000..342aa95 --- /dev/null +++ b/releng/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook @@ -0,0 +1,13 @@ +# remove from airootfs! +[Trigger] +Operation = Install +Operation = Upgrade +Type = Package +Target = pacman-mirrorlist + +[Action] +Description = Uncommenting all mirrors in /etc/pacman.d/mirrorlist... +When = PostTransaction +Depends = pacman-mirrorlist +Depends = sed +Exec = /usr/bin/sed -i "s/#Server/Server/g" /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..b54c32f --- /dev/null +++ b/releng/airootfs/etc/pacman.d/mirrorlist @@ -0,0 +1,1105 @@ +## +## Arch Linux repository mirrorlist +## Generated on 2025-01-20 +## + +## Worldwide +#Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch +#Server = https://ftpmirror.infania.net/mirror/archlinux/$repo/os/$arch +#Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch + +## Albania +#Server = http://al.arch.niranjan.co/$repo/os/$arch +#Server = https://al.arch.niranjan.co/$repo/os/$arch + +## Australia +#Server = https://mirror.aarnet.edu.au/pub/archlinux/$repo/os/$arch +#Server = http://au.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://au.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch +#Server = https://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch +#Server = http://gsl-syd.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://gsl-syd.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://sydney.mirror.pkgbuild.com/$repo/os/$arch +#Server = http://ftp.iinet.net.au/pub/archlinux/$repo/os/$arch +#Server = http://mirror.internode.on.net/pub/archlinux/$repo/os/$arch +#Server = https://au.arch.niranjan.co/$repo/os/$arch +#Server = http://syd.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://syd.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = http://ftp.swin.edu.au/archlinux/$repo/os/$arch + +## Austria +#Server = http://mirror.alwyzon.net/archlinux/$repo/os/$arch +#Server = https://mirror.alwyzon.net/archlinux/$repo/os/$arch +#Server = http://at.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://at.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.digitalnova.at/archlinux/$repo/os/$arch +#Server = http://mirror.easyname.at/archlinux/$repo/os/$arch +#Server = https://at.arch.mirror.kescher.at/$repo/os/$arch +#Server = http://mirror.reisenbauer.ee/archlinux/$repo/os/$arch +#Server = https://mirror.reisenbauer.ee/archlinux/$repo/os/$arch +#Server = https://at-vie.soulharsh007.dev/archlinux/$repo/os/$arch + +## Azerbaijan +#Server = http://mirror.hostart.az/archlinux/$repo/os/$arch +#Server = https://mirror.hostart.az/archlinux/$repo/os/$arch +#Server = http://mirror.yer.az/archlinux/$repo/os/$arch +#Server = https://mirror.yer.az/archlinux/$repo/os/$arch + +## Bangladesh +#Server = http://mirror.xeonbd.com/archlinux/$repo/os/$arch +#Server = https://mirror.xeonbd.com/archlinux/$repo/os/$arch + +## Belarus +#Server = http://ftp.byfly.by/pub/archlinux/$repo/os/$arch +#Server = http://mirror.datacenter.by/pub/archlinux/$repo/os/$arch + +## Belgium +#Server = http://archlinux.cu.be/$repo/os/$arch +#Server = http://mirror.jonas-prz.be/$repo/os/$arch +#Server = https://mirror.jonas-prz.be/$repo/os/$arch +#Server = http://archlinux.mirror.kangaroot.net/$repo/os/$arch +#Server = http://mirror.tiguinet.net/arch/$repo/os/$arch +#Server = https://mirror.tiguinet.net/arch/$repo/os/$arch + +## Bosnia and Herzegovina +#Server = http://archlinux.mirror.ba/$repo/os/$arch + +## Brazil +#Server = http://archlinux.c3sl.ufpr.br/$repo/os/$arch +#Server = https://archlinux.c3sl.ufpr.br/$repo/os/$arch +#Server = http://www.caco.ic.unicamp.br/archlinux/$repo/os/$arch +#Server = https://www.caco.ic.unicamp.br/archlinux/$repo/os/$arch +#Server = http://br.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://br.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://linorg.usp.br/archlinux/$repo/os/$arch +#Server = http://archlinux.pop-es.rnp.br/$repo/os/$arch +#Server = http://mirror.ufam.edu.br/archlinux/$repo/os/$arch +#Server = http://mirror.ufscar.br/archlinux/$repo/os/$arch +#Server = https://mirror.ufscar.br/archlinux/$repo/os/$arch + +## Bulgaria +#Server = http://mirror.host.ag/archlinux/$repo/os/$arch +#Server = http://mirror.telepoint.bg/archlinux/$repo/os/$arch +#Server = https://mirror.telepoint.bg/archlinux/$repo/os/$arch +#Server = http://mirrors.uni-plovdiv.net/archlinux/$repo/os/$arch +#Server = https://mirrors.uni-plovdiv.net/archlinux/$repo/os/$arch + +## Cambodia +#Server = http://mirror.sabay.com.kh/archlinux/$repo/os/$arch +#Server = https://mirror.sabay.com.kh/archlinux/$repo/os/$arch + +## Canada +#Server = http://mirror.0xem.ma/arch/$repo/os/$arch +#Server = https://mirror.0xem.ma/arch/$repo/os/$arch +#Server = http://mirror.accuris.ca/archlinux/$repo/os/$arch +#Server = https://mirror.accuris.ca/archlinux/$repo/os/$arch +#Server = https://arch.mirror.winslow.cloud/$repo/os/$arch +#Server = http://mirror.cedille.club/archlinux/$repo/os/$arch +#Server = http://ca.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://ca.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.colo-serv.net/$repo/os/$arch +#Server = http://mirror.cpsc.ucalgary.ca/mirror/archlinux.org/$repo/os/$arch +#Server = https://mirror.cpsc.ucalgary.ca/mirror/archlinux.org/$repo/os/$arch +#Server = http://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch +#Server = https://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch +#Server = http://mirror2.evolution-host.com/archlinux/$repo/os/$arch +#Server = https://mirror2.evolution-host.com/archlinux/$repo/os/$arch +#Server = http://mirror.its.dal.ca/archlinux/$repo/os/$arch +#Server = http://mirror.quantum5.ca/archlinux/$repo/os/$arch +#Server = https://mirror.quantum5.ca/archlinux/$repo/os/$arch +#Server = http://muug.ca/mirror/archlinux/$repo/os/$arch +#Server = https://muug.ca/mirror/archlinux/$repo/os/$arch +#Server = http://mirrors.pablonara.com/archlinux/$repo/os/$arch +#Server = https://mirrors.pablonara.com/archlinux/$repo/os/$arch +#Server = http://mirror.powerfly.ca/archlinux/$repo/os/$arch +#Server = https://mirror.powerfly.ca/archlinux/$repo/os/$arch +#Server = https://mirror.qctronics.com/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.rafal.ca/$repo/os/$arch +#Server = http://mirror.scd31.com/arch/$repo/os/$arch +#Server = https://mirror.scd31.com/arch/$repo/os/$arch +#Server = http://mirror.xenyth.net/archlinux/$repo/os/$arch +#Server = https://mirror.xenyth.net/archlinux/$repo/os/$arch +#Server = http://mirror.yuri.so/arch/$repo/os/$arch +#Server = https://mirror.yuri.so/arch/$repo/os/$arch + +## Chile +#Server = http://mirror.anquan.cl/archlinux/$repo/os/$arch +#Server = https://mirror.anquan.cl/archlinux/$repo/os/$arch +#Server = http://elmirror.cl/archlinux/$repo/os/$arch +#Server = https://elmirror.cl/archlinux/$repo/os/$arch +#Server = http://mirror.hnd.cl/archlinux/$repo/os/$arch +#Server = https://mirror.hnd.cl/archlinux/$repo/os/$arch +#Server = http://mirror.ufro.cl/archlinux/$repo/os/$arch +#Server = https://mirror.ufro.cl/archlinux/$repo/os/$arch + +## China +#Server = http://mirrors.163.com/archlinux/$repo/os/$arch +#Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch +#Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch +#Server = http://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.hit.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.hit.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.hust.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.hust.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.jcut.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.jcut.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.jlu.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.jlu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.jxust.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.jxust.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.nju.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.nju.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.njupt.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirror.nyist.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirror.nyist.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.qlu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.qvq.net.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.qvq.net.cn/archlinux/$repo/os/$arch +#Server = http://mirror.redrock.team/archlinux/$repo/os/$arch +#Server = https://mirror.redrock.team/archlinux/$repo/os/$arch +#Server = http://mirrors.shanghaitech.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.shanghaitech.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.wsyu.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.wsyu.edu.cn/archlinux/$repo/os/$arch +#Server = https://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch +#Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch + +## Colombia +#Server = http://mirrors.atlas.net.co/archlinux/$repo/os/$arch +#Server = https://mirrors.atlas.net.co/archlinux/$repo/os/$arch +#Server = http://edgeuno-bog2.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://edgeuno-bog2.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://mirrors.udenar.edu.co/archlinux/$repo/os/$arch + +## Croatia +#Server = http://archlinux.iskon.hr/$repo/os/$arch + +## Czechia +#Server = http://mirror.dkm.cz/archlinux/$repo/os/$arch +#Server = https://mirror.dkm.cz/archlinux/$repo/os/$arch +#Server = http://ftp.fi.muni.cz/pub/linux/arch/$repo/os/$arch +#Server = http://ftp.linux.cz/pub/linux/arch/$repo/os/$arch +#Server = https://europe.mirror.pkgbuild.com/$repo/os/$arch +#Server = http://gluttony.sin.cvut.cz/arch/$repo/os/$arch +#Server = https://gluttony.sin.cvut.cz/arch/$repo/os/$arch +#Server = http://mirror.it4i.cz/arch/$repo/os/$arch +#Server = https://mirror.it4i.cz/arch/$repo/os/$arch +#Server = http://mirrors.nic.cz/archlinux/$repo/os/$arch +#Server = https://mirrors.nic.cz/archlinux/$repo/os/$arch +#Server = http://ftp.sh.cvut.cz/arch/$repo/os/$arch +#Server = https://ftp.sh.cvut.cz/arch/$repo/os/$arch +#Server = http://mirror.vpsfree.cz/archlinux/$repo/os/$arch + +## Denmark +#Server = http://mirrors.dotsrc.org/archlinux/$repo/os/$arch +#Server = https://mirrors.dotsrc.org/archlinux/$repo/os/$arch +#Server = http://mirror.group.one/archlinux/$repo/os/$arch +#Server = https://mirror.group.one/archlinux/$repo/os/$arch +#Server = https://mirror.safe-con.dk/archlinux/$repo/os/$arch + +## Ecuador +#Server = http://mirror.cedia.org.ec/archlinux/$repo/os/$arch +#Server = http://mirror.espoch.edu.ec/archlinux/$repo/os/$arch + +## Estonia +#Server = http://mirror.cspacehostings.com/archlinux/$repo/os/$arch +#Server = https://mirror.cspacehostings.com/archlinux/$repo/os/$arch +#Server = http://repo.br.ee/arch/$repo/os/$arch +#Server = https://repo.br.ee/arch/$repo/os/$arch +#Server = http://mirrors.xtom.ee/archlinux/$repo/os/$arch +#Server = https://mirrors.xtom.ee/archlinux/$repo/os/$arch + +## Finland +#Server = http://mirror.arctic.lol/ArchMirror/$repo/os/$arch +#Server = https://mirror.arctic.lol/ArchMirror/$repo/os/$arch +#Server = http://arch.mirror.far.fi/$repo/os/$arch +#Server = http://mirror.hosthink.net/archlinux/$repo/os/$arch +#Server = http://mirrors.janbruckner.de/archlinux/$repo/os/$arch +#Server = https://mirrors.janbruckner.de/archlinux/$repo/os/$arch +#Server = http://mirror.5i.fi/archlinux/$repo/os/$arch +#Server = https://mirror.5i.fi/archlinux/$repo/os/$arch +#Server = https://mirror1.sl-chat.ru/archlinux/$repo/os/$arch +#Server = https://mirror.srv.fail/archlinux/$repo/os/$arch +#Server = http://mirror.wuki.li/archlinux/$repo/os/$arch +#Server = https://mirror.wuki.li/archlinux/$repo/os/$arch +#Server = http://arch.yhtez.xyz/$repo/os/$arch +#Server = https://arch.yhtez.xyz/$repo/os/$arch + +## France +#Server = http://mirror.archlinux.ikoula.com/archlinux/$repo/os/$arch +#Server = https://elda.asgardius.company/archlinux/$repo/os/$arch +#Server = http://archlinux.mirrors.benatherton.com/$repo/os/$arch +#Server = http://fr.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://fr.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.cyberbits.eu/archlinux/$repo/os/$arch +#Server = https://mirror.cyberbits.eu/archlinux/$repo/os/$arch +#Server = http://archlinux.datagr.am/$repo/os/$arch +#Server = https://mirrors.eric.ovh/arch/$repo/os/$arch +#Server = http://mirrors.gandi.net/archlinux/$repo/os/$arch +#Server = https://mirrors.gandi.net/archlinux/$repo/os/$arch +#Server = http://archmirror.hogwarts.fr/$repo/os/$arch +#Server = https://archmirror.hogwarts.fr/$repo/os/$arch +#Server = https://mirror.ibakerserver.pt/Arch/$repo/os/$arch +#Server = http://mirror.its-tps.fr/archlinux/$repo/os/$arch +#Server = https://mirror.its-tps.fr/archlinux/$repo/os/$arch +#Server = http://mirror.jordanrey.me/archlinux/$repo/os/$arch +#Server = https://mirror.jordanrey.me/archlinux/$repo/os/$arch +#Server = https://mirrors.jtremesay.org/archlinux/$repo/os/$arch +#Server = https://arch.juline.tech/$repo/os/$arch +#Server = http://mirroir.labhouse.fr/arch/$repo/os/$arch +#Server = https://mirroir.labhouse.fr/arch/$repo/os/$arch +#Server = http://mirror.lastmikoi.net/archlinux/$repo/os/$arch +#Server = http://archlinux.mailtunnel.eu/$repo/os/$arch +#Server = https://archlinux.mailtunnel.eu/$repo/os/$arch +#Server = https://f.matthieul.dev/mirror/archlinux/$repo/os/$arch +#Server = http://mir.archlinux.fr/$repo/os/$arch +#Server = http://mirrors.celianvdb.fr/archlinux/$repo/os/$arch +#Server = https://mirrors.celianvdb.fr/archlinux/$repo/os/$arch +#Server = http://arch.nimukaito.net/$repo/os/$arch +#Server = https://arch.nimukaito.net/$repo/os/$arch +#Server = http://mirror.oldsql.cc/archlinux/$repo/os/$arch +#Server = https://mirror.oldsql.cc/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://mirror.peeres-telecom.fr/archlinux/$repo/os/$arch +#Server = https://mirror.peeres-telecom.fr/archlinux/$repo/os/$arch +#Server = http://mirror.rznet.fr/archlinux/$repo/os/$arch +#Server = https://mirror.rznet.fr/archlinux/$repo/os/$arch +#Server = http://mirror.spaceint.fr/archlinux/$repo/os/$arch +#Server = https://mirror.spaceint.fr/archlinux/$repo/os/$arch +#Server = http://mirrors.standaloneinstaller.com/archlinux/$repo/os/$arch +#Server = https://mirror.sysa.tech/archlinux/$repo/os/$arch +#Server = http://arch.syxpi.fr/arch/$repo/os/$arch +#Server = https://arch.syxpi.fr/arch/$repo/os/$arch +#Server = https://mirror.thekinrar.fr/archlinux/$repo/os/$arch +#Server = http://mirror.theo546.fr/archlinux/$repo/os/$arch +#Server = https://mirror.theo546.fr/archlinux/$repo/os/$arch +#Server = http://ftp.u-strasbg.fr/linux/distributions/archlinux/$repo/os/$arch +#Server = https://mirror.wormhole.eu/archlinux/$repo/os/$arch +#Server = http://arch.yourlabs.org/$repo/os/$arch +#Server = https://arch.yourlabs.org/$repo/os/$arch + +## Georgia +#Server = http://archlinux.grena.ge/$repo/os/$arch +#Server = https://archlinux.grena.ge/$repo/os/$arch + +## Germany +#Server = http://mirror.23m.com/archlinux/$repo/os/$arch +#Server = https://mirror.23m.com/archlinux/$repo/os/$arch +#Server = http://ftp.agdsn.de/pub/mirrors/archlinux/$repo/os/$arch +#Server = https://ftp.agdsn.de/pub/mirrors/archlinux/$repo/os/$arch +#Server = https://appuals.com/archlinux/$repo/os/$arch +#Server = http://artfiles.org/archlinux.org/$repo/os/$arch +#Server = https://mirror.bethselamin.de/$repo/os/$arch +#Server = http://de.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://de.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.clientvps.com/archlinux/$repo/os/$arch +#Server = https://mirror.clientvps.com/archlinux/$repo/os/$arch +#Server = http://mirror.cmt.de/archlinux/$repo/os/$arch +#Server = https://mirror.cmt.de/archlinux/$repo/os/$arch +#Server = http://os.codefionn.eu/archlinux/$repo/os/$arch +#Server = https://os.codefionn.eu/archlinux/$repo/os/$arch +#Server = https://mirror.dogado.de/archlinux/$repo/os/$arch +#Server = https://mirror.eto.dev/arch/$repo/os/$arch +#Server = http://ftp.fau.de/archlinux/$repo/os/$arch +#Server = https://ftp.fau.de/archlinux/$repo/os/$arch +#Server = https://pkg.fef.moe/archlinux/$repo/os/$arch +#Server = https://dist-mirror.fem.tu-ilmenau.de/archlinux/$repo/os/$arch +#Server = http://mirror.fsrv.services/archlinux/$repo/os/$arch +#Server = https://mirror.fsrv.services/archlinux/$repo/os/$arch +#Server = https://mirror.gnomus.de/$repo/os/$arch +#Server = http://www.gutscheindrache.com/mirror/archlinux/$repo/os/$arch +#Server = http://ftp.gwdg.de/pub/linux/archlinux/$repo/os/$arch +#Server = https://files.hadiko.de/pub/dists/arch/$repo/os/$arch +#Server = https://archlinux.homeinfo.de/$repo/os/$arch +#Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/$arch +#Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch +#Server = http://mirror.hugo-betrugo.de/archlinux/$repo/os/$arch +#Server = https://mirror.hugo-betrugo.de/archlinux/$repo/os/$arch +#Server = http://mirror.informatik.tu-freiberg.de/arch/$repo/os/$arch +#Server = https://mirror.informatik.tu-freiberg.de/arch/$repo/os/$arch +#Server = http://archlinux.mirror.iphh.net/$repo/os/$arch +#Server = http://arch.jensgutermuth.de/$repo/os/$arch +#Server = https://arch.jensgutermuth.de/$repo/os/$arch +#Server = https://de.arch.mirror.kescher.at/$repo/os/$arch +#Server = http://mirror.kumi.systems/archlinux/$repo/os/$arch +#Server = https://mirror.kumi.systems/archlinux/$repo/os/$arch +#Server = https://arch.kurdy.org/$repo/os/$arch +#Server = http://mirror.fra10.de.leaseweb.net/archlinux/$repo/os/$arch +#Server = https://mirror.fra10.de.leaseweb.net/archlinux/$repo/os/$arch +#Server = http://mirror.metalgamer.eu/archlinux/$repo/os/$arch +#Server = https://mirror.metalgamer.eu/archlinux/$repo/os/$arch +#Server = http://mirror.mikrogravitation.org/archlinux/$repo/os/$arch +#Server = https://mirror.mikrogravitation.org/archlinux/$repo/os/$arch +#Server = http://mirror.lcarilla.de/archlinux/$repo/os/$arch +#Server = https://mirror.lcarilla.de/archlinux/$repo/os/$arch +#Server = http://mirror.moson.org/arch/$repo/os/$arch +#Server = https://mirror.moson.org/arch/$repo/os/$arch +#Server = http://mirrors.n-ix.net/archlinux/$repo/os/$arch +#Server = https://mirrors.n-ix.net/archlinux/$repo/os/$arch +#Server = http://mirror.netcologne.de/archlinux/$repo/os/$arch +#Server = https://mirror.netcologne.de/archlinux/$repo/os/$arch +#Server = http://de.arch.niranjan.co/$repo/os/$arch +#Server = https://de.arch.niranjan.co/$repo/os/$arch +#Server = http://mirrors.niyawe.de/archlinux/$repo/os/$arch +#Server = https://mirrors.niyawe.de/archlinux/$repo/os/$arch +#Server = http://mirror.orbit-os.com/archlinux/$repo/os/$arch +#Server = https://mirror.orbit-os.com/archlinux/$repo/os/$arch +#Server = http://packages.oth-regensburg.de/archlinux/$repo/os/$arch +#Server = https://packages.oth-regensburg.de/archlinux/$repo/os/$arch +#Server = http://mirror.pagenotfound.de/archlinux/$repo/os/$arch +#Server = https://mirror.pagenotfound.de/archlinux/$repo/os/$arch +#Server = http://arch.phinau.de/$repo/os/$arch +#Server = https://arch.phinau.de/$repo/os/$arch +#Server = https://mirror.pseudoform.org/$repo/os/$arch +#Server = https://archlinux.richard-neumann.de/$repo/os/$arch +#Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch +#Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch +#Server = http://linux.rz.rub.de/archlinux/$repo/os/$arch +#Server = http://mirror.satis-faction.de/archlinux/$repo/os/$arch +#Server = https://mirror.satis-faction.de/archlinux/$repo/os/$arch +#Server = http://mirror.selfnet.de/archlinux/$repo/os/$arch +#Server = https://mirror.selfnet.de/archlinux/$repo/os/$arch +#Server = https://de-nue.soulharsh007.dev/archlinux/$repo/os/$arch +#Server = http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch +#Server = https://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch +#Server = http://mirror.sunred.org/archlinux/$repo/os/$arch +#Server = https://mirror.sunred.org/archlinux/$repo/os/$arch +#Server = http://archlinux.thaller.ws/$repo/os/$arch +#Server = https://archlinux.thaller.ws/$repo/os/$arch +#Server = http://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/$arch +#Server = http://mirror.ubrco.de/archlinux/$repo/os/$arch +#Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch +#Server = http://mirror.undisclose.de/archlinux/$repo/os/$arch +#Server = https://mirror.undisclose.de/archlinux/$repo/os/$arch +#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/$arch +#Server = http://ftp.uni-hannover.de/archlinux/$repo/os/$arch +#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/$arch +#Server = http://mirror.united-gameserver.de/archlinux/$repo/os/$arch +#Server = https://arch.unixpeople.org/$repo/os/$arch +#Server = http://ftp.wrz.de/pub/archlinux/$repo/os/$arch +#Server = https://ftp.wrz.de/pub/archlinux/$repo/os/$arch +#Server = http://mirror.wtnet.de/archlinux/$repo/os/$arch +#Server = https://mirror.wtnet.de/archlinux/$repo/os/$arch +#Server = http://mirrors.xtom.de/archlinux/$repo/os/$arch +#Server = https://mirrors.xtom.de/archlinux/$repo/os/$arch + +## Greece +#Server = http://ftp.cc.uoc.gr/mirrors/linux/archlinux/$repo/os/$arch +#Server = https://repo.greeklug.gr/data/pub/linux/archlinux/$repo/os/$arch +#Server = http://mirrors.myaegean.gr/linux/archlinux/$repo/os/$arch +#Server = http://ftp.ntua.gr/pub/linux/archlinux/$repo/os/$arch +#Server = http://ftp.otenet.gr/linux/archlinux/$repo/os/$arch + +## Hong Kong +#Server = https://asia.mirror.pkgbuild.com/$repo/os/$arch +#Server = http://mirror-hk.koddos.net/archlinux/$repo/os/$arch +#Server = https://mirror-hk.koddos.net/archlinux/$repo/os/$arch +#Server = http://hkg.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://hkg.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://arch-mirror.wtako.net/$repo/os/$arch +#Server = http://mirror.xtom.com.hk/archlinux/$repo/os/$arch +#Server = https://mirror.xtom.com.hk/archlinux/$repo/os/$arch + +## Hungary +Server = https://ftp.ek-cer.hu/pub/mirrors/ftp.archlinux.org/$repo/os/$arch +Server = http://archmirror.hbit.sztaki.hu/archlinux/$repo/os/$arch +Server = http://nova.quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch +Server = http://quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch +Server = http://super.quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch +Server = https://nova.quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch +Server = https://quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch +Server = https://super.quantum-mirror.hu/mirrors/pub/archlinux/$repo/os/$arch + +## Iceland +#Server = http://is.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = https://is.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = http://mirrors.opensource.is/archlinux/$repo/os/$arch +#Server = https://mirrors.opensource.is/archlinux/$repo/os/$arch +#Server = http://mirror.system.is/arch/$repo/os/$arch +#Server = https://mirror.system.is/arch/$repo/os/$arch + +## India +#Server = http://mirror.4v1.in/archlinux/$repo/os/$arch +#Server = https://mirror.4v1.in/archlinux/$repo/os/$arch +#Server = https://mirrors.abhy.me/archlinux/$repo/os/$arch +#Server = https://mirror.albony.in/archlinux/$repo/os/$arch +#Server = https://mirror.maa.albony.in/archlinux/$repo/os/$arch +#Server = https://mirror.nag.albony.in/archlinux/$repo/os/$arch +#Server = http://in.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://in.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch +#Server = https://mirror.fossindia.ovh/archlinux/$repo/os/$arch +#Server = http://in-mirror.garudalinux.org/archlinux/$repo/os/$arch +#Server = https://in-mirror.garudalinux.org/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.net.in/archlinux/$repo/os/$arch +#Server = https://archlinux.mirror.net.in/archlinux/$repo/os/$arch +#Server = http://in.arch.niranjan.co/$repo/os/$arch +#Server = https://in.arch.niranjan.co/$repo/os/$arch +#Server = http://mirrors.nxtgen.com/archlinux-mirror/$repo/os/$arch +#Server = https://mirrors.nxtgen.com/archlinux-mirror/$repo/os/$arch +#Server = http://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch +#Server = https://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch +#Server = http://mirror.sahil.world/archlinux/$repo/os/$arch +#Server = https://mirror.sahil.world/archlinux/$repo/os/$arch +#Server = http://mirrors.saswata.cc/archlinux/$repo/os/$arch +#Server = https://mirrors.saswata.cc/archlinux/$repo/os/$arch + +## Indonesia +#Server = http://mirror.citrahost.com/archlinux/$repo/os/$arch +#Server = https://mirror.citrahost.com/archlinux/$repo/os/$arch +#Server = http://mirror.cloudweeb.com/archlinux/$repo/os/$arch +#Server = http://mirror.faizuladib.com/archlinux/$repo/os/$arch +#Server = http://mirror.gi.co.id/archlinux/$repo/os/$arch +#Server = https://mirror.gi.co.id/archlinux/$repo/os/$arch +#Server = http://vpsmurah.jagoanhosting.com/archlinux/$repo/os/$arch +#Server = https://vpsmurah.jagoanhosting.com/archlinux/$repo/os/$arch +#Server = http://kebo.pens.ac.id/archlinux/$repo/os/$arch +#Server = http://mirror.labkom.id/archlinux/$repo/os/$arch +#Server = http://mirror.ditatompel.com/archlinux/$repo/os/$arch +#Server = https://mirror.ditatompel.com/archlinux/$repo/os/$arch +#Server = http://mirror.papua.go.id/archlinux/$repo/os/$arch +#Server = https://mirror.papua.go.id/archlinux/$repo/os/$arch +#Server = http://mirror.poliwangi.ac.id/archlinux/$repo/os/$arch +#Server = http://mirror.repository.id/archlinux/$repo/os/$arch +#Server = https://mirror.repository.id/archlinux/$repo/os/$arch +#Server = http://mirror.telkomuniversity.ac.id/archlinux/$repo/os/$arch +#Server = https://mirror.telkomuniversity.ac.id/archlinux/$repo/os/$arch +#Server = https://kacabenggala.uny.ac.id/archlinux/$repo/os/$arch + +## Iran +#Server = http://mirror.arvancloud.ir/archlinux/$repo/os/$arch +#Server = https://mirror.arvancloud.ir/archlinux/$repo/os/$arch +#Server = http://mirror.bardia.tech/archlinux/$repo/os/$arch +#Server = https://mirror.bardia.tech/archlinux/$repo/os/$arch +#Server = https://mirror.hakimi-soft.ir/archlinux/$repo/os/$arch +#Server = http://mirror.hostiran.ir/archlinux/$repo/os/$arch +#Server = https://mirror.hostiran.ir/archlinux/$repo/os/$arch +#Server = http://repo.iut.ac.ir/repo/archlinux/$repo/os/$arch +#Server = http://mirror.nak-mci.ir/arch/$repo/os/$arch + +## Israel +#Server = http://archlinux.interhost.co.il/$repo/os/$arch +#Server = https://archlinux.interhost.co.il/$repo/os/$arch +#Server = http://mirror.isoc.org.il/pub/archlinux/$repo/os/$arch +#Server = https://mirror.isoc.org.il/pub/archlinux/$repo/os/$arch +#Server = https://archlinux.mivzakim.net/$repo/os/$arch + +## Italy +#Server = http://it.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://it.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.garr.it/archlinux/$repo/os/$arch +#Server = https://arch.mirror.hyperbit.it/$repo/os/$arch +#Server = http://archlinux.mirror.server24.net/$repo/os/$arch +#Server = https://archlinux.mirror.server24.net/$repo/os/$arch + +## Japan +#Server = http://mirror.aria-on-the-planet.es/archlinux/$repo/os/$arch +#Server = https://mirror.aria-on-the-planet.es/archlinux/$repo/os/$arch +#Server = http://mirrors.cat.net/archlinux/$repo/os/$arch +#Server = https://mirrors.cat.net/archlinux/$repo/os/$arch +#Server = http://jp.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://jp.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch +#Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch +#Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch +#Server = http://repo.jing.rocks/archlinux/$repo/os/$arch +#Server = https://repo.jing.rocks/archlinux/$repo/os/$arch +#Server = http://www.miraa.jp/archlinux/$repo/os/$arch +#Server = https://www.miraa.jp/archlinux/$repo/os/$arch +#Server = http://mirror.nishi.network/archlinux/$repo/os/$arch +#Server = https://mirror.nishi.network/archlinux/$repo/os/$arch +#Server = https://mirror.saebasol.org/archlinux/$repo/os/$arch + +## Kazakhstan +#Server = http://mirror.hoster.kz/archlinux/$repo/os/$arch +#Server = https://mirror.hoster.kz/archlinux/$repo/os/$arch +#Server = http://mirror.ps.kz/archlinux/$repo/os/$arch +#Server = https://mirror.ps.kz/archlinux/$repo/os/$arch + +## Kenya +#Server = http://archlinux.mirror.liquidtelecom.com/$repo/os/$arch +#Server = https://archlinux.mirror.liquidtelecom.com/$repo/os/$arch + +## Latvia +#Server = http://archlinux.koyanet.lv/archlinux/$repo/os/$arch +#Server = https://archlinux.koyanet.lv/archlinux/$repo/os/$arch + +## Lithuania +#Server = http://mirrors.atviras.lt/archlinux/$repo/os/$arch +#Server = https://mirrors.atviras.lt/archlinux/$repo/os/$arch + +## Luxembourg +#Server = http://archmirror.xyz/archlinux/$repo/os/$arch +#Server = https://archmirror.xyz/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.root.lu/$repo/os/$arch + +## Mauritius +#Server = http://archlinux-mirror.cloud.mu/$repo/os/$arch +#Server = https://archlinux-mirror.cloud.mu/$repo/os/$arch + +## Mexico +#Server = http://lidsol.fi-b.unam.mx/archlinux/$repo/os/$arch +#Server = https://lidsol.fi-b.unam.mx/archlinux/$repo/os/$arch +#Server = https://arch.jsc.mx/$repo/os/$arch + +## Moldova +#Server = http://md.mirrors.hacktegic.com/archlinux/$repo/os/$arch +#Server = https://md.mirrors.hacktegic.com/archlinux/$repo/os/$arch +#Server = http://mirror.ihost.md/archlinux/$repo/os/$arch +#Server = https://mirror.ihost.md/archlinux/$repo/os/$arch +#Server = http://mirror.mangohost.net/archlinux/$repo/os/$arch +#Server = https://mirror.mangohost.net/archlinux/$repo/os/$arch + +## Nepal +#Server = http://mirrors.nepalicloud.com/archlinux/$repo/os/$arch +#Server = https://mirrors.nepalicloud.com/archlinux/$repo/os/$arch + +## Netherlands +#Server = http://mirror.bouwhuis.network/archlinux/$repo/os/$arch +#Server = https://mirror.bouwhuis.network/archlinux/$repo/os/$arch +#Server = http://nl.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://nl.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.cj2.nl/archlinux/$repo/os/$arch +#Server = https://mirror.cj2.nl/archlinux/$repo/os/$arch +#Server = https://mirrors.daan.vodka/archlinux/$repo/os/$arch +#Server = http://mirrors.evoluso.com/archlinux/$repo/os/$arch +#Server = http://nl.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = https://nl.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = http://mirror.i3d.net/pub/archlinux/$repo/os/$arch +#Server = https://mirror.i3d.net/pub/archlinux/$repo/os/$arch +#Server = https://mirror.iusearchbtw.nl/$repo/os/$arch +#Server = https://arch.jeweet.net/$repo/os/$arch +#Server = http://mirror.koddos.net/archlinux/$repo/os/$arch +#Server = https://mirror.koddos.net/archlinux/$repo/os/$arch +#Server = http://arch.mirrors.lavatech.top/$repo/os/$arch +#Server = https://arch.mirrors.lavatech.top/$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://archlinux.mirror.liteserver.nl/$repo/os/$arch +#Server = https://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 = http://mirror.mijn.host/archlinux/$repo/os/$arch +#Server = https://mirror.mijn.host/archlinux/$repo/os/$arch +#Server = http://mirror.neostrada.nl/archlinux/$repo/os/$arch +#Server = https://mirror.neostrada.nl/archlinux/$repo/os/$arch +#Server = http://ftp.nluug.nl/os/Linux/distr/archlinux/$repo/os/$arch +#Server = http://mirror.serverion.com/archlinux/$repo/os/$arch +#Server = https://mirror.serverion.com/archlinux/$repo/os/$arch +#Server = http://ftp.snt.utwente.nl/pub/os/linux/archlinux/$repo/os/$arch +#Server = http://mirror.tarellia.net/distr/archlinux/$repo/os/$arch +#Server = https://mirror.tarellia.net/distr/archlinux/$repo/os/$arch +#Server = http://mirrors.viflcraft.top/archlinux/$repo/os/$arch +#Server = https://mirrors.viflcraft.top/archlinux/$repo/os/$arch +#Server = http://archlinux.mirror.wearetriple.com/$repo/os/$arch +#Server = https://archlinux.mirror.wearetriple.com/$repo/os/$arch +#Server = http://mirror-archlinux.webruimtehosting.nl/$repo/os/$arch +#Server = https://mirror-archlinux.webruimtehosting.nl/$repo/os/$arch +#Server = http://mirrors.xtom.nl/archlinux/$repo/os/$arch +#Server = https://mirrors.xtom.nl/archlinux/$repo/os/$arch + +## New Caledonia +#Server = http://mirror.lagoon.nc/pub/archlinux/$repo/os/$arch +#Server = http://archlinux.nautile.nc/archlinux/$repo/os/$arch +#Server = https://archlinux.nautile.nc/archlinux/$repo/os/$arch + +## New Zealand +#Server = http://mirror.2degrees.nz/archlinux/$repo/os/$arch +#Server = https://mirror.2degrees.nz/archlinux/$repo/os/$arch +#Server = http://mirror.fsmg.org.nz/archlinux/$repo/os/$arch +#Server = https://mirror.fsmg.org.nz/archlinux/$repo/os/$arch +#Server = https://archlinux.ourhome.kiwi/$repo/os/$arch +#Server = http://mirror.smith.geek.nz/archlinux/$repo/os/$arch +#Server = https://mirror.smith.geek.nz/archlinux/$repo/os/$arch + +## North Macedonia +#Server = http://arch.softver.org.mk/archlinux/$repo/os/$arch +#Server = http://mirror.onevip.mk/archlinux/$repo/os/$arch +#Server = http://mirror.t-home.mk/archlinux/$repo/os/$arch +#Server = https://mirror.t-home.mk/archlinux/$repo/os/$arch + +## Norway +#Server = http://mirror.archlinux.no/$repo/os/$arch +#Server = https://mirror.archlinux.no/$repo/os/$arch +#Server = http://archlinux.uib.no/$repo/os/$arch +#Server = http://lysakermoen.com/Software/Linux/Mirrors/ArchLinux/$repo/os/$arch +#Server = https://lysakermoen.com/Software/Linux/Mirrors/ArchLinux/$repo/os/$arch +#Server = http://mirror.neuf.no/archlinux/$repo/os/$arch +#Server = https://mirror.neuf.no/archlinux/$repo/os/$arch +#Server = http://mirror.terrahost.no/linux/archlinux/$repo/os/$arch + +## Paraguay +#Server = http://archlinux.mirror.py/archlinux/$repo/os/$arch + +## Poland +#Server = https://mirror.eloteam.tk/archlinux/$repo/os/$arch +#Server = http://ftp.icm.edu.pl/pub/Linux/dist/archlinux/$repo/os/$arch +#Server = https://ftp.icm.edu.pl/pub/Linux/dist/archlinux/$repo/os/$arch +#Server = http://mirror.juniorjpdj.pl/archlinux/$repo/os/$arch +#Server = https://mirror.juniorjpdj.pl/archlinux/$repo/os/$arch +#Server = http://arch.midov.pl/arch/$repo/os/$arch +#Server = https://arch.midov.pl/arch/$repo/os/$arch +#Server = http://piotrkosoft.net/pub/mirrors/ftp.archlinux.org/$repo/os/$arch +#Server = http://ftp.psnc.pl/linux/archlinux/$repo/os/$arch +#Server = https://ftp.psnc.pl/linux/archlinux/$repo/os/$arch +#Server = http://arch.sakamoto.pl/$repo/os/$arch +#Server = https://arch.sakamoto.pl/$repo/os/$arch +#Server = http://repo.skni.umcs.pl/archlinux/$repo/os/$arch +#Server = https://repo.skni.umcs.pl/archlinux/$repo/os/$arch +#Server = http://ftp.vectranet.pl/archlinux/$repo/os/$arch + +## Portugal +#Server = http://mirror.barata.pt/archlinux/$repo/os/$arch +#Server = https://mirror.barata.pt/archlinux/$repo/os/$arch +#Server = http://glua.ua.pt/pub/archlinux/$repo/os/$arch +#Server = https://glua.ua.pt/pub/archlinux/$repo/os/$arch +#Server = http://mirror.leitecastro.com/archlinux/$repo/os/$arch +#Server = https://mirror.leitecastro.com/archlinux/$repo/os/$arch +#Server = http://mirrors.up.pt/pub/archlinux/$repo/os/$arch +#Server = https://mirrors.up.pt/pub/archlinux/$repo/os/$arch +#Server = http://ftp.rnl.tecnico.ulisboa.pt/pub/archlinux/$repo/os/$arch +#Server = https://ftp.rnl.tecnico.ulisboa.pt/pub/archlinux/$repo/os/$arch + +## Romania +#Server = http://mirrors.chroot.ro/archlinux/$repo/os/$arch +#Server = https://mirrors.chroot.ro/archlinux/$repo/os/$arch +#Server = http://mirror.efect.ro/archlinux/$repo/os/$arch +#Server = https://mirror.efect.ro/archlinux/$repo/os/$arch +#Server = http://ro.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = https://ro.mirror.flokinet.net/archlinux/$repo/os/$arch +#Server = http://mirrors.go.ro/archlinux/$repo/os/$arch +#Server = https://mirrors.go.ro/archlinux/$repo/os/$arch +#Server = http://mirrors.hosterion.ro/archlinux/$repo/os/$arch +#Server = https://mirrors.hosterion.ro/archlinux/$repo/os/$arch +#Server = http://mirrors.hostico.ro/archlinux/$repo/os/$arch +#Server = https://mirrors.hostico.ro/archlinux/$repo/os/$arch +#Server = http://archlinux.mirrors.linux.ro/$repo/os/$arch +#Server = http://mirrors.m247.ro/archlinux/$repo/os/$arch +#Server = http://mirrors.nav.ro/archlinux/$repo/os/$arch +#Server = http://ro.arch.niranjan.co/$repo/os/$arch +#Server = https://ro.arch.niranjan.co/$repo/os/$arch +#Server = http://mirrors.nxthost.com/archlinux/$repo/os/$arch +#Server = https://mirrors.nxthost.com/archlinux/$repo/os/$arch +#Server = http://mirrors.pidginhost.com/arch/$repo/os/$arch +#Server = https://mirrors.pidginhost.com/arch/$repo/os/$arch + +## Russia +#Server = http://archlinux.gay/archlinux/$repo/os/$arch +#Server = https://archlinux.gay/archlinux/$repo/os/$arch +#Server = http://ru.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://ru.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.kamtv.ru/archlinux/$repo/os/$arch +#Server = https://mirror.kamtv.ru/archlinux/$repo/os/$arch +#Server = http://mirror.kpfu.ru/archlinux/$repo/os/$arch +#Server = https://mirror.kpfu.ru/archlinux/$repo/os/$arch +#Server = http://mirror.nw-sys.ru/archlinux/$repo/os/$arch +#Server = https://mirror.nw-sys.ru/archlinux/$repo/os/$arch +#Server = http://mirrors.powernet.com.ru/archlinux/$repo/os/$arch +#Server = http://repository.su/archlinux/$repo/os/$arch +#Server = https://repository.su/archlinux/$repo/os/$arch +#Server = http://mirror.rol.ru/archlinux/$repo/os/$arch +#Server = https://mirror.rol.ru/archlinux/$repo/os/$arch +#Server = https://mirror2.sl-chat.ru/archlinux/$repo/os/$arch +#Server = https://mirror3.sl-chat.ru/archlinux/$repo/os/$arch +#Server = http://mirror.truenetwork.ru/archlinux/$repo/os/$arch +#Server = https://mirror.truenetwork.ru/archlinux/$repo/os/$arch +#Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch +#Server = https://mirror.yandex.ru/archlinux/$repo/os/$arch +#Server = http://archlinux.zepto.cloud/$repo/os/$arch + +## Réunion +#Server = http://arch.mithril.re/$repo/os/$arch + +## Saudi Arabia +#Server = http://sa.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://sa.mirrors.cicku.me/archlinux/$repo/os/$arch + +## Serbia +#Server = http://arch.petarmaric.com/$repo/os/$arch +#Server = http://mirror.pmf.kg.ac.rs/archlinux/$repo/os/$arch +#Server = http://mirror1.sox.rs/archlinux/$repo/os/$arch +#Server = https://mirror1.sox.rs/archlinux/$repo/os/$arch + +## Singapore +#Server = http://mirror.0x.sg/archlinux/$repo/os/$arch +#Server = https://mirror.0x.sg/archlinux/$repo/os/$arch +#Server = http://mirror.aktkn.sg/archlinux/$repo/os/$arch +#Server = https://mirror.aktkn.sg/archlinux/$repo/os/$arch +#Server = http://sg.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://sg.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://download.nus.edu.sg/mirror/archlinux/$repo/os/$arch +#Server = http://mirror.guillaumea.fr/archlinux/$repo/os/$arch +#Server = https://mirror.guillaumea.fr/archlinux/$repo/os/$arch +#Server = http://mirror.jingk.ai/archlinux/$repo/os/$arch +#Server = https://mirror.jingk.ai/archlinux/$repo/os/$arch +#Server = http://sg.arch.niranjan.co/$repo/os/$arch +#Server = https://sg.arch.niranjan.co/$repo/os/$arch +#Server = http://ossmirror.mycloud.services/os/linux/archlinux/$repo/os/$arch +#Server = http://mirror.sg.gs/archlinux/$repo/os/$arch +#Server = https://mirror.sg.gs/archlinux/$repo/os/$arch + +## Slovakia +#Server = http://mirror.lnx.sk/pub/linux/archlinux/$repo/os/$arch +#Server = https://mirror.lnx.sk/pub/linux/archlinux/$repo/os/$arch +#Server = http://tux.rainside.sk/archlinux/$repo/os/$arch + +## Slovenia +#Server = https://www.sooftware.com/mirrors/Arch-Linux/$repo/os/$arch +#Server = http://mirror.tux.si/arch/$repo/os/$arch +#Server = https://mirror.tux.si/arch/$repo/os/$arch + +## South Africa +#Server = http://archlinux.za.mirror.allworldit.com/archlinux/$repo/os/$arch +#Server = https://archlinux.za.mirror.allworldit.com/archlinux/$repo/os/$arch +#Server = http://za.mirror.archlinux-br.org/$repo/os/$arch +#Server = http://za.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://za.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.is.co.za/mirror/archlinux.org/$repo/os/$arch +#Server = http://mirrors.urbanwave.co.za/archlinux/$repo/os/$arch +#Server = https://mirrors.urbanwave.co.za/archlinux/$repo/os/$arch + +## South Korea +#Server = http://kr.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://kr.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://ftp.kaist.ac.kr/ArchLinux/$repo/os/$arch +#Server = http://mirror.funami.tech/arch/$repo/os/$arch +#Server = https://mirror.funami.tech/arch/$repo/os/$arch +#Server = http://ftp.harukasan.org/archlinux/$repo/os/$arch +#Server = https://ftp.harukasan.org/archlinux/$repo/os/$arch +#Server = http://ftp.lanet.kr/pub/archlinux/$repo/os/$arch +#Server = https://ftp.lanet.kr/pub/archlinux/$repo/os/$arch +#Server = http://mirror.morgan.kr/archlinux/$repo/os/$arch +#Server = https://mirror.morgan.kr/archlinux/$repo/os/$arch +#Server = http://mirror.siwoo.org/archlinux/$repo/os/$arch +#Server = https://mirror.siwoo.org/archlinux/$repo/os/$arch +#Server = http://mirror.yuki.net.uk/archlinux/$repo/os/$arch +#Server = https://mirror.yuki.net.uk/archlinux/$repo/os/$arch + +## Spain +#Server = http://es.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://es.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://mirror.cloroformo.org/archlinux/$repo/os/$arch +#Server = http://mirror.librelabucm.org/archlinux/$repo/os/$arch +#Server = https://mirror.librelabucm.org/archlinux/$repo/os/$arch +#Server = http://mirrors.marquitos.space/archlinux/$repo/os/$arch +#Server = https://mirrors.marquitos.space/archlinux/$repo/os/$arch +#Server = https://nox.panibrez.com/archlinux/$repo/os/$arch +#Server = http://mirror.raiolanetworks.com/archlinux/$repo/os/$arch +#Server = https://mirror.raiolanetworks.com/archlinux/$repo/os/$arch +#Server = http://ftp.rediris.es/mirror/archlinux/$repo/os/$arch + +## Sweden +#Server = http://mirror.accum.se/mirror/archlinux/$repo/os/$arch +#Server = https://mirror.accum.se/mirror/archlinux/$repo/os/$arch +#Server = https://mirror.braindrainlan.nu/archlinux/$repo/os/$arch +#Server = http://ftpmirror.infania.net/mirror/archlinux/$repo/os/$arch +#Server = https://ftp.ludd.ltu.se/mirrors/archlinux/$repo/os/$arch +#Server = http://ftp.lysator.liu.se/pub/archlinux/$repo/os/$arch +#Server = https://ftp.lysator.liu.se/pub/archlinux/$repo/os/$arch +#Server = http://mirror.bahnhof.net/pub/archlinux/$repo/os/$arch +#Server = https://mirror.bahnhof.net/pub/archlinux/$repo/os/$arch +#Server = http://ftp.myrveln.se/pub/linux/archlinux/$repo/os/$arch +#Server = https://ftp.myrveln.se/pub/linux/archlinux/$repo/os/$arch +#Server = https://mirror.osbeck.com/archlinux/$repo/os/$arch + +## Switzerland +#Server = http://pkg.adfinis-on-exoscale.ch/archlinux-pkgbuild/$repo/os/$arch +#Server = http://pkg.adfinis-on-exoscale.ch/archlinux/$repo/os/$arch +#Server = https://pkg.adfinis-on-exoscale.ch/archlinux-pkgbuild/$repo/os/$arch +#Server = https://pkg.adfinis-on-exoscale.ch/archlinux/$repo/os/$arch +#Server = http://pkg.adfinis.com/archlinux/$repo/os/$arch +#Server = https://pkg.adfinis.com/archlinux/$repo/os/$arch +#Server = http://ch.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://ch.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.init7.net/archlinux/$repo/os/$arch +#Server = https://mirror.init7.net/archlinux/$repo/os/$arch +#Server = http://mirror.metanet.ch/archlinux/$repo/os/$arch +#Server = https://mirror.metanet.ch/archlinux/$repo/os/$arch +#Server = http://mirror.puzzle.ch/archlinux/$repo/os/$arch +#Server = https://mirror.puzzle.ch/archlinux/$repo/os/$arch +#Server = https://theswissbay.ch/archlinux/$repo/os/$arch +#Server = https://mirror.ungleich.ch/mirror/packages/archlinux/$repo/os/$arch +#Server = https://mirror.worldhotspot.org/archlinux/$repo/os/$arch + +## Taiwan +#Server = http://mirror.archlinux.tw/ArchLinux/$repo/os/$arch +#Server = https://mirror.archlinux.tw/ArchLinux/$repo/os/$arch +#Server = http://archlinux.ccns.ncku.edu.tw/archlinux/$repo/os/$arch +#Server = https://archlinux.ccns.ncku.edu.tw/archlinux/$repo/os/$arch +#Server = http://tw.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://tw.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://free.nchc.org.tw/arch/$repo/os/$arch +#Server = https://free.nchc.org.tw/arch/$repo/os/$arch +#Server = https://ncuesaweb.ncue.edu.tw/linux/archlinux/$repo/os/$arch +#Server = http://archlinux.cs.nycu.edu.tw/$repo/os/$arch +#Server = https://archlinux.cs.nycu.edu.tw/$repo/os/$arch +#Server = http://ftp.tku.edu.tw/Linux/ArchLinux/$repo/os/$arch +#Server = http://mirror.twds.com.tw/archlinux/$repo/os/$arch +#Server = https://mirror.twds.com.tw/archlinux/$repo/os/$arch +#Server = http://ftp.yzu.edu.tw/Linux/archlinux/$repo/os/$arch +#Server = https://ftp.yzu.edu.tw/Linux/archlinux/$repo/os/$arch + +## Thailand +#Server = https://mirror.cyberbits.asia/archlinux/$repo/os/$arch +#Server = http://mirror.kku.ac.th/archlinux/$repo/os/$arch +#Server = https://mirror.kku.ac.th/archlinux/$repo/os/$arch +#Server = http://mirror2.totbb.net/archlinux/$repo/os/$arch + +## Türkiye +#Server = http://ftp.linux.org.tr/archlinux/$repo/os/$arch +#Server = http://depo.turkiye.linux.web.tr/archlinux/$repo/os/$arch +#Server = https://depo.turkiye.linux.web.tr/archlinux/$repo/os/$arch +#Server = https://tr.arch.niranjan.co/$repo/os/$arch +#Server = http://mirror.timtal.com.tr/archlinux/$repo/os/$arch +#Server = https://mirror.timtal.com.tr/archlinux/$repo/os/$arch +#Server = http://mirror.veriteknik.net.tr/archlinux/$repo/os/$arch + +## Ukraine +#Server = http://archlinux.astra.in.ua/$repo/os/$arch +#Server = https://archlinux.astra.in.ua/$repo/os/$arch +#Server = http://repo.hyron.dev/archlinux/$repo/os/$arch +#Server = https://repo.hyron.dev/archlinux/$repo/os/$arch +#Server = http://fastmirror.pp.ua/archlinux/$repo/os/$arch +#Server = https://fastmirror.pp.ua/archlinux/$repo/os/$arch +#Server = http://mirror.hostiko.network/archlinux/$repo/os/$arch +#Server = https://mirror.hostiko.network/archlinux/$repo/os/$arch +#Server = http://archlinux.ip-connect.vn.ua/$repo/os/$arch +#Server = https://archlinux.ip-connect.vn.ua/$repo/os/$arch +#Server = http://mirror.mirohost.net/archlinux/$repo/os/$arch +#Server = https://mirror.mirohost.net/archlinux/$repo/os/$arch +#Server = http://mirrors.nix.org.ua/linux/archlinux/$repo/os/$arch +#Server = https://mirrors.nix.org.ua/linux/archlinux/$repo/os/$arch +#Server = http://mirrors.reitarovskyi.tech/archlinux/$repo/os/$arch +#Server = https://mirrors.reitarovskyi.tech/archlinux/$repo/os/$arch + +## United Arab Emirates +#Server = https://mirror.hafeezh.com/archlinux/$repo/os/$arch + +## United Kingdom +#Server = http://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch +#Server = https://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch +#Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch +#Server = https://mirror.bytemark.co.uk/archlinux/$repo/os/$arch +#Server = http://repo.c48.uk/arch/$repo/os/$arch +#Server = https://repo.c48.uk/arch/$repo/os/$arch +#Server = http://gb.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://gb.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://london.mirror.pkgbuild.com/$repo/os/$arch +#Server = http://mirrors.gethosted.online/archlinux/$repo/os/$arch +#Server = https://mirrors.gethosted.online/archlinux/$repo/os/$arch +#Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch +#Server = http://mirrors.melbourne.co.uk/archlinux/$repo/os/$arch +#Server = https://mirrors.melbourne.co.uk/archlinux/$repo/os/$arch +#Server = http://mirror.infernocomms.net/archlinux/$repo/os/$arch +#Server = https://mirror.infernocomms.net/archlinux/$repo/os/$arch +#Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/$arch +#Server = https://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/$arch +#Server = http://mirror.netweaver.uk/archlinux/$repo/os/$arch +#Server = https://mirror.netweaver.uk/archlinux/$repo/os/$arch +#Server = http://lon.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://lon.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = http://mirror.server.net/archlinux/$repo/os/$arch +#Server = https://mirror.server.net/archlinux/$repo/os/$arch +#Server = http://arch.serverspace.co.uk/arch/$repo/os/$arch +#Server = https://repo.slithery.uk/$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 = http://mirror.cov.ukservers.com/archlinux/$repo/os/$arch +#Server = https://mirror.cov.ukservers.com/archlinux/$repo/os/$arch +#Server = http://mirror.vinehost.net/archlinux/$repo/os/$arch +#Server = https://mirror.vinehost.net/archlinux/$repo/os/$arch +#Server = https://mirrors.xhosts.co.uk/arch/$repo/os/$arch + +## United States +#Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch +#Server = http://mirror.adectra.com/archlinux/$repo/os/$arch +#Server = https://mirror.adectra.com/archlinux/$repo/os/$arch +#Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch +#Server = http://mirrors.aggregate.org/archlinux/$repo/os/$arch +#Server = https://mirror.akane.network/archmirror/$repo/os/$arch +#Server = http://il.us.mirror.archlinux-br.org/$repo/os/$arch +#Server = https://archlinux.doridian.net/$repo/os/$arch +#Server = http://mirror.arizona.edu/archlinux/$repo/os/$arch +#Server = https://mirror.arizona.edu/archlinux/$repo/os/$arch +#Server = http://arlm.tyzoid.com/$repo/os/$arch +#Server = https://arlm.tyzoid.com/$repo/os/$arch +#Server = https://mirror.ava.dev/archlinux/$repo/os/$arch +#Server = http://mirrors.bjg.at/arch/$repo/os/$arch +#Server = https://mirrors.bjg.at/arch/$repo/os/$arch +#Server = http://mirrors.bloomu.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.bloomu.edu/archlinux/$repo/os/$arch +#Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch +#Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch +#Server = http://mirror.cc.columbia.edu/pub/linux/archlinux/$repo/os/$arch +#Server = http://us.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = https://us.mirrors.cicku.me/archlinux/$repo/os/$arch +#Server = http://mirror.clarkson.edu/archlinux/$repo/os/$arch +#Server = https://mirror.clarkson.edu/archlinux/$repo/os/$arch +#Server = http://mirror.colonelhosting.com/archlinux/$repo/os/$arch +#Server = https://mirror.colonelhosting.com/archlinux/$repo/os/$arch +#Server = http://arch.mirror.constant.com/$repo/os/$arch +#Server = https://arch.mirror.constant.com/$repo/os/$arch +#Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch +#Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/$arch +#Server = http://mirror.cybersecurity.nmt.edu/archlinux/$repo/os/$arch +#Server = https://mirror.cybersecurity.nmt.edu/archlinux/$repo/os/$arch +#Server = http://distro.ibiblio.org/archlinux/$repo/os/$arch +#Server = http://mirror.ette.biz/archlinux/$repo/os/$arch +#Server = https://mirror.ette.biz/archlinux/$repo/os/$arch +#Server = http://codingflyboy.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://coresite.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://forksystems.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://irltoolkit.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://mirror.fcix.net/archlinux/$repo/os/$arch +#Server = http://mnvoip.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://nnenix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://nocix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://ohioix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://opencolo.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://ridgewireless.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://southfront.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://uvermont.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://volico.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://ziply.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://codingflyboy.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://coresite.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://forksystems.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://irltoolkit.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://mirror.fcix.net/archlinux/$repo/os/$arch +#Server = https://mnvoip.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://nnenix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://nocix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://ohioix.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://opencolo.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://ridgewireless.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://southfront.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://uvermont.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://volico.mm.fcix.net/archlinux/$repo/os/$arch +#Server = https://ziply.mm.fcix.net/archlinux/$repo/os/$arch +#Server = http://mirror.fossable.org/archlinux/$repo/os/$arch +#Server = https://america.mirror.pkgbuild.com/$repo/os/$arch +#Server = http://mirrors.gigenet.com/archlinux/$repo/os/$arch +#Server = http://arch.goober.cloud/$repo/os/$arch +#Server = https://arch.goober.cloud/$repo/os/$arch +#Server = http://www.gtlib.gatech.edu/pub/archlinux/$repo/os/$arch +#Server = http://mirror.hasphetica.win/archlinux/$repo/os/$arch +#Server = https://mirror.hasphetica.win/archlinux/$repo/os/$arch +#Server = https://mirror.hodgepodge.dev/archlinux/$repo/os/$arch +#Server = http://mirror.hostup.org/archlinux/$repo/os/$arch +#Server = https://mirror.hostup.org/archlinux/$repo/os/$arch +#Server = http://arch.hu.fo/archlinux/$repo/os/$arch +#Server = https://arch.hu.fo/archlinux/$repo/os/$arch +#Server = http://repo.ialab.dsu.edu/archlinux/$repo/os/$arch +#Server = https://repo.ialab.dsu.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.iu13.net/archlinux/$repo/os/$arch +#Server = https://mirrors.iu13.net/archlinux/$repo/os/$arch +#Server = https://arch.mirror.k0.ae/$repo/os/$arch +#Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch +#Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch +#Server = http://mirror.dal10.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = http://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = http://mirror.sfo12.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = http://mirror.wdc1.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = https://mirror.dal10.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = https://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = https://mirror.sfo12.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = https://mirror.wdc1.us.leaseweb.net/archlinux/$repo/os/$arch +#Server = http://mirrors.liquidweb.com/archlinux/$repo/os/$arch +#Server = http://mirror.lty.me/archlinux/$repo/os/$arch +#Server = https://mirror.lty.me/archlinux/$repo/os/$arch +#Server = http://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch +#Server = https://m.lqy.me/arch/$repo/os/$arch +#Server = http://archlinux.macarne.com/$repo/os/$arch +#Server = https://archlinux.macarne.com/$repo/os/$arch +#Server = http://arch-mirror.marcusspencer.xyz:8080/archlinux/$repo/os/$arch +#Server = https://arch-mirror.marcusspencer.xyz:4443/archlinux/$repo/os/$arch +#Server = http://mirror.math.princeton.edu/pub/archlinux/$repo/os/$arch +#Server = http://mirror.metrocast.net/archlinux/$repo/os/$arch +#Server = http://mirror.kaminski.io/archlinux/$repo/os/$arch +#Server = https://mirror.kaminski.io/archlinux/$repo/os/$arch +#Server = http://iad.mirrors.misaka.one/archlinux/$repo/os/$arch +#Server = https://iad.mirrors.misaka.one/archlinux/$repo/os/$arch +#Server = http://repo.miserver.it.umich.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.mit.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.mit.edu/archlinux/$repo/os/$arch +#Server = http://us.arch.niranjan.co/$repo/os/$arch +#Server = https://us.arch.niranjan.co/$repo/os/$arch +#Server = http://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch +#Server = http://archmirror1.octyl.net/$repo/os/$arch +#Server = https://archmirror1.octyl.net/$repo/os/$arch +#Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch +#Server = https://ftp.osuosl.org/pub/archlinux/$repo/os/$arch +#Server = http://arch.mirrors.pair.com/$repo/os/$arch +#Server = https://mirror.pilotfiber.com/archlinux/$repo/os/$arch +#Server = http://dfw.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = http://iad.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = http://ord.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://dfw.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://iad.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = https://ord.mirror.rackspace.com/archlinux/$repo/os/$arch +#Server = http://mirrors.radwebhosting.com/archlinux/$repo/os/$arch +#Server = https://mirrors.radwebhosting.com/archlinux/$repo/os/$arch +#Server = http://plug-mirror.rcac.purdue.edu/archlinux/$repo/os/$arch +#Server = https://plug-mirror.rcac.purdue.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.rit.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.rit.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.rutgers.edu/archlinux/$repo/os/$arch +#Server = https://mirrors.rutgers.edu/archlinux/$repo/os/$arch +#Server = http://us-1.arch-linux.mirror.shieldblaze.com/$repo/os/$arch +#Server = https://us-1.arch-linux.mirror.shieldblaze.com/$repo/os/$arch +#Server = http://mirror.siena.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.sonic.net/archlinux/$repo/os/$arch +#Server = https://mirrors.sonic.net/archlinux/$repo/os/$arch +#Server = https://us-mnz.soulharsh007.dev/archlinux/$repo/os/$arch +#Server = http://mirror.phx1.us.spryservers.net/archlinux/$repo/os/$arch +#Server = https://mirror.phx1.us.spryservers.net/archlinux/$repo/os/$arch +#Server = http://arch.mirror.square-r00t.net/$repo/os/$arch +#Server = https://arch.mirror.square-r00t.net/$repo/os/$arch +#Server = http://mirror.stjschools.org/arch/$repo/os/$arch +#Server = https://mirror.stjschools.org/arch/$repo/os/$arch +#Server = http://ftp.sudhip.com/archlinux/$repo/os/$arch +#Server = https://ftp.sudhip.com/archlinux/$repo/os/$arch +#Server = http://mirror.pit.teraswitch.com/archlinux/$repo/os/$arch +#Server = https://mirror.pit.teraswitch.com/archlinux/$repo/os/$arch +#Server = https://mirror.theash.xyz/arch/$repo/os/$arch +#Server = http://mirror.umd.edu/archlinux/$repo/os/$arch +#Server = https://mirror.umd.edu/archlinux/$repo/os/$arch +#Server = http://mirrors.vectair.net/archlinux/$repo/os/$arch +#Server = https://mirrors.vectair.net/archlinux/$repo/os/$arch +#Server = http://mirror.vtti.vt.edu/archlinux/$repo/os/$arch +#Server = http://wcbmedia.io:8000/$repo/os/$arch +#Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch +#Server = http://mirrors.xtom.com/archlinux/$repo/os/$arch +#Server = https://mirrors.xtom.com/archlinux/$repo/os/$arch +#Server = https://mirror.zackmyers.io/archlinux/$repo/os/$arch +#Server = https://zxcvfdsa.com/arch/$repo/os/$arch + +## Uzbekistan +#Server = http://mirror.dc.uz/arch/$repo/os/$arch +#Server = https://mirror.dc.uz/arch/$repo/os/$arch + +## Vietnam +#Server = http://mirror.bizflycloud.vn/archlinux/$repo/os/$arch +#Server = https://mirrors.huongnguyen.dev/arch/$repo/os/$arch +#Server = https://mirrors.nguyenhoang.cloud/archlinux/$repo/os/$arch +#Server = http://mirrors.twilight.fyi/archlinux/$repo/os/$arch +#Server = https://mirrors.twilight.fyi/archlinux/$repo/os/$arch + + diff --git a/releng/airootfs/etc/passwd b/releng/airootfs/etc/passwd new file mode 100644 index 0000000..da8dd66 --- /dev/null +++ b/releng/airootfs/etc/passwd @@ -0,0 +1,2 @@ +root:x:0:0:root:/root:/usr/bin/zsh +liveuser:x:1000:1000::/home/liveuser:/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..afc8670 --- /dev/null +++ b/releng/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules @@ -0,0 +1,9 @@ +/* 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/resolv.conf b/releng/airootfs/etc/resolv.conf new file mode 100644 index 0000000..08f6773 --- /dev/null +++ b/releng/airootfs/etc/resolv.conf @@ -0,0 +1,4 @@ +# A DNS szerverek (Google DNS és Cloudflare) +nameserver 8.8.8.8 +nameserver 8.8.4.4 +nameserver 1.1.1.1 diff --git a/releng/airootfs/etc/shadow b/releng/airootfs/etc/shadow new file mode 100644 index 0000000..3692488 --- /dev/null +++ b/releng/airootfs/etc/shadow @@ -0,0 +1,2 @@ +root::14871:::::: +liveuser::14871:::::: \ No newline at end of file diff --git a/releng/airootfs/etc/skel/.bashrc b/releng/airootfs/etc/skel/.bashrc new file mode 100644 index 0000000..a355b0c --- /dev/null +++ b/releng/airootfs/etc/skel/.bashrc @@ -0,0 +1,9 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/releng/airootfs/etc/skel/.gtkrc-2.0 b/releng/airootfs/etc/skel/.gtkrc-2.0 new file mode 100644 index 0000000..f5c0685 --- /dev/null +++ b/releng/airootfs/etc/skel/.gtkrc-2.0 @@ -0,0 +1,5 @@ +gtk-theme-name="Yaru-purple-blue" +gtk-icon-theme-name="Yaru-purple-blue" +gtk-cursor-theme-name="Yaru" +gtk-sound-theme-name="Yaru" + 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.d/g_wheel b/releng/airootfs/etc/sudoers.d/g_wheel new file mode 100644 index 0000000..bbad988 --- /dev/null +++ b/releng/airootfs/etc/sudoers.d/g_wheel @@ -0,0 +1 @@ +%wheel ALL=(ALL:ALL) NOPASSWD: ALL 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.conf.d/ipv6-privacy-extensions.conf b/releng/airootfs/etc/systemd/network.conf.d/ipv6-privacy-extensions.conf new file mode 100644 index 0000000..0e9ceb4 --- /dev/null +++ b/releng/airootfs/etc/systemd/network.conf.d/ipv6-privacy-extensions.conf @@ -0,0 +1,2 @@ +[Network] +IPv6PrivacyExtensions=yes 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 b/releng/airootfs/etc/systemd/network/20-wlan.network new file mode 100644 index 0000000..8b70a95 --- /dev/null +++ b/releng/airootfs/etc/systemd/network/20-wlan.network @@ -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/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.nm-dispatcher.service b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service new file mode 120000 index 0000000..a7e5cd4 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager-dispatcher.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/default.target b/releng/airootfs/etc/systemd/system/default.target new file mode 120000 index 0000000..cf9fa51 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/default.target @@ -0,0 +1 @@ +/usr/lib/systemd/system/graphical.target \ No newline at end of file diff --git a/releng/airootfs/etc/systemd/system/display-manager.service b/releng/airootfs/etc/systemd/system/display-manager.service new file mode 120000 index 0000000..43e48b1 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/display-manager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/gdm.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.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service new file mode 120000 index 0000000..d372729 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/reflector.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/reflector.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-networkd.service b/releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service new file mode 120000 index 0000000..4c158e6 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.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/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/NetworkManager-wait-online.service b/releng/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service new file mode 120000 index 0000000..b78b586 --- /dev/null +++ b/releng/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager-wait-online.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..075b93b --- /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 +After=etc-pacman.d-gnupg.mount time-sync.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 +ExecStart=/usr/bin/pacman -Sy + +[Install] +WantedBy=multi-user.target diff --git a/releng/airootfs/etc/systemd/system/reflector.service.d/archiso.conf b/releng/airootfs/etc/systemd/system/reflector.service.d/archiso.conf new file mode 100644 index 0000000..de6664d --- /dev/null +++ b/releng/airootfs/etc/systemd/system/reflector.service.d/archiso.conf @@ -0,0 +1,6 @@ +[Unit] +ConditionKernelCommandLine=!mirror + +[Service] +Restart=on-failure +RestartSec=10 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/xdg/autostart/calamares.desktop b/releng/airootfs/etc/xdg/autostart/calamares.desktop new file mode 100644 index 0000000..9e4f339 --- /dev/null +++ b/releng/airootfs/etc/xdg/autostart/calamares.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Install RaveOS +GenericName=System Installer +Comment=Install the operating system to disk +Exec=sudo calamares +Icon=/etc/calamares/branding/default/raveos-icon.png +Terminal=false +StartupNotify=true +Categories=System; diff --git a/releng/airootfs/etc/xdg/reflector/reflector.conf b/releng/airootfs/etc/xdg/reflector/reflector.conf new file mode 100644 index 0000000..7c830d2 --- /dev/null +++ b/releng/airootfs/etc/xdg/reflector/reflector.conf @@ -0,0 +1,8 @@ +# Reflector configuration file for the systemd service. + +--save /etc/pacman.d/mirrorlist +--ipv4 +--ipv6 +--protocol https +--latest 20 +--sort rate diff --git a/releng/airootfs/root/.automated_script.sh b/releng/airootfs/root/.automated_script.sh new file mode 100755 index 0000000..f7f3ced --- /dev/null +++ b/releng/airootfs/root/.automated_script.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +script_cmdline() { + local param + for param in $(= 4.2.0). +# If nothing is specified, the partition name is left unset. +# efiSystemPartitionName: EFI + +# In autogenerated partitioning, allow the user to select a swap size? +# If there is exactly one choice, no UI is presented, and the user +# cannot make a choice -- this setting is used. If there is more than +# one choice, a UI is presented. +# +# Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond +# to values of *userSwapChoices* as follows: +# - *neverCreateSwap* is true, means [none] +# - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small] +# - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend] +# +# Autogenerated swap sizes are as follows: +# - *suspend*: Swap is always at least total memory size, +# and up to 4GiB RAM follows the rule-of-thumb 2 * memory; +# from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory +# swap is the size of main memory. +# - *small*: Follows the rules above, but Swap is at +# most 8GiB, and no more than 10% of available disk. +# In both cases, a fudge factor (usually 10% extra) is applied so that there +# is some space for administrative overhead (e.g. 8 GiB swap will allocate +# 8.8GiB on disk in the end). +# +# If *file* is enabled here, make sure to have the *fstab* module +# as well (later in the exec phase) so that the swap file is +# actually created. +userSwapChoices: + - none # Create no swap, use no swap + - small # Up to 4GB + - suspend # At least main memory size + # - reuse # Re-use existing swap, but don't create any (unsupported right now) + - file # To swap file instead of partition + +# This optional setting specifies the name of the swap partition (see +# PARTLABEL; gpt only; requires KPMCore >= 4.2.0). +# If nothing is specified, the partition name is left unset. +# swapPartitionName: swap + +# LEGACY SETTINGS (these will generate a warning) +# ensureSuspendToDisk: true +# neverCreateSwap: false + +# Correctly draw nested (e.g. logical) partitions as such. +drawNestedPartitions: false + +# Show/hide partition labels on manual partitioning page. +alwaysShowPartitionLabels: true + +# Allow manual partitioning. +# +# When set to false, this option hides the "Manual partitioning" button, +# limiting the user's choice to "Erase", "Replace" or "Alongside". +# This can be useful when using a custom partition layout we don't want +# the user to modify. +# +# If nothing is specified, manual partitioning is enabled. +#allowManualPartitioning: true + +# Initial selection on the Choice page +# +# There are four radio buttons (in principle: erase, replace, alongside, manual), +# and you can pick which of them, if any, is initially selected. For most +# installers, "none" is the right choice: it makes the user pick something specific, +# rather than accidentally being able to click past an important choice (in particular, +# "erase" is a dangerous choice). +# +# The default is "none" +# +initialPartitioningChoice: none +# +# Similarly, some of the installation choices may offer a choice of swap; +# the available choices depend on *userSwapChoices*, above, and this +# setting can be used to pick a specific one. +# +# The default is "none" (no swap) if that is one of the enabled options, otherwise +# one of the items from the options. +initialSwapChoice: none + +# Default partition table type, used when a "erase" disk is made. +# +# When erasing a disk, a new partition table is created on disk. +# In other cases, e.g. Replace and Alongside, as well as when using +# manual partitioning, this partition table exists already on disk +# and it is left unmodified. +# +# Suggested values: gpt, msdos +# If nothing is specified, Calamares defaults to "gpt" if system is +# efi or "msdos". +# +# Names are case-sensitive and defined by KPMCore. +# defaultPartitionTableType: msdos + +# Requirement for partition table type +# +# Restrict the installation on disks that match the type of partition +# tables that are specified. +# +# Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore. +# +# If nothing is specified, Calamares defaults to both "msdos" and "gpt". +# +# requiredPartitionTableType: gpt +# requiredPartitionTableType: +# - msdos +# - gpt + +# Default filesystem type, used when a "new" partition is made. +# +# When replacing a partition, the existing filesystem inside the +# partition is retained. In other cases, e.g. Erase and Alongside, +# as well as when using manual partitioning and creating a new +# partition, this filesystem type is pre-selected. Note that +# editing a partition in manual-creation mode will not automatically +# change the filesystem type to this default value -- it is not +# creating a new partition. +# +# Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs +# If nothing is specified, Calamares defaults to "ext4". +# +# Names are case-sensitive and defined by KPMCore. +defaultFileSystemType: "ext4" + +# Selectable filesystem type, used when "erase" is done. +# +# When erasing the disk, the *defaultFileSystemType* is used (see +# above), but it is also possible to give users a choice: +# list suitable filesystems here. A drop-down is provided +# to pick which is the filesystems will be used. +# +# The value *defaultFileSystemType* is added to this list (with a warning) +# if not present; the default pick is the *defaultFileSystemType*. +# +# If not specified at all, uses *defaultFileSystemType* without a +# warning (this matches traditional no-choice-available behavior best). +availableFileSystemTypes: ["ext4","btrfs"] + +# Show/hide LUKS related functionality in automated partitioning modes. +# Disable this if you choose not to deploy early unlocking support in GRUB2 +# and/or your distribution's initramfs solution. +# +# BIG FAT WARNING: +# +# This option is unsupported, as it cuts out a crucial security feature. +# Disabling LUKS and shipping Calamares without a correctly configured GRUB2 +# and initramfs is considered suboptimal use of the Calamares software. The +# Calamares team will not provide user support for any potential issue that +# may arise as a consequence of setting this option to false. +# It is strongly recommended that system integrators put in the work to support +# LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc. +# For more information on setting up GRUB2 for Calamares with LUKS, see +# https://github.com/calamares/calamares/wiki/Deploy-LUKS +# +# If nothing is specified, LUKS is enabled in automated modes. +#enableLuksAutomatedPartitioning: true + +# Partition layout. +# +# This optional setting specifies a custom partition layout. +# +# If nothing is specified, the default partition layout is a single partition +# for root that uses 100% of the space and uses the filesystem defined by +# defaultFileSystemType. +# +# Note: the EFI system partition is prepend automatically to the layout if +# needed; the swap partition is appended to the layout if enabled (small of +# suspend). +# +# Otherwise, the partition layout is defined as follow: +# +# partitionLayout: +# - name: "rootfs" +# type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709" +# filesystem: "ext4" +# mountPoint: "/" +# size: 20% +# minSize: 500M +# maxSize: 10G +# attributes: 0xffff000000000003 +# - name: "home" +# type: "933ac7e1-2eb4-4f13-b844-0e14e2aef915" +# filesystem: "ext4" +# mountPoint: "/home" +# size: 3G +# minSize: 1.5G +# features: +# 64bit: false +# casefold: true +# - name: "data" +# filesystem: "fat32" +# mountPoint: "/data" +# features: +# sector-size: 4096 +# sectors-per-cluster: 128 +# size: 100% +# +# There can be any number of partitions, each entry having the following attributes: +# - name: filesystem label +# and +# partition name (gpt only; since KPMCore 4.2.0) +# - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0) +# - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0) +# - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0) +# - filesystem: filesystem type (optional parameter) +# - if not set at all, treat as "unformatted" +# - if "unformatted", no filesystem will be created +# - if "unknown" (or an unknown FS name, like "elephant") then the +# default filesystem type, or the user's choice, will be applied instead +# of "unknown" (e.g. the user might pick ext4, or xfs). +# - mountPoint: partition mount point (optional parameter; not mounted if unset) +# - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB) +# or +# % of the available drive space if a '%' is appended to the value +# - minSize: minimum partition size (optional parameter) +# - maxSize: maximum partition size (optional parameter) +# - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0) +# name: boolean or integer or string + +# Checking for available storage +# +# This overlaps with the setting of the same name in the welcome module's +# requirements section. If nothing is set by the welcome module, this +# value is used instead. It is still a problem if there is no required +# size set at all, and the replace and resize options will not be offered +# if no required size is set. +# +# The value is in Gibibytes (GiB). +# +# BIG FAT WARNING: except for OEM-phase-0 use, you should be using +# the welcome module, **and** configure this value in +# `welcome.conf`, not here. +# requiredStorage: 3.5 + + +lvm: + enable: false diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/preservefiles.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/preservefiles.conf new file mode 100644 index 0000000..379d2fc --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/preservefiles.conf @@ -0,0 +1,67 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration for the preserve-files job +# +# The *files* key contains a list of files to preserve. Each element of +# the list should have one of these forms: +# +# - an absolute path (probably within the host system). This will be preserved +# as the same path within the target system (chroot). If, globally, +# *dontChroot* is true, then these items will be ignored (since the +# destination is the same as the source). +# - a map with a *dest* key. The *dest* value is a path interpreted in the +# target system (if the global *dontChroot* is true, then the host is the +# target as well). Relative paths are not recommended. There are two +# ways to select the source data for the file: +# - *from*, which must have one of the values, below; it is used to +# preserve files whose pathname is known to Calamares internally. +# - *src*, to refer to a path interpreted in the host system. Relative +# paths are not recommended, and are interpreted relative to where +# Calamares is being run. +# Exactly one of the two source keys (either *from* or *src*) must be set. +# +# Special values for the key *from* are: +# - *log*, for the complete log file (up to the moment the preservefiles +# module is run), +# - *config*, for a JSON dump of the contents of global storage. +# Note that this may contain sensitive information, and should be +# given restrictive permissions. +# +# A map with a *dest* key can have these additional fields: +# - *perm*, is a colon-separated tuple of :: +# where is in octal (e.g. 4777 for wide-open, 0400 for read-only +# by owner). If set, the file's ownership and permissions are set to +# those values within the target system; if not set, no permissions +# are changed. +# - *optional*, is a boolean; if this is set to `true` then failure to +# preserve the file will **not** be counted as a failure of the +# module, and installation will proceed. Set this for files that might +# not exist in the host system (e.g. nvidia configuration files that +# are created in some boot scenarios and not in others). +# +# The target path (*dest*) is modified as follows: +# - `@@ROOT@@` is replaced by the path to the target root (may be /). +# There is never any reason to use this, since the *dest* is already +# interpreted in the target system. +# - `@@USER@@` is replaced by the username entered by on the user +# page (may be empty, for instance if no user page is enabled) +# +# +# +files: + - from: log + dest: /var/log/Calamares.log + perm: root:root:644 + - from: config + dest: /var/log/Calamares-install.json + perm: root:root:644 +# - src: /var/log/nvidia.conf +# dest: /var/log/Calamares-nvidia.conf +# optional: true + +# The *perm* key contains a default value to apply to all files listed +# above that do not have a *perm* key of their own. If not set, +# root:root:0400 (highly restrictive) is used. +# +# perm: "root:root:0400" diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/removeuser.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/removeuser.conf new file mode 100644 index 0000000..14755f5 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/removeuser.conf @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Removes a single user (with userdel) from the system. +# This is typically used in OEM setups or if the live user +# spills into the target system. +# +# The module never fails; if userdel fails, this is logged +# but the module still reports success and installation / setup +# continues as normal. +--- +# Username in the target system to be removed. +username: liveuser diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-before.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-before.conf new file mode 100644 index 0000000..5f702d2 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-before.conf @@ -0,0 +1,78 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration for the shell process job. +# +# Executes a list of commands found under the key *script*. +# If the top-level key *dontChroot* is true, then the commands +# are executed in the context of the live system, otherwise +# in the context of the target system. In all of the commands, +# the following variable expansions will take place: +# - `ROOT` is replaced by the root mount point of the **target** +# system from the point of view of the command (when run in the target +# system, e.g. when *dontChroot* is false, that will be `/`). +# - `USER` is replaced by the username, set on the user page. +# +# Variables are written as `${var}`, e.g. `${ROOT}`. +# +# The (global) timeout for the command list can be set with +# the *timeout* key. The value is a time in seconds, default +# is 30 seconds if not set. The timeout **must** be tuned, either +# globally or per-command (see below in the description of *script*), +# to the load or expected running-time of the command. +# +# - Setting a timeout of 30 for a `touch` command is probably exessive +# - Setting a timeout of 1 for a `touch` command might be low, +# on a slow disk where touch needs to be loaded from CDROM +# - Setting a timeout of 30 for a 1GB download is definitely low +# - Setting a timeout of 3600 for a 1GB download is going to leave +# the user in uncertainty for a loooong time. +# +# If a command starts with "-" (a single minus sign), then the +# return value of the command following the - is ignored; otherwise, +# a failing command will abort the installation. This is much like +# make's use of - in a command. +# +# The value of *script* may be: +# - a single string; this is one command that is executed. +# - a single object (this is not useful). +# - a list of items; these are executed one at a time, by +# separate shells (/bin/sh -c is invoked for each command). +# Each list item may be: +# - a single string; this is one command that is executed. +# - a single object, specifying a key *command* and (optionally) +# a key *timeout* to set the timeout for this specific +# command differently from the global setting. +# +# Using a single object is not useful because the same effect can +# be obtained with a single string and a global timeout, but when +# there are multiple commands to execute, one of them might have +# a different timeout than the others. +# +# To change the description of the job, set the *name* entries in *i18n*. +--- +# Set to true to run in host, rather than target system +dontChroot: false +# Tune this for the commands you're actually running +timeout: 999 + +# Script may be a single string (because false returns an error exit +# code, this will trigger a failure in the installation): +# +# script: "/usr/bin/false" + +# Script may be a list of strings (because false returns an error exit +# code, **but** the command starts with a "-", the error exit is +# ignored and installation continues): +# +# script: +# - "-/usr/bin/false" +# - "/bin/ls" +# - "/usr/bin/true" + +# Script may be a list of items (if the touch command fails, it is +# ignored; the slowloris command has a different timeout from the +# other commands in the list): +script: + - "-/usr/bin/pacman-key --init" + - "-/usr/bin/pacman-key --populate" diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-final.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-final.conf new file mode 100644 index 0000000..c6c9598 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/shellprocess-final.conf @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration for the shell process job. +# +# Executes a list of commands found under the key *script*. +# If the top-level key *dontChroot* is true, then the commands +# are executed in the context of the live system, otherwise +# in the context of the target system. In all of the commands, +# the following variable expansions will take place: +# - `ROOT` is replaced by the root mount point of the **target** +# system from the point of view of the command (when run in the target +# system, e.g. when *dontChroot* is false, that will be `/`). +# - `USER` is replaced by the username, set on the user page. +# +# Variables are written as `${var}`, e.g. `${ROOT}`. +# +# The (global) timeout for the command list can be set with +# the *timeout* key. The value is a time in seconds, default +# is 30 seconds if not set. The timeout **must** be tuned, either +# globally or per-command (see below in the description of *script*), +# to the load or expected running-time of the command. +# +# - Setting a timeout of 30 for a `touch` command is probably exessive +# - Setting a timeout of 1 for a `touch` command might be low, +# on a slow disk where touch needs to be loaded from CDROM +# - Setting a timeout of 30 for a 1GB download is definitely low +# - Setting a timeout of 3600 for a 1GB download is going to leave +# the user in uncertainty for a loooong time. +# +# If a command starts with "-" (a single minus sign), then the +# return value of the command following the - is ignored; otherwise, +# a failing command will abort the installation. This is much like +# make's use of - in a command. +# +# The value of *script* may be: +# - a single string; this is one command that is executed. +# - a single object (this is not useful). +# - a list of items; these are executed one at a time, by +# separate shells (/bin/sh -c is invoked for each command). +# Each list item may be: +# - a single string; this is one command that is executed. +# - a single object, specifying a key *command* and (optionally) +# a key *timeout* to set the timeout for this specific +# command differently from the global setting. +# +# Using a single object is not useful because the same effect can +# be obtained with a single string and a global timeout, but when +# there are multiple commands to execute, one of them might have +# a different timeout than the others. +# +# To change the description of the job, set the *name* entries in *i18n*. +--- +# Set to true to run in host, rather than target system +dontChroot: false +# Tune this for the commands you're actually running +timeout: 999 + +# Script may be a single string (because false returns an error exit +# code, this will trigger a failure in the installation): +# +# script: "/usr/bin/false" + +# Script may be a list of strings (because false returns an error exit +# code, **but** the command starts with a "-", the error exit is +# ignored and installation continues): +# +# script: +# - "-/usr/bin/false" +# - "/bin/ls" +# - "/usr/bin/true" + +# Script may be a list of items (if the touch command fails, it is +# ignored; the slowloris command has a different timeout from the +# other commands in the list): +script: + - "-rm -r ${ROOT}/home/${USER}/.config/alci-dwm" + - "-rm ${ROOT}/etc/sudoers.d/g_wheel" + - "-rm -r ${ROOT}/etc/mkinitcpio.conf.d/" + - "-rm -r ${ROOT}/etc/systemd/system/getty@tty1.service.d" + - "-rm -r ${ROOT}/etc/systemd/system/multi-user.target.wants/pacman-init.service" + - "-rm -r ${ROOT}/etc/systemd/system/pacman-init.service" + - "-rm ${ROOT}/etc/systemd/system/etc-pacman.d-gnupg.mount" + - "-rm ${ROOT}/root/.automated_script.sh" + - "-rm ${ROOT}/root/.zlogin" + - "-rm ${ROOT}/etc/polkit-1/rules.d/49-nopasswd_global.rules" + - "-rm ${ROOT}/etc/polkit-1/rules.d/49-nopasswd-calamares.rules" + - command: "/usr/local/bin/displaymanager-check" + - command: "/usr/local/bin/virtual-machine-check" + - command: "/usr/local/bin/base-install" + - "-rm ${ROOT}/usr/local/bin/displaymanager-check" + - "-rm ${ROOT}/usr/local/bin/virtual-machine-check" + - "-rm ${ROOT}/usr/local/bin/base-install" diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/unpackfs.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/unpackfs.conf new file mode 100644 index 0000000..abe25f0 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/unpackfs.conf @@ -0,0 +1,96 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Unsquash / unpack a filesystem. Multiple sources are supported, and +# they may be squashed or plain filesystems. +# +# Configuration: +# +# from globalstorage: rootMountPoint +# from job.configuration: the path to where to mount the source image(s) +# for copying an ordered list of unpack mappings for image file <-> +# target dir relative to rootMountPoint. + +--- +# Each list item is unpacked, in order, to the target system. +# +# Each list item has the following **mandatory** attributes: +# - *source* path relative to the live / intstalling system to the image +# - *sourcefs* the type of the source files; valid entries are +# - `ext4` (copies the filesystem contents) +# - `squashfs` (unsquashes) +# - `file` (copies a file or directory) +# - (may be others if mount supports it) +# - *destination* path relative to rootMountPoint (so in the target +# system) where this filesystem is unpacked. It may be an +# empty string, which effectively is / (the root) of the target +# system. +# +# Each list item **optionally** can include the following attributes: +# - *exclude* is a list of values that is expanded into --exclude +# arguments for rsync (each entry in exclude gets its own --exclude). +# - *excludeFile* is a single file that is passed to rsync as an +# --exclude-file argument. This should be a full pathname +# inside the **host** filesystem. +# - *weight* is useful when the entries take wildly different +# times to unpack (e.g. with a squashfs, and one single file) +# and the total weight of this module should be distributed +# differently between the entries. (This is only relevant when +# there is more than one entry; by default all the entries +# have the same weight, 1) +# +# EXAMPLES +# +# Usually you list a filesystem image to unpack; you can use +# squashfs or an ext4 image. An empty destination is equivalent to "/", +# the root of the target system. The destination directory must exist +# in the target system. +# +# - source: "/path/to/filesystem.sqfs" +# sourcefs: "squashfs" +# destination: "" +# +# Multiple entries are unpacked in-order; if there is more than one +# item then only the first must exist beforehand -- it's ok to +# create directories with one unsquash and then to use those +# directories as a target from a second unsquash. +# +# - source: "/path/to/another/filesystem.img" +# sourcefs: "ext4" +# destination: "" +# - source: "/path/to/another/filesystem2.img" +# sourcefs: "ext4" +# destination: "/usr/lib/extra" +# +# You can list filesystem source paths relative to the Calamares run +# directory, if you use -d (this is only useful for testing, though). +# +# - source: ./example.sqfs +# sourcefs: squashfs +# destination: "" +# +# You can list individual files (copied one-by-one), or directories +# (the files inside this directory are copied directly to the destination, +# so no "dummycpp/" subdirectory is created in this example). +# Do note that the target directory must exist already (e.g. from +# extracting some other filesystem). +# +# - source: ../CHANGES +# sourcefs: file +# destination: "/tmp/derp" +# - source: ../src/modules/dummycpp +# sourcefs: file +# destination: "/tmp/derp" +# +# The *destination* and *source* are handed off to rsync, so the semantics +# of trailing slashes apply. In order to *rename* a file as it is +# copied, specify one single file (e.g. CHANGES) and a full pathname +# for its destination name, as in the example below. + +unpack: + - source: "/run/archiso/bootmnt/arch/x86_64/airootfs.sfs" + sourcefs: "squashfs" + destination: "" + - source: "/run/archiso/bootmnt/arch/boot/x86_64/vmlinuz-linux-zen" + sourcefs: "file" + destination: "/boot/vmlinuz-linux-zen" diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/user-theme.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/user-theme.conf new file mode 100644 index 0000000..46ae09d --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/user-theme.conf @@ -0,0 +1,39 @@ +--- +# Configuration for the user-theme module + +# Size settings +style: + icon_size: 32 # Icon mérete pixelben + font_size: 12 # Betűméret pixelben + spacing: 10 # Elemek közötti távolság pixelben + row_height: 48 # Egy sor magassága pixelben + +# Available themes +themes: + - name: "Blue Theme" + script: "/usr/share/themes/RosColours/Yaru-Blue-Dark/ros-yaru-blue.sh" + icon: "blue" + + - name: "Olive Theme" + script: "/usr/share/themes/RosColours/Yaru-Olive-Dark/ros-yaru-olive.sh" + icon: "olive" + + - name: "Orange Theme" + script: "/usr/share/themes/RosColours/Yaru-Orange-Dark/ros-yaru-orange.sh" + icon: "orange" + + - name: "Purple Theme" + script: "/usr/share/themes/RosColours/Yaru-Purple-Dark/ros-yaru-purple.sh" + icon: "purple" + + - name: "Pussian Green Theme" + script: "/usr/share/themes/RosColours/Yaru-Pussiangreen-Dark/ros-yaru-pussiangreen.sh" + icon: "pussiangreen" + + - name: "Red Theme" + script: "/usr/share/themes/RosColours/Yaru-Red-Dark/ros-yaru-red.sh" + icon: "red" + + - name: "Sage Theme" + script: "/usr/share/themes/RosColours/Yaru-Sage-Dark/ros-yaru-sage.sh" + icon: "sage" diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/users.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/users.conf new file mode 100644 index 0000000..04282b2 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/users.conf @@ -0,0 +1,218 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration for the one-user-system user module. +# +# Besides these settings, the users module also places the following +# keys into the Global Storage area, based on user input in the view step. +# +# - hostname +# - username +# - password (obscured) +# - autologinUser (if enabled, set to username) +# +# These Global Storage keys are set when the configuration for this module +# is read and when they are modified in the UI. +--- +# Used as default groups for the created user. +# Adjust to your Distribution defaults. +# +# Each entry in the *defaultGroups* list is either: +# - a string, naming a group; this is a **non**-system group +# which does not need to exist in the target system; if it +# does not exist, it will be created. +# - an entry with subkeys *name*, *must_exist* and *system*; +# if the group *must_exist* and does not, an error is thrown +# and the installation fails. +# +# The group is created if it does not exist, and it is +# created as a system group (GID < 1000) or user group +# (GID >= 1000) depending on the value of *system*. +defaultGroups: + - name: users + must_exist: true + system: true + - lp + - video + - network + - storage + - name: wheel + must_exist: false + system: true + - audio + - plugdev + +# Some Distributions require a 'autologin' group for the user. +# Autologin causes a user to become automatically logged in to +# the desktop environment on boot. +# Disable when your Distribution does not require such a group. +#autologinGroup: autologin +# You can control the initial state for the 'autologin checkbox' here. +# Possible values are: +# - true to check or +# - false to uncheck +# These set the **initial** state of the checkbox. +# doAutologin: true + +# When *sudoersGroup* is set to a non-empty string, Calamares creates a +# sudoers file for the user. This file is located at: +# `/etc/sudoers.d/10-installer` +# Remember to add the (value of) *sudoersGroup* to *defaultGroups*. +# +# If your Distribution already sets up a group of sudoers in its packaging, +# remove this setting (delete or comment out the line below). Otherwise, +# the setting will be duplicated in the `/etc/sudoers.d/10-installer` file, +# potentially confusing users. +sudoersGroup: wheel +# If set to `false` (the default), writes a sudoers file with `(ALL)` +# so that the command can be run as any user. If set to `true`, writes +# `(ALL:ALL)` so that any user and any group can be chosen. +sudoersConfigureWithGroup: true + +# Setting this to false, causes the root account to be disabled. +# When disabled, hides the "Use the same password for administrator" +# checkbox. Also hides the "Choose a password" and associated text-inputs. +setRootPassword: true + +# You can control the initial state for the 'reuse password for root' +# checkbox here. Possible values are: +# - true to check or +# - false to uncheck +# +# When checked, the user password is used for the root account too. +# +# NOTE: *doReusePassword* requires *setRootPassword* to be enabled. +doReusePassword: true + +# These are optional password-requirements that a distro can enforce +# on the user. The values given in this sample file set only very weak +# validation settings. +# +# - nonempty rejects empty passwords +# - there are no length validations +# - libpwquality (if it is enabled at all) has no length of class +# restrictions, although it will still reject palindromes and +# dictionary words with these settings. +# +# Checks may be listed multiple times; each is checked separately, +# and no effort is done to ensure that the checks are consistent +# (e.g. specifying a maximum length less than the minimum length +# will annoy users). +# +# The libpwquality check relies on the (optional) libpwquality library. +# Its value is a list of configuration statements that could also +# be found in pwquality.conf, and these are handed off to the +# libpwquality parser for evaluation. The check is ignored if +# libpwquality is not available at build time (generates a warning in +# the log). The Calamares password check rejects passwords with a +# score of < 40 with the given libpwquality settings. +# +# (additional checks may be implemented in CheckPWQuality.cpp and +# wired into UsersPage.cpp) +# +# - To disable specific password validations: +# comment out the relevant 'passwordRequirements' keys below. +# - To disable all password validations: +# set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true. +# (That will show the box *Allow weak passwords* in the user- +# interface, and check it by default). +#passwordRequirements: +# nonempty: true +# minLength: -1 # Password at least this many characters +# maxLength: -1 # Password at most this many characters +# libpwquality: +# - minlen=0 +# - minclass=0 + +# You can control the visibility of the 'strong passwords' checkbox here. +# Possible values are: +# - true to show or +# - false to hide (default) +# the checkbox. This checkbox allows the user to choose to disable +# password-strength-checks. By default the box is **hidden**, so +# that you have to pick a password that satisfies the checks. +allowWeakPasswords: false +# You can control the initial state for the 'strong passwords' checkbox here. +# Possible values are: +# - true to uncheck or +# - false to check (default) +# the checkbox by default. Since the box is labeled to enforce strong +# passwords, in order to **allow** weak ones by default, the box needs +# to be unchecked. +allowWeakPasswordsDefault: true + +# User settings +# +# The user can enter a username, but there are some other +# hidden settings for the user which are configurable in Calamares. +# +# Key *user* has the following sub-keys: +# +# - *shell* Shell to be used for the regular user of the target system. +# There are three possible kinds of settings: +# - unset (i.e. commented out, the default), act as if set to /bin/bash +# - empty (explicit), don't pass shell information to useradd at all +# and rely on a correct configuration file in /etc/default/useradd +# - set, non-empty, use that path as shell. No validation is done +# that the shell actually exists or is executable. +# - *forbidden_names* Login names that may not be used. This list always +# contains "root" and "nobody", but may be extended to list other special +# names for a given distro (eg. "video", or "mysql" might not be a valid +# end-user login name). +user: + shell: /bin/bash + forbidden_names: [ root ] + +# Hostname settings +# +# The user can enter a hostname; this is configured into the system +# in some way. There are settings for how a hostname is guessed (as +# a default / suggestion) and where (or how) the hostname is set in +# the target system. +# +# Key *hostname* has the following sub-keys: +# +# - *location* How the hostname is set in the target system: +# - *None*, to not set the hostname at all +# - *EtcFile*, to write to `/etc/hostname` directly +# - *Etc*, identical to above +# - *Hostnamed*, to use systemd hostnamed(1) over DBus +# - *Transient*, to remove `/etc/hostname` from the target +# The default is *EtcFile*. Setting this to *None* or *Transient* will +# hide the hostname field. +# - *writeHostsFile* Should /etc/hosts be written with a hostname for +# this machine (also adds localhost and some ipv6 standard entries). +# Defaults to *true*. +# - *template* Is a simple template for making a suggestion for the +# hostname, based on user data. The default is "${first}-${product}". +# This is used only if the hostname field is shown. KMacroExpander is +# used; write `${key}` where `key` is one of the following: +# - *first* User's first name (whatever is first in the User Name field, +# which is first-in-order but not necessarily a "first name" as in +# "given name" or "name by which you call someone"; beware of western bias) +# - *name* All the text in the User Name field. +# - *login* The login name (which may be suggested based on User Name) +# - *product* The hardware product, based on DMI data +# - *product2* The product as described by Qt +# - *cpu* CPU name +# - *host* Current hostname (which may be a transient hostname) +# Literal text in the template is preserved. Calamares tries to map +# `${key}` values to something that will fit in a hostname, but does not +# apply the same to literal text in the template. Do not use invalid +# characters in the literal text, or no suggeston will be done. +# - *forbidden_names* lists hostnames that may not be used. This list +# always contains "localhost", but may list others that are unsuitable +# or broken in special ways. +hostname: + location: EtcFile + writeHostsFile: true + #template: "alci-${cpu}" + forbidden_names: [ localhost ] + +presets: + fullName: + # value: "OEM User" + editable: true + loginName: + # value: "oem" + editable: true diff --git a/releng/airootfs/root/calamares-build/etc/calamares/modules/welcome.conf b/releng/airootfs/root/calamares-build/etc/calamares/modules/welcome.conf new file mode 100644 index 0000000..206cbb4 --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/modules/welcome.conf @@ -0,0 +1,121 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration for the welcome module. The welcome page +# displays some information from the branding file. +# Which parts it displays can be configured through +# the show* variables. +# +# In addition to displaying the welcome page, this module +# can check requirements for installation. +--- +# Display settings for various buttons on the welcome page. +# The URLs themselves come from `branding.desc`. Each button +# is show if the corresponding *show* setting +# here is "true". If the setting is "false", the button is hidden. +# Empty or not-set is interpreted as "false". +# +# TODO:3.3 Remove the URL fallback here; URLs only in `branding.desc` +# +# The setting can also be a full URL which will then be used +# instead of the one from the branding file. +showSupportUrl: false +showKnownIssuesUrl: false +showReleaseNotesUrl: false +# TODO:3.3 Move to branding, keep only a bool here +showDonateUrl: false + +# Requirements checking. These are general, generic, things +# that are checked. They may not match with the actual requirements +# imposed by other modules in the system. +requirements: + # Amount of available disk, in GiB. Floating-point is allowed here. + # Note that this does not account for *usable* disk, so it is possible + # to satisfy this requirement, yet have no space to install to. + requiredStorage: 10 + + # Amount of available RAM, in GiB. Floating-point is allowed here. + requiredRam: 1.0 + + # To check for internet connectivity, Calamares does a HTTP GET + # on this URL; on success (e.g. HTTP code 200) internet is OK. + # Use a privacy-respecting URL here, preferably in your distro's domain. + # + # The URL is only used if "internet" is in the *check* list below. + internetCheckUrl: http://example.com + # + # This may be a single URL, or a list or URLs, in which case the + # URLs will be checked one-by-one; if any of them returns data, + # internet is assumed to be OK. This can be used to check via + # a number of places, where some domains may be down or blocked. + # + # To use a list of URLs, just use YAML list syntax (e.g. + # + # internetCheckUrl: + # - http://www.kde.org + # - http://www.freebsd.org + # + # or short-form + # + # internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ] + + # List conditions to check. Each listed condition will be + # probed in some way, and yields true or false according to + # the host system satisfying the condition. + # + # This sample file lists all the conditions that are known. + check: + - storage + - ram + - power + - internet + - root + - screen + + # List conditions that **must** be satisfied (from the list + # of conditions, above) for installation to proceed. + # If any of these conditions are not met, the user cannot + # continue past the welcome page. + required: + - storage + - ram + # - root + +# GeoIP checking +# +# This can be used to pre-select a language based on the country +# the user is currently in. It *assumes* that there's internet +# connectivity, though. Configuration is like in the locale module, +# but remember to use a URL that returns full data **and** to +# use a selector that will pick the country, not the timezone. +# +# To disable GeoIP checking, either comment-out the entire geoip section, +# or set the *style* key to an unsupported format (e.g. `none`). +# Also, note the analogous feature in `src/modules/locale/locale.conf`, +# which is where you will find complete documentation. +# +# For testing, the *style* may be set to `fixed`, any URL that +# returns data (e.g. `http://example.com`) and then *selector* +# sets the data that is actually returned (e.g. "DE" to simulate +# the machine being in Germany). +# +# NOTE: the *selector* must pick the country code from the GeoIP +# data. Timezone, city, or other data will not be recognized. +# +geoip: + style: "json" + url: "https://geoip.kde.org/v1/calamares" + selector: "" + +# User interface +# +# The "select language" icon is an international standard, but it +# might not theme very well with your desktop environment. +# Fill in an icon name (following FreeDesktop standards) to +# use that named icon instead of the usual one. +# +# Leave blank or unset to use the international standard. +# +# Known icons in this space are "set-language" and "config-language". +# +# languageIcon: set-language diff --git a/releng/airootfs/root/calamares-build/etc/calamares/settings.conf b/releng/airootfs/root/calamares-build/etc/calamares/settings.conf new file mode 100644 index 0000000..7a8f51a --- /dev/null +++ b/releng/airootfs/root/calamares-build/etc/calamares/settings.conf @@ -0,0 +1,245 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Configuration file for Calamares +# +# This is the top-level configuration file for Calamares. +# It specifies what modules will be used, as well as some +# overall characteristics -- is this a setup program, or +# an installer. More specific configuration is devolved +# to the branding file (for the UI) and the individual +# module configuration files (for functionality). +--- +# Modules can be job modules (with different interfaces) and QtWidgets view +# modules. They could all be placed in a number of different paths. +# "modules-search" is a list of strings, each of these can either be a full +# path to a directory or the keyword "local". +# +# "local" means: +# - modules in $LIBDIR/calamares/modules, with +# - settings in SHARE/calamares/modules or /etc/calamares/modules. +# In debug-mode (e.g. calamares -d) "local" also adds some paths +# that make sense from inside the build-directory, so that you +# can build-and-run with the latest modules immediately. +# +# Strings other than "local" are taken as paths and interpreted +# relative to wherever Calamares is started. It is therefore **strongly** +# recommended to use only absolute paths here. This is mostly useful +# if your distro has forks of standard Calamares modules, but also +# uses some form of upstream packaging which might overwrite those +# forked modules -- then you can keep modules somewhere outside of +# the "regular" module tree. +# +# +# YAML: list of strings. +modules-search: [ local ] + +# Instances section. This section is optional, and it defines custom instances +# for modules of any kind. An instance entry has these keys: +# - *module* name, which matches the module name from the module descriptor +# (usually the name of the directory under `src/modules/`, but third- +# party modules may diverge. +# - *id* (optional) an identifier to distinguish this instance from +# all the others. If none is given, the name of the module is used. +# Together, the module and id form an instance key (see below). +# - *config* (optional) a filename for the configuration. If none is +# given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome +# module) +# - *weight* (optional) In the *exec* phase of the sequence, progress +# is reported as jobs are completed. The jobs from a single module +# together contribute the full weight of that module. The overall +# progress (0 .. 100%) is divided up according to the weight of each +# module. Give modules that take a lot of time to complete, a larger +# weight to keep the overall progress moving along steadily. This +# weight overrides a weight given in the module descriptor. If no weight +# is given, uses the value from the module descriptor, or 1 if there +# isn't one there either. +# +# The primary goal of this mechanism is to allow loading multiple instances +# of the same module, with different configuration. If you don't need this, +# the instances section can safely be left empty. +# +# Module name plus instance name makes an instance key, e.g. +# "webview@owncloud", where "webview" is the module name (for the webview +# viewmodule) and "owncloud" is the instance name. In the *sequence* +# section below, use instance-keys to name instances (instead of just +# a module name, for modules which have only a single instance). +# +# Every module implicitly has an instance with the instance name equal +# to its module name, e.g. "welcome@welcome". In the *sequence* section, +# mentioning a module without a full instance key (e.g. "welcome") +# means that implicit module. +# +# An instance may specify its configuration file (e.g. `webview-home.conf`). +# The implicit instances all have configuration files named `.conf`. +# This (implict) way matches the source examples, where the welcome +# module contains an example `welcome.conf`. Specify a *config* for +# any module (also implicit instances) to change which file is used. +# +# For more information on running module instances, run Calamares in debug +# mode and check the Modules page in the Debug information interface. +# +# A module that is often used with instances is shellprocess, which will +# run shell commands specified in the configuration file. By configuring +# more than one instance of the module, multiple shell sessions can be run +# during install. +# +# YAML: list of maps of string:string key-value pairs. +#instances: +#- id: owncloud +# module: webview +# config: owncloud.conf + +# Sequence section. This section describes the sequence of modules, both +# viewmodules and jobmodules, as they should appear and/or run. +# +# A jobmodule instance key (or name) can only appear in an exec phase, whereas +# a viewmodule instance key (or name) can appear in both exec and show phases. +# There is no limit to the number of show or exec phases. However, the same +# module instance key should not appear more than once per phase, and +# deployers should take notice that the global storage structure is persistent +# throughout the application lifetime, possibly influencing behavior across +# phases. A show phase defines a sequence of viewmodules (and therefore +# pages). These viewmodules can offer up jobs for the execution queue. +# +# An exec phase displays a progress page (with brandable slideshow). This +# progress page iterates over the modules listed in the *immediately +# preceding* show phase, and enqueues their jobs, as well as any other jobs +# from jobmodules, in the order defined in the current exec phase. +# +# It then executes the job queue and clears it. If a viewmodule offers up a +# job for execution, but the module name (or instance key) isn't listed in the +# immediately following exec phase, this job will not be executed. +# +# YAML: list of lists of strings. + +instances: +- id: before + module: shellprocess + config: shellprocess-before.conf +- id: final + module: shellprocess + config: shellprocess-final.conf + + +sequence: +- show: + - welcome +# - notesqml + - locale + - keyboard + - partition + - users +# - user-theme +# - tracking + - summary +- exec: + - partition +# - zfs + - mount + - unpackfs + - machineid + - fstab + - locale + - keyboard + - localecfg + - luksbootkeyfile + - luksopenswaphookcfg + - initcpiocfg + - initcpio + - removeuser + - users + - displaymanager + - networkcfg + - hwclock + - services-systemd + - shellprocess@before + - packages + - grubcfg + - bootloader + - shellprocess@final + - preservefiles +# - user-theme + - umount +- show: +# - webview@owncloud + - finished + +# A branding component is a directory, either in SHARE/calamares/branding or +# in /etc/calamares/branding (the latter takes precedence). The directory must +# contain a YAML file branding.desc which may reference additional resources +# (such as images) as paths relative to the current directory. +# +# A branding component can also ship a QML slideshow for execution pages, +# along with translation files. +# +# Only the name of the branding component (directory) should be specified +# here, Calamares then takes care of finding it and loading the contents. +# +# YAML: string. +branding: default + +# If this is set to true, Calamares will show an "Are you sure?" prompt right +# before each execution phase, i.e. at points of no return. If this is set to +# false, no prompt is shown. Default is false, but Calamares will complain if +# this is not explicitly set. +# +# YAML: boolean. +prompt-install: true + +# If this is set to true, Calamares will execute all target environment +# commands in the current environment, without chroot. This setting should +# only be used when setting up Calamares as a post-install configuration tool, +# as opposed to a full operating system installer. +# +# Some official Calamares modules are not expected to function with this +# setting. (e.g. partitioning seems like a bad idea, since that is expected to +# have been done already) +# +# Default is false (for a normal installer), but Calamares will complain if +# this is not explicitly set. +# +# YAML: boolean. +dont-chroot: false + +# If this is set to true, Calamares refers to itself as a "setup program" +# rather than an "installer". Defaults to the value of dont-chroot, but +# Calamares will complain if this is not explicitly set. +oem-setup: false + +# If this is set to true, the "Cancel" button will be disabled entirely. +# The button is also hidden from view. +# +# This can be useful if when e.g. Calamares is used as a post-install +# configuration tool and you require the user to go through all the +# configuration steps. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +disable-cancel: false + +# If this is set to true, the "Cancel" button will be disabled once +# you start the 'Installation', meaning there won't be a way to cancel +# the Installation until it has finished or installation has failed. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +disable-cancel-during-exec: false + +# If this is set to true, the "Next" and "Back" button will be hidden once +# you start the 'Installation'. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +hide-back-and-next-during-exec: false + +# If this is set to true, then once the end of the sequence has +# been reached, the quit (done) button is clicked automatically +# and Calamares will close. Default is false: the user will see +# that the end of installation has been reached, and that things are ok. +# +# +quit-at-end: false diff --git a/releng/airootfs/root/calamares-build/usr/bin/ckbcomp b/releng/airootfs/root/calamares-build/usr/bin/ckbcomp new file mode 100644 index 0000000..61af133 --- /dev/null +++ b/releng/airootfs/root/calamares-build/usr/bin/ckbcomp @@ -0,0 +1,4844 @@ +#!/usr/bin/perl + +# ckbcomp -- translate XKB layout to loadkeys or kbdcontrol format +# Copyright © 2005,2006 Anton Zinoviev + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# If you have not received a copy of the GNU General Public License +# along with this program, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use warnings 'all'; +use strict; + +my $debug_flag = 1; +sub debug { + if ($debug_flag) { + print STDERR "@_"; + } +} + +sub warning { + print STDERR "WARNING: @_"; +} + +########### ARGUMENTS ############################################### + +my $charmap; +my $compose_charmap; +my $acm; + +my $verbosity = 0; + +my $installdir=$0; +$installdir =~ s|/[^/]*$||g; +if ($installdir =~ m|/bin$|) { + $installdir =~ s|/bin$||; +} else { + $installdir .= "/.."; +} +if ( $installdir eq '' || ! -d "$installdir/bin") { + $installdir = '/usr'; +} + +my @xdirs = ('/etc/console-setup/ckb', + "$installdir/etc/console-setup/ckb", + '/usr/local/share/X11/xkb', + '/usr/share/X11/xkb', + '/etc/X11/xkb'); + +my $keycodes; +my $symbols; + +my $rules; +my $model; +my @layouts; +my @variants = (); +my @options = (); +my $compact = 0; +my $backspace = ''; +my $freebsd = 0; + +while (@ARGV) { + $_ = shift @ARGV; + if (s/^-//) { + if (/^charmap$/) { + if ($charmap) { + die "$0: No more than one -charmap option is allowed\n"; + } + $charmap = $ARGV[0]; + shift @ARGV; + } elsif (/^ccharmap$/) { + if ($compose_charmap) { + die "$0: No more than one -ccharmap option is allowed\n"; + } + $compose_charmap = $ARGV[0]; + shift @ARGV; + } elsif (/^v(erbose)?$/) { + if ($verbosity) { + die "$0: No more than one -verbose option is allowed\n"; + } + if ($ARGV[0] =~ /^[0-9]|10$/) { + $verbosity = $ARGV[0]; + shift @ARGV; + } else { + $verbosity = 5; + } + } elsif (/^I(.*)$/) { + @xdirs = ($1, @xdirs); + } elsif (/^keycodes$/) { + if ($keycodes) { + die "$0: No more than one -keycodes option is allowed\n"; + } + $keycodes = $ARGV[0]; + shift @ARGV; + } elsif (/^symbols$/) { + if ($symbols) { + die "$0: No more than one -symbols option is allowed\n"; + } + $symbols = $ARGV[0]; + shift @ARGV; + } elsif (/^rules$/) { + if ($rules) { + die "$0: No more than one -rules option is allowed\n"; + } + $rules = $ARGV[0]; + shift @ARGV; + } elsif (/^model$/) { + if ($model) { + die "$0: No more than one -model option is allowed\n"; + } + $model = $ARGV[0]; + $model =~ s/[[:space:]]//g; + shift @ARGV; + } elsif (/^layout$/) { + if (@layouts) { + die "$0: No more than one -layout option is allowed\n"; + } + $ARGV[0] =~ s/[[:space:]]//g; + @layouts = split (/,/, $ARGV[0], -1); + shift @ARGV; + } elsif (/^variant$/) { + if (@variants) { + die "$0: No more than one -variant option is allowed\n"; + } + $ARGV[0] =~ s/[[:space:]]//g; + @variants = split (/,/, $ARGV[0], -1); + shift @ARGV; + } elsif (/^option$/) { + $ARGV[0] =~ s/[[:space:]]//g; + @options = (@options, split (/,/, $ARGV[0], -1)); + shift @ARGV; + } elsif (/^help$|^-help$|^\?$/) { + print < [ [