Skip to content

Feature Request: Partial tool version override in mise_toml #359

@timonrieger

Description

@timonrieger

Use case: Running test suites with matrix strategies where one tool (e.g., Python) varies by job, while other tools (e.g., uv) should remain consistent.

Current behavior: The mise_toml input overwrites the entire mise.toml file, requiring duplication of all tool definitions.

Workaround (current): Using --env ci with a separate mise.ci.toml file:

# mise.ci.toml
[tools]
uv = "0.9.21"  # Constant tools only
- uses: jdx/mise-action@v3
  with:
    install_args: "python@${{ matrix.python-version }} --env ci"

This works because mise merges [tools] sections additively, so mise.ci.toml provides base tools and install-args adds the matrix-specific Python version. However, this requires maintaining a separate config file and is less intuitive than a direct override mechanism.

Desired behavior: Allow mise_toml to merge with or override only the specified tools in the repository's mise.toml, rather than replacing the entire configuration.

Example:

Repository mise.toml:

[tools]
python = "3.14.2"
uv = "0.9.21"

Current approach (requires duplication):

- uses: jdx/mise-action@v3
  with:
    mise_toml: |
      [tools]
      python = "${{ matrix.python-version }}"
      uv = "0.9.21"  # Must duplicate

Desired approach (inherit other tools):

- uses: jdx/mise-action@v3
  with:
    mise_toml: |
      [tools]
      python = "${{ matrix.python-version }}"
    # uv = "0.9.21" automatically inherited from repo mise.toml

Questions for maintainers:

  1. Could mise_toml be implemented to merge with existing configs rather than overwrite?
  2. Would a new input like mise_toml_override or mise_toml_merge: true be preferable?
  3. Are there other patterns or ideas for handling partial tool overrides in CI workflows?

This would make matrix-based CI workflows cleaner and reduce maintenance burden when tool versions change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions