Collective Environments
Collective environments package several tools behind one modulefile. Use them
when a shared workflow needs Python CLIs, Rust binaries, and shell scripts to
appear together from one module load.
Create a TOML manifest:
name = "dev-tools"
version = "2026.05"
description = "Shared developer command-line tools"
prefix = "/prod/tools"
module_root = "/prod/modulefiles"
default = true
[[tools]]
type = "python"
name = "ruff"
version = "0.8.0"
package = "ruff==0.8.0"
python = "3.12"
indexes = ["https://packages.example/simple"]
find_links = ["/prod/wheels"]
uv_config_file = "/prod/config/uv.toml"
[[tools]]
type = "rust"
name = "ripgrep"
version = "14.1.1"
binary = "./target/release/rg"
[[tools]]
type = "script"
name = "lab-helper"
version = "1.0.0"
script = "./scripts/lab-helper"
Deploy the environment:
module-manager deploy-env --file dev-tools.toml
This writes one shared environment:
/prod/tools/dev-tools/2026.05/bin
/prod/modulefiles/dev-tools/2026.05
The generated modulefile prepends the shared bin directory to PATH, so all
tools in the manifest are available after:
module use /prod/modulefiles
module load dev-tools
Relative binary and script paths are resolved relative to the manifest file.
Preview
Use --dry-run to preview the install, copy, and modulefile actions without
creating files:
module-manager deploy-env --file dev-tools.toml --dry-run
Overrides
The manifest can define prefix, module_root, and default, but CLI options
can override them:
module-manager deploy-env \
--file dev-tools.toml \
--prefix /scratch/tools \
--module-root /scratch/modulefiles \
--no-default