Skip to content

The catalog ​

The catalog is the set of NixOS modules that LimaNix can add to a VM: a shell, language toolchains, services and tools. You choose from it in limanix.toml without writing Nix.

Where the catalog comes from ​

Each limanix binary embeds one catalog release and is tested with it. To see what your client bundles, run:

sh
limanix modules list

Each row shows a selector, its kind and its description. The list reads the embedded catalog and the modules you imported; it downloads nothing. A newer client can bring new modules, version lines and defaults. Installing it does not change an existing VM until you run limanix update.

Three kinds ​

The catalog has three kinds of entries, and limanix.toml chooses each kind in its own table:

KindChosen inExamplePage
Shell components[shell]: a preset and its prompt, editor and multiplexereditor = "astronvim"Shell
Toolchains[toolchains]: one version per languagego = "1.27"Toolchains
Modules[nixos] modules, by selectormodules = ["lmx:docker"]Modules and packages

One file can use all three:

toml
[shell]
preset = "terminal"

[toolchains]
go = "1.27"

[nixos]
modules = ["lmx:docker"]

Without these tables the VM gets the terminal preset, no toolchain and no other module. A shell component or a toolchain in [nixos] modules fails and names the table that chooses it, for example lmx:go is a toolchain; choose its version in [toolchains], such as go = "1.27".

Modules ​

ModuleSelectorAdds
Dockerlmx:dockerDocker Engine, the Docker CLI, Compose and Lazydocker
PostgreSQLlmx:postgresThe PostgreSQL server and its tools, for manual use
Google Cloud CLIlmx:gcloudThe Google Cloud CLI
Claude Codelmx:claudeAnthropic's coding agent for the terminal, without self-updates
Postinglmx:postingAn HTTP client for the terminal, in the guest's theme
Harlequinlmx:harlequinA SQL IDE for the terminal with the PostgreSQL adapter, in the guest's theme

Software that needs no configuration is a package, not a module: list it in [nixos] packages, as Modules and packages shows. For settings or services of your own, write a module and select it as third-party:NAME.

Versions ​

Some modules offer version lines. lmx:NAME selects the module's default line. lmx:NAME-LINE selects a line explicitly and replaces the default.

ModuleLinesDefault
Docker28, 2929
PostgreSQL16, 17, 1818

The other modules have no lines and only the lmx:NAME selector. A future catalog release may change a default; to stay on a line, select it explicitly.

Select several lines of one module only when its page allows it. PostgreSQL installs lmx:postgres-16 and lmx:postgres-18 side by side. Docker takes one line, and two lines stop the build with docker: select one line. Each module page lists the package versions of its lines and their support status. An end-of-life line prints a warning when the VM builds.

Help inside the VM ​

Every module explains itself in the VM:

sh
lmx help docker

The card shows the installed versions, the commands the module adds, common tasks and a link to its guide. lmx help lists the topics; lmx help docker-29 and lmx help lmx:docker work too. See The lmx command.

Selectors from earlier catalogs

Earlier catalogs had modules that only installed a package, and aggregates that the shell presets replace. Replace them as follows:

Former selectorNow
lmx:cozy, lmx:consoleThe terminal preset, with [toolchains] and modules for the rest
lmx:zsh, lmx:tmux, lmx:astronvim, lmx:neovim, lmx:yazi, lmx:lazygit, lmx:cli-tools[shell]
lmx:go, lmx:python, lmx:nodejs, lmx:rust[toolchains]
lmx:gitPart of the CLI tools
lmx:ghPart of the terminal preset; packages = ["gh"] with minimal
lmx:lazydockerPart of lmx:docker
lmx:k9s, lmx:minikubepackages = ["k9s", "minikube"]
lmx:helm, lmx:terraform, lmx:taskfilepackages = ["unstable:kubernetes-helm", "unstable:terraform", "unstable:go-task"]
lmx:codex, lmx:awspackages = ["unstable:codex", "unstable:awscli2"]

Free and open source under the Apache License 2.0.