# Cabal-matrix – a matrix builder for cabal

**URL:** <https://discourse.haskell.org/t/cabal-matrix-a-matrix-builder-for-cabal/13074>\
**Category:** Show and Tell\
**Created:** [October 4, 2025, 3:04pm UTC](https://discourse.haskell.org/t/cabal-matrix-a-matrix-builder-for-cabal/13074 "2025-10-04T15:04:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mniip](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mniip/32/4033_2.png) [@mniip](https://discourse.haskell.org/u/mniip)\
**Post date:** [October 4, 2025, 3:04pm UTC](https://discourse.haskell.org/t/cabal-matrix-a-matrix-builder-for-cabal/13074/1 "2025-10-04T15:04:16Z")

</div>

Hello all! I want to announce the initial release of `cabal-matrix` – a matrix builder for cabal packages. Its purpose is to run builds in a variety of configurations, such as different compiler versions, or different dependency versions.

This tool should be useful to anyone who’s managing packages on Hackage. It helps you come up with dependency version bounds, and validate that existing bounds are correct.

Here’s a demo of it in action:  
 ![demo](https://us1.discourse-cdn.com/flex002/uploads/haskell/original/2X/d/de4af71464580cdbf147789ce943dbd0f772cf3c.gif)

In the demo example I’ve instructed `cabal-matrix` to build a package of mine against combinations of a compiler version, a `containers` version, and an `mtl` version, but I’ve instructed it not to simultaneously constrain `containers` and `mtl`, as that provides no benefit, and would be too many builds.

Exactly which configurations you want to test will depend on the nature of your package, which is why the set of configurations is specified using a DSL. For more information see the [README](https://hackage.haskell.org/package/cabal-matrix-1.0.0.0#readme).

> **[cabal-matrix](https://hackage.haskell.org/package/cabal-matrix)**
>
> Matrix builds for cabal

---

<div class="post-metadata">

**Author:** ![andreasabel](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/andreasabel/32/1764_2.png) [@andreasabel](https://discourse.haskell.org/u/andreasabel)\
**Post date:** [October 5, 2025, 2:29pm UTC](https://discourse.haskell.org/t/cabal-matrix-a-matrix-builder-for-cabal/13074/2 "2025-10-05T14:29:50Z")

</div>

Reminds me of [GitHub - phadej/trustee: Hackage Trustee helper tool](https://github.com/phadej/trustee) (command-line only).

---

<div class="post-metadata">

**Author:** ![sellout](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/sellout/32/3421_2.png) [@sellout](https://discourse.haskell.org/u/sellout)\
**Post date:** [October 8, 2025, 2:05pm UTC](https://discourse.haskell.org/t/cabal-matrix-a-matrix-builder-for-cabal/13074/3 "2025-10-08T14:05:00Z")

</div>

This is great! I currently use some scripts to do something similar with plans from CI jobs – creating CSVs, that I then load into a spreadsheet and update, but it’s too manual, and too much CI round-tripping. I can see this really speeding things up.
