Arch Linux Install Guide for SteamOS & Nvidia

Welcome to my guide on setting up Arch Linux with SteamOS. As an ardent Linux user, I know how much we treasure the ability to tweak and tailor our systems to our liking. While there are many brilliant solutions out there, there are times when they don’t quite hit the mark with their offerings.

Take ChimeraOS, for example. What started as GamerOS has truly come a long way, developing into a powerful and seamless gaming experience right out of the box. I’ve closely followed its evolution and have nothing but admiration for the remarkable job done by its developers.

However, even with its exceptional features, I ran into a few limitations. A couple that stood out were the lack of full Nvidia support and software raid support. Not to pin the blame entirely on ChimeraOS—far from it. The nature of Linux is such that no single solution can cater to all its diverse user base.

So, in the true spirit of Linux, I decided to create a guide to bring together the best of both worlds. Here, you’ll find a step-by-step guide to setting up Arch Linux enriched with the functionality of SteamOS and complemented by the standout features of ChimeraOS. Let’s dive in and embark on a journey to create your tailored gaming experience!

1. Check Internet Connection

First, ensure that you are connected to the internet:

ping -c 3 google.com
2. Update System Clock

Ensure your system clock is accurate:

# timedatectl set-ntp true
3. Partition the Disk

We are going to use fdisk to create the partitions:

# fdisk /dev/nvme0n1
g       # create a new empty GPT partition table
n       # add a new partition
1       # partition number 1
        # default - start at beginning of disk 
+512M   # 512 MB boot partition
n       # add a new partition
2       # partition number 2
        # default - start immediately after preceding partition
+16G    # 16 GB partition for swap
n       # add a new partition
3       # partition number 3
        # default, start immediately after preceding partition
        # default, extend partition to end of disk
t       # change partition type
1       # select the first partition
1       # change it to EFI System
t       # change partition type
2       # select the second partition
19      # change it to Linux swap
w       # write the partition table

Then, we are going to create the filesystems:

# mkfs.fat -F32 /dev/nvme0n1p1
# mkswap /dev/nvme0n1p2
# mkfs.ext4 /dev/nvme0n1p3

Activate the swap:

# swapon /dev/nvme0n1p2
4. Install Base System

Mount the root partition and install the base system:

# mount /dev/nvme0n1p3 /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/nvme0n1p1 /mnt/boot/efi
# pacstrap /mnt base base-devel linux linux-firmware nano openssh sudo networkmanager

Generate the fstab file:

# genfstab -U /mnt >> /mnt/etc/fstab
5. Change root into the New System
# arch-chroot /mnt
6. Set the Time Zone

Replace Region and City with your actual region and city.

# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
# hwclock --systohc
7. Localization

Uncomment en_US.UTF-8 UTF-8 in /etc/locale.gen, then generate the locales:

# locale-gen
8. Network Configuration

Create the hostname file:

# echo myhostname > /etc/hostname

Add matching entries to hosts:

echo "127.0.0.1 localhost" >> /etc/hosts
echo "::1       localhost" >> /etc/hosts
echo "127.0.1.1 myhostname.localdomain myhostname" >> /etc/hosts
9. Root Password

Set the password for the root user:

# passwd
10. Install Bootloader

Install grub and efibootmgr:

# pacman -S grub efibootmgr
# mkdir /boot/efi
# mount /dev/nvme0n1p1 /boot/efi
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
# grub-mkconfig -o /boot/grub/grub.cfg
11. Cleanup and Installing Additional Packages

Install other required/useful tools for your setup.

# pacman -S dosfstools mtools sudo nano htop openssh bluez bluez-utils git fakeroot jshon expac wget make reflector networkmanager rsync vim lib32-freetype2 lib32-curl lib32-libgpg-error lib32-libpulse pulseaudio-alsa vulkan-icd-loader lib32-vulkan-icd-loader opencl-nvidia lib32-opencl-nvidia nvidia-utils lib32-nvidia-utils ttf-liberation

Now, enable all of the tools needed/wanted.

# systemctl enable sshd
# systemctl enable bluetooth
# systemctl enable NetworkManager

Setup reflector to get the best repos based on speed.

# reflector --verbose --latest 10 --sort rate --save /etc/pacman.d/mirrorlist
12. Enable ‘multilib’ and Update Pacman

You need to uncomment the multilib lines in /etc/pacman.conf.

# nano /etc/pacman.conf

Find and uncomment the following:

[multilib]
Include = /etc/pacman.d/mirrorlist

Then, update pacman.

# pacman -Syyuu 
13. Install Gnome and Steam

(I know, typically, you would reboot by now, but I like installing everything in my live environment before the reboot). Now install Gnome, Steam, and your video card drivers. Since I have an Nvidia card, I will be installing nvidia and nvidia-utils.

# pacman -S gnome gnome-extra gdm steam steam-native-runtime nvidia nvidia-utils lib32-nvidia-utils
14. Update the Kernel and Bootloader (one last time)

Finally, we just want to make sure that the bootloader and that the kernel have the latest modules loaded, and support for all of the newest packages and drivers we just installed.

# mkinitcpio -p linux 
# grub-mkconfig -o /boot/grub/grub.cfg
15. Configure Steam to Launch at Boot

Now it’s time to configure gdm to start Steam in Big Screen Mode.

# nano /usr/share/xsessions/steam.desktop

add the following to this file:

[Desktop Entry]
Name=Steam
Comment=Steam Big Picture Mode
Exec=/usr/bin/steam -bigpicture
TryExec=/usr/bin/steam
Icon=steam
Type=Application
16. Create a User and Configure the Auto-login

Now would be a good time to create your user, give them sudo permissions, and add them to the auto-login portion of the system.

change USERNAME to what you want your username to be.

# useradd -m -G games,audio,video,power,wheel -s /bin/bash USERNAME
# passwd USERNAME
# visudo

You want to find the root line, and add your user just below

USERNAME ALL=(ALL:ALL) ALL

Note: Use esc then esc then shift + : then wq to save and quit.

17. Reboot Into Your New Environment

Reboot your system:


# reboot
18. Post-setup Configuration for Static IP and the AUR.

Setup a static IP route with NetworkManager

# nmcli con add con-name wired ifname eno2 type ethernet ip4 192.168.1.5/24 gw4 192.168.1.1
# nmcli con mod wired ipv4.dns "192.168.1.1 8.8.8.8"
# nmcli con up wired

Now, as a normal user, setup the AUR.

$ cd /tmp
$ git clone https://aur.archlinux.org/packer.git
$ cd packer
$ makepkg -si

And there you go! You now have a fully operational Arch Linux setup with your specific requirements. Enjoy!

Disclaimer: Be sure to replace all example instances with your actual details, such as /dev/sda for your actual hard drive, myhostname for your hostname, and so on.

That’s all for this guide, hope it was helpful! If you have any questions or need further assistance, please feel free to leave a comment.