Skip to content
New guide! Learn how to set up Python, JavaScript & more — Setting Up Programming Languages
Languages

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:

  1. Stop the firewall — the school firewall blocks most downloads, so language installs fail while it is running:
    rsv stop nftables
  2. 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 current

Run 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 python

Tip

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.3

Set the Default Version

Run this from your home folder so the version applies everywhere for the guest user:

cd ~
asdf set python 3.12.3

Make 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 asdf

Name 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.gz

Delete 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 all

Once 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.