Module catalog#
Use a catalog selector in the nixos.modules list:
[nixos]
modules = ["lmx:git", "lmx:go-1.27"]
These tables describe the repository source used for this documentation. Your installed client can contain a different catalog. Check its selectors before editing a configuration:
limanix modules list
For the steps to apply a selection, see Using modules.
At a glance#
Module |
Default selector |
Available version selectors |
Provides |
|---|---|---|---|
Git |
|
None |
Git |
Neovim |
|
None |
Neovim |
Docker |
|
|
Docker Engine, CLI and Compose |
Go |
|
|
Go, gopls and Delve |
Minikube |
|
|
Minikube |
Node.js |
|
|
Node.js, npm and npx |
Python |
|
|
Python and virtualenv |
Rust |
|
|
Rust toolchain, GCC, pkg-config and GDB |
Append a version selector to the module name: lmx:python-3.12.
Omit it to use that catalog's default: lmx:python.
Important
A selector chooses a version line, not an exact patch forever.
For example, lmx:go-1.27 selects Go 1.27.1 in this catalog snapshot.
A later catalog can update that line to another patch.
The catalog bundled with the client determines the actual package sources.
Several versions in one VM#
Go, Minikube, Node.js, Python and Rust provide versioned commands. Select the versions you need together:
[nixos]
modules = ["lmx:nodejs-24", "lmx:nodejs-26"]
Command |
Selection in this example |
|---|---|
|
Highest selected version: Node.js 26 |
|
Node.js 24 |
|
Node.js 26 |
|
npm/npx with the Node.js 24 toolchain on |
The same priority rule applies to the other versioned toolchain modules: the highest selected release takes priority for shared command names. Docker is different: select one Docker version per VM.
Git and Neovim#
[nixos]
modules = ["lmx:git", "lmx:neovim"]
These modules enable the NixOS programs.git and programs.neovim options.
Their package versions come from the VM's base Nixpkgs.
They have no separate version selector in this catalog.
Docker#
Enables the system Docker service and adds the VM user to the docker group.
Use docker and docker compose inside the guest.
Selector |
Docker Engine / CLI |
Catalog warning |
|---|---|---|
|
29.8.0 |
None |
|
28.5.2 |
End of upstream security support |
Warning
Membership in the docker group grants root-equivalent access inside the VM.
Changing the selected version uses the same Docker container and volume storage. It does not create a separate Docker environment.
Source: Docker module and release pins.
Go#
Installs the compiler, gopls language server and Delve debugger.
Selector |
Go |
Catalog warning |
|---|---|---|
|
1.27.1 |
None |
|
1.26.7 |
None |
|
1.25.13 |
End of upstream security support |
|
1.24.13 |
End of upstream security support |
Use go-1.26 or go-1.27 to choose an installed compiler explicitly.
The go, gopls and dlv commands follow the highest selected Go module's package priority.
Go can download another toolchain according to a project's requirements.
To use only the selected local toolchain, set GOTOOLCHAIN in the VM's [env] table.
If you started with env = {}, remove that top-level line before adding the table below:
[env]
GOTOOLCHAIN = "local"
With this setting, a project that requires a newer Go version fails instead of downloading it. See Go toolchain selection.
Source: Go module and release pins.
Minikube#
Selector |
Minikube |
|---|---|
|
1.38.1 |
|
1.37.0 |
|
1.36.0 |
The module installs Minikube. It does not start a cluster or enable Docker. For the Docker driver, select both modules:
[nixos]
modules = ["lmx:docker", "lmx:minikube-1.36", "lmx:minikube-1.38"]
Run each version with a separate cluster profile inside the VM:
minikube-1.36 start --driver=docker --profile=mk136
minikube-1.38 start --driver=docker --profile=mk138
Source: Minikube module and release pins.
Node.js#
Selector |
Node.js |
Catalog warning |
|---|---|---|
|
26.9.0 |
None |
|
25.9.0 |
End of upstream security support |
|
24.20.0 |
None |
|
23.11.0 |
End of upstream security support |
Each selected version includes Node.js, npm and npx.
Versioned commands are node-24, npm-24, npx-24, and their equivalents for other selectors.
The npm/npx wrappers put the matching Node.js toolchain first on PATH, including when they run project scripts.
Source: Node.js module and release pins.
Python#
Selector |
Python |
|---|---|
|
3.14.7 |
|
3.13.15 |
|
3.12.14 |
Includes Python with venv and the virtualenv tool.
Use a versioned interpreter to create a project environment inside the VM:
python-3.12 -m venv .venv
source .venv/bin/activate
The corresponding virtualenv command is:
virtualenv --python python-3.12 .venv
Source: Python module and release pins.
Rust#
Installs rustc, Cargo, rustfmt, Clippy and rust-analyzer. GCC, pkg-config and GDB are also included from the VM's base Nixpkgs.
Selector |
Rust |
Catalog warning |
|---|---|---|
|
1.98.1 |
None |
|
1.97.1 |
End of upstream security support |
|
1.96.1 |
End of upstream security support |
|
1.95.0 |
End of upstream security support |
Use the versioned Cargo wrapper for the matching toolchain:
cargo-1.95 build
cargo-1.95 fmt
cargo-1.95 clippy
Other versioned commands are rustc-1.95, rustdoc-1.95, rustfmt-1.95 and rust-analyzer-1.95.
Equivalent commands exist for every selected Rust version.
Source: Rust module and release pins.
Where the package versions come from#
Each versioned module records its package choices in releases.nix:
A Nixpkgs Git revision identifies the package source snapshot.
A content hash checks the downloaded source tree.
A package attribute chooses the tool from that snapshot.
An assertion checks the main tool's expected version during evaluation.
Related tools come from the chosen snapshot unless the module supplies an explicit override. For example, Node.js 26 includes a separately pinned npm package. A selector does not mean "download the newest upstream release".
The warning columns above reflect the catalog's endOfLife flags.
They describe the behavior of this source snapshot, rather than a live upstream support lookup.
For adding or updating these entries, see Contributing to the catalog.