# Build System Config Glossary

{{ frontmatter }}
{% for key, val in def_docs|dictsort %}
## {{ key }}
{% if val['description'] != ''%}
{{ val['description'] }}
{% endif %}
Default value:

```yaml
{{ val['defval_pp'] }}
```

Used in:

{% for file in val['reflist']|sort(attribute='path') -%}
- [{{ file.path }}]({{ file.link }})
{% endfor -%}
{% endfor %}

