packages feed

hwm-0.0.1: README.md

# HWM: Haskell Workspace Manager

**HWM is not a build tool.** It is the missing link that orchestrates the tools you already use.

Haskell has excellent build systems (`stack`, `cabal`, `nix`) and a powerful IDE (`hls`), but they don't talk to each other in a monorepo. HWM bridges this gap by acting as a **single source of truth**, automatically generating and synchronizing the configuration files those tools expect.

## The Problem

In a typical Haskell monorepo:

* **Dependency Drift:** Different packages use different versions of the same dependency
* **Matrix Complexity:** Testing multiple GHC versions requires maintaining separate config files
* **Broken IDEs:** Adding modules breaks HLS until you manually update `hie.yaml`
* **Release Friction:** Releasing requires manually bumping versions across dozens of files

## The Solution

You define the "what" in `hwm.yaml`. HWM handles the "how."

```yaml
name: my-project
version: 0.1.0

workspace:
  - name: libs
    prefix: my-app
    members: [core, api, client]

registry:
  - aeson >= 2.0 && < 3.0
  - text  >= 2.0 && < 3.0

matrix:
  default-environment: stable
  environments:
    - { name: stable, ghc: 9.6.3, resolver: lts-22.6 }
    - { name: nightly, ghc: 9.10.1, resolver: nightly-2024-05-22 }
```

One command regenerates everything:

```bash
hwm sync
```

HWM generates and keeps in sync:
* `stack.yaml` / `cabal.project`
* `package.yaml` files → `.cabal` files
* `hie.yaml` for HLS
* Build matrix configurations

## Quick Start

```bash
# Install
stack install hwm
# or
cabal install hwm

# In an existing Stack project
hwm init
hwm sync
hwm run build
```

## Key Commands

* `hwm status` - Check if generated files are in sync
* `hwm sync` - Regenerate all configuration files
* `hwm run <script>` - Run scripts across build matrix
* `hwm outdated` - Check for dependency updates
* `hwm version <bump>` - Atomically bump versions
* `hwm publish <group>` - Publish to Hackage

## Full Documentation

📚 **[Complete Documentation & Examples →](https://github.com/nalchevanidze/hwm)**

Visit the GitHub repository for:
* Detailed configuration reference
* Architecture documentation
* Contributing guidelines
* Examples and use cases

## Origin

HWM was born out of necessity to manage the [Morpheus GraphQL](https://github.com/morpheusgraphql/morpheus-graphql) ecosystem with 15+ packages across multiple GHC versions.