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.