I got the Valve Steam Deck last month and have instantly become obsessed with it. I wanted to know if I could use it as a linux dev machine, knowing that it was essentially a full blown PC under the hood. You’re able to be use a keyboard and mouse with SteamOS in desktop mode with everything setup over the sole USB-C port via a dongle.
SteamOS is built upon arch linux, which gives you a familiar environment if you’ve used a linux distro before. When you first open a terminal, you’ll notice that you’re logged in as ”deck”. This is the sole user and has full access to everything on the device with no password restriction by default. If you want to do install anything you’ll need to set a password using:
Arch uses pacman as the main package manager. If you install a package with pacman and ever update SteamOS it wipes everything that is not under the /home partition, including any of your packages. This is not ideal if you want to keep it up to date and not reinstall packages afterwards.
I chose to use brew, which will install packages under /home/. Brew will be familiar to you if you’ve ever needed to install dev tools on MacOS since it doesn’t have it’s own package manager. Brew has a single command for installation:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Following this there will be a couple of subsequent steps to add it to your
~/.bash_profile file in order to correctly resolve paths. I found that
konsole did not pick up the path and also copied it over to my
~/.bashrc in order to proceed.
Python and Virtual Environments
Using brew I’ve been successfully install pipenv and use it to manage python dependencies. You can do the same using the following:
brew install pipenv
I also installed pyenv and docker via brew, although pyenv fails when trying to compile python and docker appears to require a docker daemon installation via pacman (something which would get removed).
VSCode is available using the application store on the deck though it’s apparently ‘unofficial’. I found that after installation the file dialog appeared behind the main vscode window which had me scratching my head for a second. I was able to install extensions which gave me intellisense output for projects and dependencies.
In order to get the terminal working correctly with brew it was necessary to change the
Terminal > Integrated > Default Profile > Linux to bash, so that the changes to the
~/.bashrc would be read.
I found that it’s certainly possible to get up and running with Python on the deck along with familiar tooling. Without the ability to switch python versions and run docker it’s likely only something I’d want to use for basic work but is certainly capable if you’re just starting to learn. I’m going to continue experimenting and learning whats possible with it and will post updates here and to my youtube channel.
If you want to see me going through this process, you can find a video of it on youtube
Further Work: Docker and Podman
I discovered it is possible to use Distrobox on the Steam Deck to solve some of my earlier issues, along with running containers using Podman. You can check out a full article and video I made on that here.