My Travel Development Setup
Ever since I got the Pixel 9 Pro Fold, I’ve been curious about whether it could double as a full-on development device, especially for light travel. With the arrival of the Android Linux Terminal application, a full Debian-based Linux Virtual Machine running on ARM, I figured it was time to give it a shot. I paired it with the NuPhy Air60 V2 external keyboard, and voilĂ : a pocket-sized development setup. You get the idea in the photo below:
Let’s get one caveat out of the way: the Android Linux Terminal is fragile. Occasionally, when you try to open it, it’ll throw an unrecoverable error and refuse to boot again. Your only option is to wipe and start from scratch, unless you’ve backed up the environment, which thankfully is possible.
To make recovery easier, I put together a bootstrap script that installs everything I need. My workflow revolves around Git, Neovim, and Go. Since some of my Neovim plugins rely on Node.js, I include it as well. As an Arch Linux user, I’ve grown used to running the latest versions of my tools. To avoid maintaining different configurations for Debian’s older packages, my script retrieves the latest Linux ARM64 binaries directly. Here’s a stripped-down version of it:
#!/bin/bash
# Refresh package index and remove default Vim to avoid conflict with Neovim
sudo upt-get update
sudo apt-get remove vim -y
sudo apt-get install git -y
# Install latest Neovim instead of version provided by Debian
curl -LO https://github.com/neovim/neovim/releases/download/v0.11.2/nvim-linux-arm64.tar.gz
tar xzvf nvim-linux-arm64.tar.gz
sudo rm -rf /opt/nvim
sudo mv nvim-linux-arm64 /opt/nvim
sudo ln -sf /opt/nvim/bin/nvim /usr/local/bin/vim
# Use my personal Neovim configuration
mkdir -p .config
sudo rm -rf .config/nvim
git clone https://github.com/konradreiche/nvim-config.git ~/.config/nvim
# Install NodeJS
curl -LO https://nodejs.org/dist/latest/node-v24.2.0-linux-arm64.tar.gz
tar xzvf node-v24.2.0-linux-arm64.tar.gz
sudo rm -rf /opt/nodejs
sudo mv node-v24.2.0-linux-arm64 /opt/nodejs
sudo ln -sf /opt/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /opt/nodejs/bin/npm /usr/local/bin/npm
sudo ln -sf /opt/nodejs/bin/npx /usr/local/bin/npx
# Install Go
curl -LO https://go.dev/dl/go1.24.4.linux-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.4.linux-arm64.tar.gz
sudo ln -sf /usr/local/go/bin/go /usr/local/bin/go
sudo ln -sf /usr/local/go/bin/gofmt /usr/local/bin/gofmt
Since most of the tools are downloaded as pre-built binaries, a better approach might be to bundle them together and store the archive in your Android’s Downloads folder. That way, if your Linux environment crashes while you’re offline, you’ve still got everything you need to get going again. The Linux Terminal mounts your Android storage under /mnt/shared
, which is convenient for tasks such as copying your SSH key.
So, how usable is it? It’s surprisingly solid for the basics. This is a fun travel toy with real utility. I was able to use my full Neovim setup, update and run Go tests, write documentation, commit changes, and push to GitHub. It’s not as productive as using my ThinkPad X1 Nano, and it’s only slightly lighter: about 1.6 pounds total for the phone and keyboard, compared to 2.2 pounds for my ThinkPad.
The big plus is that I’m already carrying the phone. And when I need to, I can go full screen in the terminal or split the screen with another app, which works great for blogging on the go.
You can even run Hugo locally. Out of the box, it won’t be accessible in your Android browser. However, once the server is up, you can access the Linux Terminal settings and manually open the port.
In conclusion, would I do it again? Definitely, especially when I’m in the mood to stay disconnected but still want to tinker with code. I’m hoping Google continues to improve this environment: better stability and support for graphical applications would be amazing. For now, it’s a clever little setup that scratches the development itch when I’m on the road.