Setting Up Programming Languages
TechLit computers use asdf to manage the programming
languages we teach, like Python, JavaScript, and Java. Students use them
while learning code, the TechLit programming curriculum — reading
written instructions and turning them into working programs. asdf keeps
every language in its own folder, so two different versions can sit side
by side without breaking each other.
You do not need to install asdf itself. The system image already has it, and
it is wired into the guest shell. Your job is only to add the languages you
want to teach.
Before You Begin
Admin Setup First
Two things must be done as the admin user before you start:
- Stop the firewall — the school firewall blocks most downloads, so
language installs fail while it is running:
rsv stop nftables - Mount your USB drive (needed for the USB methods) — plug it in,
identify it with
lsblk, and mount the 4th partition to/mnt:lsblk sudo mount /dev/sda4 /mnt
Everything else in this guide runs as the guest user. When you are
finished, restart the firewall as admin with rsv start nftables.
Method 1: USB Pre-installed (Easiest)
If you have a USB drive with asdf.tar.gz on it, use this method. The tarball
already contains the plugins and language versions used in class, so nothing
is downloaded from the internet.
Copy the Tarball from the USB
# The USB drive is mounted at /mnt (see Before You Begin)
cp /mnt/asdf.tar.gz /srv/guest/Unpack It
# This creates the /srv/guest/asdf folder
tar -xzf /srv/guest/asdf.tar.gz -C /srv/guest/Verify the Languages
# Make the installed languages visible in your current terminal
export PATH="/srv/guest/asdf/shims:$PATH"
# Show every language and version asdf is managing
asdf currentRun python --version (or whichever language you added) to confirm it works.
Method 2: Individual Install
Use this method to install one language on one computer, directly from the internet.
Add the Plugin
Each language has a plugin. Add the one you need:
# Example for Python
asdf plugin add pythonTip
If the short name is not found, add the plugin with its full repository URL,
e.g. asdf plugin add python https://github.com/asdf-vm/asdf-python.git.
Every plugin’s URL is listed at
github.com/asdf-vm/plugins.
Install a Version
# See every version available for Python
asdf list all python
# Install the one you want (or "latest")
asdf install python 3.12.3Set the Default Version
Run this from your home folder so the version applies everywhere for the
guest user:
cd ~
asdf set python 3.12.3Make Sure the Shims Are on Your PATH
The system image already does this for the guest shell, but if a command is
still “not found”, add the shims folder to your PATH:
# For the current terminal session
export PATH="/srv/guest/asdf/shims:$PATH"Method 3: Fleet Setup
Use this method to set up many computers at once. You prepare the languages once, then distribute them to the fleet. There are two ways to do that.
Sub-method A: Network Pull
If one computer on the network is already set up, the others can copy from it directly. Run this on each computer that still needs the languages:
# Replace 'tl-1234' with the hostname of a computer that is already set up
scp -r tl-1234.local:/srv/guest/asdf /srv/guest/Sub-method B: Tarball Distribution
Prepare one tarball on a computer that is already set up, then share it on USB drives the same way as Method 1.
# On a computer that is already set up
tar -czf asdf-2026-09-04.tar.gz -C /srv/guest asdfName the tarball with the date you built it (asdf-2026-09-04.tar.gz), so it
is always obvious which build is the newest. Keep a latest.tar.gz symlink
pointing at the current build, so anything that copies “latest” always gets
the right one:
ln -sfn asdf-2026-09-04.tar.gz latest.tar.gzDelete Old Tarballs
Tarballs are large. Once the newest build has been verified on a test machine, delete the old dated tarballs from your USB drives and storage folders to free up space.
Dependencies & Troubleshooting
- Read the plugin README first. Every language plugin needs its own build dependencies (compilers, headers, and so on). The plugin’s README lists exactly what is required — check it before installing, especially when an install fails halfway through.
- Missing system packages? Our desktop is Artix Linux. Install missing
tools and libraries from the AUR with
yay. - Still stuck? Ask for help. Send the exact command you ran and the full error output — a screenshot of the last 20 lines is perfect.
Adding Your Own Languages
The languages above are a starting point, not the limit. asdf supports
hundreds of tools and languages, so if you want to teach something new — Rust,
Go, Ruby, or anything else — you can add it yourself.
# Browse everything asdf can install
asdf plugin list allOnce you find your language in the list, follow Method 2 to install it. If you add a language that works well in class, tell the TechLit team so it can be added to the system image for everyone.