Type object
File match spack.yaml
Schema URL https://catalog.lintel.tools/schemas/schemastore/spack-environment/latest.json
Source https://raw.githubusercontent.com/spack/schemas/refs/heads/main/schemas/spack.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Properties

spack object

Spack environment configuration, including specs, view, and any other config section (config, packages, concretizer, mirrors, etc.)

Default:
{}
20 nested properties
bootstrap object

Configure how Spack bootstraps its own dependencies when needed

4 nested properties
enable boolean

Enable or disable bootstrapping entirely

root string

Where to install bootstrapped dependencies

sources object[]

List of bootstrap sources tried in order. Each method may bootstrap different software depending on its type (e.g., pre-built binaries, source builds)

trusted Record<string, boolean>

Controls which sources are enabled for automatic bootstrapping

cdash object

Configuration for uploading build results to CDash

4 nested properties
build-group string required

Unique build group name for this stack

url string

CDash server URL

project string

CDash project name

site string

Site identifier for CDash reporting

compilers object[]
concretizer object

Concretizer configuration that controls dependency selection, package reuse, and solver behavior

14 nested properties
force boolean

Force re-concretization when concretizing environments

Default: false
reuse boolean | string | object

Controls how aggressively Spack reuses installed packages and build caches during concretization

enable_node_namespace boolean

Enable node namespace functionality in the concretizer

targets object

Controls which target microarchitectures are considered during concretization

2 nested properties
host_compatible boolean

If true, only allow targets compatible with the current host; if false, allow any target (e.g., concretize for icelake while running on haswell)

granularity string

Target selection granularity: 'microarchitectures' (e.g., haswell, skylake) or 'generic' (e.g., x86_64_v3, aarch64)

Values: "generic" "microarchitectures"
unify boolean | string

Controls whether environment specs are concretized together or separately

compiler_mixing boolean | array

Whether to allow compiler mixing between link/run dependencies

splice object

Configuration for spec splicing: replacing dependencies with ABI-compatible alternatives to improve package reuse

2 nested properties
explicit object[]

List of explicit splice configurations to replace specific dependencies

Default:
[]
automatic boolean

Enable automatic splicing for ABI-compatible packages (experimental feature)

duplicates object

Controls whether the dependency graph can contain multiple configurations of the same package

2 nested properties
strategy string

Duplication strategy: 'none' (single config per package), 'minimal' (allow build-tools duplicates), 'full' (experimental: allow full build-tool stack separation)

Values: "none" "minimal" "full"
max_dupes Record<string, integer>

Maximum number of duplicates allowed per package when using strategies that permit duplicates

static_analysis boolean

Enable static analysis to reduce concretization time by generating smaller ASP problems

timeout integer

Maximum time in seconds for the solve phase (0 means no time limit)

min=0
error_on_timeout boolean

If true, timeout always results in error; if false, use best suboptimal solution found before timeout (yields unreproducible results)

os_compatible Record<string, array>

Compatibility mapping between operating systems for reuse of compilers and packages (key: target OS, value: list of compatible source OSes)

concretization_cache object

Configuration for caching solver outputs from successful concretization runs

3 nested properties
enable boolean

Whether to utilize a cache of solver outputs from successful concretization runs

url string

Path to the location where Spack will root the concretization cache

entry_limit integer

Limit on the number of concretization results that Spack will cache (0 disables pruning)

min=0
externals object

Configuration for how Spack handles external packages during concretization

1 nested properties
completion string

Controls how missing information (variants, etc.) is completed for external packages: 'architecture_only' completes only mandatory architectural information; 'default_variants' also completes missing variants using their default values

Values: "architecture_only" "default_variants"
config object

Spack's basic configuration options

Default:
{}
36 nested properties
flags object

Build flag configuration options

1 nested properties
keep_werror string

Whether to keep -Werror flags active in package builds

Values: "all" "specific" "none"
shared_linking string | object

Control how shared libraries are located at runtime on Linux

install_tree object

Installation tree configuration

3 nested properties
root string

The location where Spack will install packages and their dependencies

padded_length integer | boolean

Length to pad installation paths to allow better relocation of binaries (true for max length, integer for specific length)

projections Record<string, string>

Customize directory structure and naming schemes by mapping specs to format strings.

install_hash_length integer

Length of hash used in installation directory names

min=1
build_stage string | string[]

Temporary locations Spack can try to use for builds

stage_name string

Name format for build stage directories

develop_stage_link string

Name for development spec build stage directories

test_stage string

Directory in which to run tests and store test results

extensions string[]

List of Spack extensions to load

template_dirs string[]

Locations where templates should be found

license_dir string

Directory where licenses should be located

source_cache string

Location to cache downloaded tarballs and repositories

misc_cache string

Temporary directory to store long-lived cache files, such as indices of packages

environments_root string

Directory where Spack managed environments are created and stored

connect_timeout integer

Abort downloads after this many seconds if no data is received (0 disables timeout)

min=0
verify_ssl boolean

When true, Spack will verify certificates of remote hosts when making SSL connections

ssl_certs string

Path to custom certificates for SSL verification

suppress_gpg_warnings boolean

Suppress GPG warnings from binary package verification

