Skip to content

Toolchains ​

The [toolchains] table installs one version of each language you need, with its language server and build tools.

toml
[toolchains]
go = "1.27"
rust = "stable"
python = "3.14"
nodejs = "26"

Leave a key out, or set it to "", to install none of that language. Apply a change with limanix update --config limanix.toml; see Changing a VM.

What each key installs ​

KeyValueInstalls
goA line, such as 1.27Go, the gopls language server, the Delve debugger (dlv) and GCC for cgo
rustA channel or a version, such as stablerustup with Cargo, rustc, rustfmt, Clippy and rust-analyzer, plus GCC, pkg-config and GDB
pythonA line, such as 3.14Python with venv, virtualenv and the Pyright language server
nodejsA line, such as 26Node.js with npm and npx, and the TypeScript language server

Languages shows how to work with each one in the VM.

Go, Python and Node.js lines ​

A line is a release series. go = "1.27" installs Go 1.27.x, and each catalog release brings the line's patch releases. The current catalog has these lines:

KeyLines
go1.27 (recommended), 1.26, 1.25 (end of life)
python3.14 (recommended), 3.13, 3.12
nodejs26 (recommended), 24, 22

The catalog comes with your limanix client. List the lines it has on the Mac:

sh
limanix modules list

Each line appears as a row of kind toolchains, such as lmx:go-1.27. A line the catalog does not have fails limanix create or limanix update with the lines it has. An end-of-life line prints a warning when the VM is built.

Rust channels and versions ​

rust sets the default toolchain of rustup:

ValueToolchain
stable, beta, nightlyThe newest release of the channel when it installs
nightly-2026-10-01The channel as it was on that date
1.90, 1.90.0A Rust release

rustup downloads the toolchain when the VM starts after the value changes, from static.rust-lang.org. A failed download is tried again. Until the toolchain is installed, Cargo reports that no default toolchain is configured. Follow the download in the VM:

sh
systemctl --user status rust-toolchain

A channel does not move on its own: run rustup update for its newest release. A project's rust-toolchain.toml selects its own toolchain, which rustup installs on first use.

Language servers in the editor ​

With editor = "astronvim", the default of the terminal preset, AstroNvim turns on the language server of each toolchain: gopls, rust-analyzer, Pyright and the TypeScript language server. Its plugins and syntax parsers come with the VM instead of downloading when the editor first starts.

With editor = "neovim" or "none", the language servers are still installed for any editor that speaks the Language Server Protocol. Plain Neovim needs your own LSP configuration; see Shell.

Open the project at its path in the VM, such as /workspace, for the language servers to see its Linux dependencies.

Keep Go on the installed version ​

When a project's go.mod or go.work requires a newer Go, Go can download that toolchain. To use only the installed one, set GOTOOLCHAIN in [env]:

toml
[env]
GOTOOLCHAIN = "local"

A project that requires a newer Go then fails to build instead of downloading one.

Free and open source under the Apache License 2.0.