haskell.nix - an alternative infrastructure for building haskell packages
2019-10-26, 13:10–13:40, Open Space

haskell.nix provides a nix build infrastructure for haskell packages and projects. The primary use case for haskell.nix is to serve as the substrate to build any haskell project in CI without having to resort to modifications to the project. haskell.nix has support for cabal projects as well as stack projects. It features component level build granularity and very good support for cross compilation.

iohk uses nix in production and the whole ci pipeline is setup using nix and hydra. We do however need to produce build products for windows, for which nix does not exists and which is a pain to deal with. This lead us to investigate cross compilation of haskell packages to windows. After we ran into numerous issues with the current haskell build infrastructure in nix, and especially the cabal2nix tool. Another issue we've run into was performance. After trying to amend the existing haskell infrastructure, we saw that our changes were non-trivial and would not be easy to reconcile with upstream without breaking every existing setup. This lead to haskell.nix, which focuses on performance, cross compilation, supporting cabal and stack projects as well as ease of use.