tek / hix

Haskell/Nix development build tools
https://tryp.io/hix/index.html
Other
33 stars 2 forks source link
haskell nix

About

Hix is a toolkit for Haskell development that uses Nix to provide a unified, declarative interface for a range of build related tasks:

To learn more, please visit the documentation page.

tldr

You can convert an existing project with Cabal files by executing this command in the project root, using FlakeHub or GitHub:

nix run 'https://flakehub.com/f/tek/hix/~0.7.tar.gz#bootstrap'
nix run 'github:tek/hix?ref=0.7.1#bootstrap'

You can create a new project in the current directory:

nix run 'https://flakehub.com/f/tek/hix/~0.7.tar.gz#new' -- --name 'project-name' --author 'Your Name'

The manual process consists of first adding Hix to your Haskell project flake by specifying the input:

{
  inputs.hix.url = "https://flakehub.com/f/tek/hix/~0.7.tar.gz";
}

Then configure your project with NixOS module options:

{
  description = "Example";
  inputs.hix.url = "https://flakehub.com/f/tek/hix/~0.7.tar.gz";
  outputs = {hix, ...}: hix {
    packages.parser = {
      src = ./.;
      library = {
        enable = true;
        dependencies = ["aeson ^>= 2.0" "bytestring"];
      };
      executable.enable = true;
      test.enable = true;
    };
  };
}

Now generate Cabal files with:

nix run .#gen-cabal

Build the package with nix build, or run the tests in test/Main.hs in GHCid:

nix run .#ghcid -- -p parser