debug boolean

Enable debug mode for additional logging

checksum boolean

When true, Spack verifies downloaded source code using checksums

deprecated boolean

If true, Spack will fetch deprecated versions without warning

locks boolean

When true, concurrent instances of Spack will use locks to avoid conflicts (strongly recommended)

dirty boolean

When true, builds will NOT clean potentially harmful variables from the environment

build_language string

The language the build environment will use (C for English, empty string for user's environment)

build_jobs integer

The maximum number of jobs to use for the build system (e.g. make -j), defaults to 16

min=1
concurrent_packages integer

The maximum number of concurrent package builds a single Spack instance will run

min=1
ccache boolean

When true, Spack's compiler wrapper will use ccache when compiling C and C++

db_lock_timeout integer

How long to wait to lock the Spack installation database

min=1
package_lock_timeout integer | null

How long to wait when attempting to modify a package (null for never timeout)

allow_sgid boolean

Allow installation on filesystems that don't allow setgid bit manipulation

install_status boolean

Whether to show status information in the terminal title during the build

url_fetch_method enum | string

The default URL fetch method to use (urllib or curl)

additional_external_search_paths string[]

Additional paths to search for external packages

binary_index_ttl integer

Number of seconds a buildcache's index.json is cached locally before probing for updates

min=0
aliases Record<string, string>

A mapping of aliases that can be used to define new Spack commands

installer string

Which installer to use. The new installer is experimental.

Values: "old" "new"
container object
9 nested properties
format string
Values: "docker" "singularity"
images object | object
strip boolean
Default: true
os_packages object
4 nested properties
command string
Values: "apt" "yum" "zypper" "apk" "yum_amazon"
update boolean
build string[]
final string[]
labels object
template string
Default: null
singularity object
Default:
{}
4 nested properties
runscript string
startscript string
test string
help string
docker object
Default:
{}
depfile boolean
Default: false
ci object
5 nested properties
pipeline-gen object | object | object | object | object | object | object | object | object[]
rebuild-index boolean
broken-specs-url string
broken-tests-packages string[]
target string
Default: "gitlab"
definitions object[]

Named spec lists to be referred to with $name in the specs section of environments

Default:
[]
develop Record<string, object>

Configuration for local development of Spack packages

Default:
{}
env_vars object

Environment variable modifications to apply at runtime

Default:
{}
5 nested properties
set Record<string, string | number>

Environment variables to set to specific values

unset string[]

Environment variables to remove/unset

Default:
[]
prepend_path Record<string, string | number>

Environment variables to prepend values to (typically PATH-like variables)

append_path Record<string, string | number>

Environment variables to append values to (typically PATH-like variables)

remove_path Record<string, string | number>

Values to remove from PATH-like environment variables

include string | object | object[]

Include external configuration files to pull in configuration from other files/URLs for modular and reusable configurations

Default:
[]
mirrors Record<string, string | object>

Configure local and remote mirrors that provide repositories of source tarballs and binary build caches for faster package installation

Default:
{}
modules Record<string, object>

Configure automatic generation of module files for Environment Modules and Lmod to manage user environments at HPC centers

1 nested properties
prefix_inspections Record<string, string[]>

Global prefix inspection settings that apply to all module sets, controlling which subdirectories are added to environment variables

packages Record<string, object>

Package-specific build settings and external package configurations

Default:
{}
1 nested properties
all object

Default settings that apply to all packages (can be overridden by package-specific settings)

Default:
{}
10 nested properties
require object | string[] | string

Package requirements that must be satisfied during concretization

prefer object | string[]

Strong package preferences that influence concretization without imposing hard constraints

conflict object | string[]

Package conflicts that prevent certain spec combinations

target string[]

Ordered list of soft preferences for target architectures for all packages (ignored if the concretizer can reuse existing installations)

Default:
[]
compiler string[]

Soft preferences for compiler specs for all packages (deprecated)

Default:
[]
buildable boolean

Whether packages should be built from source (false prevents building)

Default: true
permissions object

File permissions settings for package installations

package_attributes object

Class-level attributes to assign to package instances (accessible in package.py methods)

providers Record<string, string[]>

Soft preferences for providers of virtual packages (ignored if the concretizer can reuse existing installations)

Default:
{}
variants string | string[]

Soft variant preferences as a single spec string or list of variant specifications (ignored if the concretizer can reuse existing installations)

repos string[] | object

Configuration for package repositories that Spack searches for packages

Default:
{}
toolchains Record<string, string | object[]>

Define named compiler sets (toolchains) that group compiler constraints under a single user-defined name for easy reference with specs like %my_toolchain

Default:
{}
upstreams Record<string, object>

Configuration for chaining Spack installations. Point this Spack instance to other Spack installations to use their installed packages

Default:
{}
view boolean | string | object

Environment filesystem view configuration for creating a directory with traditional structure where all files of installed packages are linked

specs object | string | null[]

List of specs to include in the environment, supporting both simple specs and matrix configurations

Default:
[]
include_concrete string[]

List of paths to other environments. Includes concrete specs from their spack.lock files without modifying the source environments. Useful for phased deployments where you want to build on existing concrete specs.

Default:
[]