Getting the most out of your Steam Deck as a software developer

Getting the most out of your Steam Deck as a software developer

Background

I've been a software engineer for just over 10 years. During that time, I've had the opportunity to work with a range of operating systems. In my free time, I'm a gamer and I enjoy tinkering with software and operating systems. I have a high-end desktop at home for intense gaming sessions. For work, I mostly use a MacBook Pro. And for something in between, I have a Raspberry Pi with a Debian-based operating system set up.

Not until recently that Valve introduced a Steam Deck, a handheld system that runs on a custom flavor of Arch Linux with a Proton which is a tool to allow PC games to run natively on a linux environment. Outside of gaming, the Steam Deck can also be docked to a monitor, a keyboard and a mouse and function more or less like a portable linux computer.

When I heard the Steam Deck was announced late 2021, I immediately reserved the machine and couldn’t wait to get my hands on the real thing.

I received my Steam Deck about 3 weeks ago. For the last 3 weeks I’ve been with the Steam Deck, my perspective for what is a computer, a gaming system, a work computer has changed significantly. I can use the Steam Deck for all 3 of those functions. In this article, I’ll show you how I set up my Steam Deck for work and for gaming.

Life before Steam Deck

Before Steam Deck, in the area of software development I used a powerful PC tower running on Windows 10 which has WSL2 (Window Sub-Linux system) and Docker or on the go with a M1 Macbook Pro 14 running OSX Ventura.

For intensive and demanding gaming, I am limited to only my PC tower, as OS X is not recognized as a gaming machine. Unfortunately, this solution is not portable and requires me to be at my desk to play. Although I appreciate the quality of my Macbook Pro and its long battery life, its use of ARM architecture has limited support for most of my games. Additionally, Docker's current limitations on ARM processors on Mac also restrict my options for using real container images.

For a balance between software development and less demanding gaming, I use my reliable Raspberry Pi 4 (equipped with 4GB of RAM and running a version of Ubuntu). This option is more portable, but does not come with a built-in battery and requires external keyboard and mouse to be functional. It is not the perfect solution.

For a long time, I have dreamed of using my Nintendo Switch for serious gaming and software development. Although the Switch can be connected to a monitor, keyboard, and mouse, it lacks a fully functional operating system, making software development not feasible.

That day has finally arrived where I can have a portable machine capable of running demanding games and serious software development work. The Steam Deck meets most of my requirements for gaming and development with only a few compromises and comes in a compact form factor that I can take with me anywhere and dock with a keyboard and mouse for intensive software development work.

For gaming

The entire Steam game library that I have accumulated over the years is mostly supported by the Valve Proton engine. The controller is highly customizable with many buttons that can be mapped to specific games. For popular games, there are official Valve controller mappings, but for less popular games, you can search for community-driven controller mappings online. A Google search should provide more relevant information on gaming setup.

For work

This is the focus of my attention. In my past experience with Linux, I had not had the opportunity to work with Arch Linux, which is the operating system used on the Steam Deck. I would like to share a few things that I wish I had known before setting up my work profile on the Steam Deck and Arch Linux.

Package Manager

Arch Linux came with Discover, an appstore alternative to download and install applications. I used Discover to install most of my most used applications like Brave Browser, Sublime Text, and VS Code.

Arch Linux also came with a command line Package Manager (known as Pacman). I used pacman to install most of my CLI stuffs like Node JS, Python, and OpenJDK.

The full setup scripts

The Steam Deck doesn’t come preconfigured with a password, you need to boot into desktop mode and fire up a terminal. And then run the following command

passwd

By default, The Steam Deck comes with an immutable file system which means any change you made to the root folders will be wiped out when you do the OS upgrade. This immutable file system also mounts the file system as read-only mode which stops you from installing custom software via pacman.

First to install new custom software, you need to enable write access to the underlying package manager. Run the following command.

# Disable read-only mode

sudo btrfs property set -ts / ro false

# setting up pacman

sudo pacman-key --init

sudo pacman-key --populate archlinux

After you have pacman set up and running, you can use pacman to install your application. I used it to install the following CLI tools that I used intensively. Here I installed fzf (fuzzy find), jq (a tool to format JSON) and bat (cat command with better formatting).

sudo pacman -Syu fzf

sudo pacman -Syu jq

sudo pacman -Syu bat

For Node JS, I  relied on nvm (Node Package Manager) to install and run Node JS.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

The Steam Deck also includes Discover, an app store for Arch Linux, making it easy to install applications. Applications installed through Discover will persist even after system updates, so it's advisable to check if your preferred applications are available through Discover and install them there first.

Summary and personal thoughts

Aside from the Steam Deck, I also own a Nintendo Switch, but that device is solely for gaming. Its processing power is limited, so there isn't much that can be done with it. In contrast, the Steam Deck is a full-sized computer running Arch Linux that can handle demanding PC games in a portable form factor. With a compact dock and a portable keyboard and mouse, you have a fully functional work environment that you can take with you anywhere.

The Steam Deck has a lot of potential and I can envision it replacing both my work laptop and my powerful gaming desktop in one compact form factor that I can carry with me.

What's next for me?

I want to spend the time to make sqlui-native, a simple UI client for most SQL Engines written in Electron that I wrote, to work with Steam Deck or Arch Linux. Hopefully it's not that complicated given that it was written in Electron and support for other Linux Operating System should be trivial.

This is so cool! I’ve wondered about this since they announced their dock recently. It must be decently fast for dev work?

Like
Reply

To view or add a comment, sign in

More articles by Sy Le

Others also viewed

Explore content categories