Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tek/hix
Haskell/Nix development build tools
https://github.com/tek/hix
haskell nix
Last synced: about 1 month ago
JSON representation
Haskell/Nix development build tools
- Host: GitHub
- URL: https://github.com/tek/hix
- Owner: tek
- License: other
- Created: 2021-04-15T19:45:41.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-09T15:59:18.000Z (about 2 months ago)
- Last Synced: 2024-11-09T16:38:42.038Z (about 2 months ago)
- Topics: haskell, nix
- Language: Haskell
- Homepage: https://tryp.io/hix/index.html
- Size: 1.48 MB
- Stars: 33
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# About
Hix is a toolkit for Haskell development that uses [Nix](https://nixos.org/learn.html) to provide a unified,
declarative interface for a range of build related tasks:- Reproducible environments and dependency overrides
- Cabal file generation
- Hackage upload
- Rapid-recompilation testing with `ghcid`
- Haskell Language Server
- CTags generation
- Virtual Machines for testing
- Compatibility checks for multiple GHC versionsTo learn more, please visit the [documentation page](https://tryp.io/hix/index.html).
# tldr
You can convert an existing project with Cabal files by executing this command in the project root, using
[FlakeHub](https://flakehub.com/docs) 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:
```nix
{
inputs.hix.url = "https://flakehub.com/f/tek/hix/~0.7.tar.gz";
}
```Then configure your project with NixOS module options:
```nix
{
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
```