Updating icu/ncurses/whatever breaks a ton of packages

Make sure you have the correct repositories activated in /etc/pacman.conf. Testing [gremlins] repositories should be disabled by default. If you want to use them, you should also uncomment [testing] from Arch. These must be above all other repositories. Note: [gremlins] is Artix equivalent of Arch [testing]

 #Include = /etc/pacman.d/mirrorlist
 #Include = /etc/pacman.d/mirrorlist
 #Include = /etc/pacman.d/mirrorlist

 Include = /etc/pacman.d/mirrorlist
 Include = /etc/pacman.d/mirrorlist
 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.
 Include = /etc/pacman.d/mirrorlist

Since we still depend on some of Arch packages from [extra] and most of [community], some version mismatches during updates and until we fully sync may cause problems. In such case, enabling temporarily the testing repositories might just give you the right package to fix your situation.

The list below might not be updated, always check the Gitea repository.

 ## Artix Linux repository mirrorlist
 ## Generated on 2019-01-12
 # Artix mirrors
 Server = https://mirrors.dotsrc.org/artix-linux/repos/$repo/os/$arch
 Server = https://artix.wheaton.edu/repos/$repo/os/$arch
 Server = https://mirror.clarkson.edu/artix-linux/repos/$repo/os/$arch
 Server = https://ftp.cc.uoc.gr/mirrors/linux/artixlinux/$repo/os/$arch
 Server = http://artix.unixpeople.org/repos/$repo/os/$arch
 Server = https://mirrors.tuna.tsinghua.edu.cn/artixlinux/$repo/os/$arch
 Server = http://www.nylxs.com/mirror/repos/$repo/os/$arch
 Server = https://ftp.sh.cvut.cz/artix-linux/$repo/os/$arch
 Server = https://mirrors.nettek.us/artix-linux/$repo/os/$arch
 Server = http://mirror1.artixlinux.org/repos/$repo/os/$arch

Invalid or corrupted packages (PGP signature)

If pacman warns you about invalid or corrupted packages, it may be due to obsolete PGP keys or Arch-signed packages in the repos. Make sure the Artix repos are above the Arch ones and:

1. Reinstall keyrings including the latest keys:

 pacman -Sy gnupg archlinux-keyring artix-keyring --force

If you can't install the artix-keyring because of signature errors, perform step 2 and repeat 1, otherwise proceed to step 3.

2. Remove old and possibly expired, revoked or invalid keys by issuing this command:

 rm -r /etc/pacman.d/gnupg

3. Initialize the pacman keyring:

 pacman-key --init

4. Load the signature keys:

 pacman-key --populate archlinux artix

5. Clear out the software packages downloaded during the aborted installation:

 pacman -Scc
 pacman -Syyu

6. In a pinch, install the package with the -U pacman switch:

 pacman -U /var/cache/pacman/pkg/package-1.3.9-1.x86_64.pkg.tar.xz

Can't play games, run Steam etc!

You must enable [lib32] from Artix and [multilib] from Arch in /etc/pacman.conf and install relevant packages for 32bit executables. Make sure [lib32] is above [multilib] (as a matter of fact all Artix repos must be above Arch's).

 Include = /etc/pacman.d/mirrorlist
 Include = /etc/pacman.d/mirrorlist-arch

Warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.

Install parted and execute:

 parted -s /dev/sdx set 1 bios_grub on

KDE/Plasma won't start, saying something bad about dbus!

See next section.

I'm having dbus-related problems and I keep seeing messages about /etc/machine-id

This file originated from dbus development and was adopted by systemd as a universally unique machine identifier. Ergo, it is a useless (for the end user) tag but apparently of some use to dbus because "The important properties of the machine UUID are that 1) it remains unchanged until the next reboot and 2) it is different for any two running instances of the OS kernel. That is, if two processes see the same UUID, they should also see the same shared memory, UNIX domain sockets, local X displays, localhost.localdomain resolution, process IDs, and so forth." Also, "The simple configuration file format of /etc/machine-id originates in the /var/lib/dbus/machine-id file introduced by D-Bus. In fact, this latter file might be a symlink to /etc/machine-id." and This ID uniquely identifies the host. It should be considered "confidential", and must not be exposed in untrusted environments, in particular on the network. Privacy-conscious people might want to regenerate their machine-ids frequently; a new ID can be generated with

 dbus-uuidgen  >| /etc/machine-id


 dbus-uuidgen  >| /var/lib/dbus/machine-id 

Btrfs can't boot from RAID

In some setus, Btrfs can't boot if the root filesystem is on RAID subvolumes, despite adding btrfs to /etc/mkinitcpio.conf hooks array (and re-creating a new initramfs) or using rootflags=device=/dev/sda2,device=/dev/sdb2 as a workaround in the kernel command line. The solution is to instruct the btrfs hook create the create the node manually; edit /usr/lib/initcpio/hooks/btrfs as follows:

 run_hook() {
    mknod /dev/btrfs-control c 10 234
    btrfs device scan

and re-create the initramfs (mkinitcpio -P).

Service file can't be found(aka "service 'service' doesn't exist" in OpenRC)

Due to several reasons, in order to add a service script you need to install an additional package that provides the required script for your init system. In order to that, you need to install a package with the name of the service you want along with your init, separated by a - .

For example, if you want to install bluez and install the install script also, and you have OpenRC:

 sudo pacman -S bluez bluez-utils bluez-openrc
 ls /etc/init.d(This is for checking your service name. Directory may change according to init)
 sudo rc-update add bluetoothd default
 sudo rc-service bluetoothd start

Credit to sherwyns_life from the Telegram group chat for the idea of this section.