`haskell-flake` 0.2.0 released

I’d like to announce the 2nd release of haskell-flake (GitHub - srid/haskell-flake: A `flake-parts` Nix module for Haskell development), which aims to be the simplest way to nixify most Haskell projects.

Release notes are presented below. Another highlight of this release is that we now have project website that aims to document all things Nix & Haskell: https://haskell.flake.page/ (see ‘Basics’ section if you are new to Nix).

  • New features
    • #68, #79, #106: Add support for project modules that can be imported in imports. Export them in flake.haskellFlakeProjectModules. Default modules are exported by default, to reuse overrides and local packages from external flakes. For details, see Project modules – haskell-flake
      • #67: overrides will be combined using composeManyExtensions, however their order is arbitrary. This is an experimental feature, and a warning will be logged.
    • Dev shell
      • #37: Devshell can now be disabled using devShell.enable = false; (useful if you want haskell-flake to produce just the package outputs)
      • #92: Add devShell.mkShellArgs to pass custom arguments to mkShell
      • #111: Add devShell.extraLibraries to add custom Haskell libraries to the devshell.
    • #63, #52: Add config.haskellProjects.${name}.outputs containing all flake outputs for that project; as well as (#102) finalPackages and localPackages.
    • #49 & #91 & #110: The default value for the packages option is now determined from the cabal.project file. If it doesn’t exist, it looks for top-level .cabal file or package.yaml. Better hpack support throughout.
    • #100: source-overrides option now supports specifying Hackage versions as string.
    • #114: Prevent unnecessary Nix rebuilds of packages in sub-directories when parent contents change.
  • API changes
    • #37: Group buildTools (renamed to tools), hlsCheck and hlintCheck under the new devShell submodule option
    • #64: Remove hlintCheck (use treefmt-nix instead)
    • #52: Rename haskellPackages to basePackages. Overlays are applied on top of basePackage – using source-overrides, overrides, packages in that order – to produce finalPackages.
    • #69: The default flake template creates flake.nix only, while the #example one creates the full Haskell project template.