- Enhancements
- Support
meta.description
in flake apps. Requires newer version of flake-parts.
- Support
- Breaking changes
- #221: Switch from
buildFromCabalSdist
tobuildFromSdist
, to allow using non-standard package sets (whereincabal-install
is otherwise built without using user's overrides)- #253: Enable controlling
buildFromSdist
throughsettings.<name>.buildFromSdist
. (This was turned off by default originally, but was turned on by default in #286, limited to packages defined by haskell-flake in #298 & #306)
- #253: Enable controlling
- #221: Switch from
- Enhancements
settings
module:- #210: Add
extraLibraries
tosettings
module. - #225: Add
removeReferencesTo
tosettings
module.
- #210: Add
- #275: Fine grained settings defaults via
defaults.settings.{local, defined, all}
- #277: Add
otherOverlays
option to add custom Haskell package overlays. - #215: Improved debug logging.
- #216: Remove
debug
option (pass--trace-verbose
to nix instead)
- #216: Remove
- Fixes
- #222: Improve
cabal.project
parser by handling files not ending with newline - #271, #223: Change all
types.attrsOf
totypes.lazyAttrsOf
. If you uselib.mkIf
forattrsOf
values (notsubmodule
options), uselib.optionalAttrs
instead. This fixes #270 (basePackages
) and improves performance. - #296: Fix
removeConfigureFlags
to actually work. - #297: Fix
brokenVersions
to actually work.
- #222: Improve
- #162: Completely new way to override Haskell packages: removed
overrides
andsource-overrides
. Usepackages
to specify your source overrides; usesettings
to override individual packages in modular fashion (like NixOS modules). Additional changes include:- Add
package.<name>.cabal.executables
referring to the executables in a package. This is auto-detected by parsing the Cabal file. - Add
packages.<name>.local.*
to determine of a package is a local package or not. - Add
projectFlakeName
option (useful in debug logging prefix) flake.haskellFlakeProjectModules
: Dropped all defaults, except theoutput
module, which now exportspackages
andsettings
. Added adefaults.projectModules.output
option that allows the user to override this module, or directly access the generated module.- Add
project.config.defaults.settings.default
defining sensible defaults for local packages. - Add
project.config.defaults.enable
to turn off all default settings en masse. - Regressions in this PR: #169, #178
- Add
- #175:
devShell
: Add optionsbenchmark
(to enable benchmark dependencies) andhoogle
(whether to include Hoogle in development shell) - #189: Use
types.str
instead oftypes.string
in option types
- #134: Add
autoWire
option to control generation of flake outputs- #138: Add
checks
tooutputs
submodule - #143: Changed
autoWire
to be an enum type, for granular controlling of which outputs to autowire.
- #138: Add
- #137: Expose cabal executables as flake apps. Add a corresponding
outputs.apps
option, while theoutputs.localPackages
option is renamed tooutputs.packages
(it now contains package metadata, including packages and its executables).- #151: Use
lib.getBin
to get the bin output
- #151: Use
- #148: Remove automatic hpack->cabal generation. Use
pre-commit-hooks.nix
instead. - #149: Fix unnecessary re-runs of cabal2nix evaluation. Add a
debug
option to have haskell-flake produce diagnostic messages. - #153: Add
config.defaults
submodule to allow overriding the default devShell tools added by haskell-flake
- New features
- #68, #79, #106: Add support for project modules that can be imported in
imports
. Export them inflake.haskellFlakeProjectModules
. Default modules are exported by default, to reuse overrides and local packages from external flakes. For details, see https://haskell.flake.page/modules- #67:
overrides
will be combined usingcomposeManyExtensions
, however their order is arbitrary. This is an experimental feature, and a warning will be logged.
- #67:
- 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 tomkShell
- #111: Add
devShell.extraLibraries
to add custom Haskell libraries to the devshell.
- #37: Devshell can now be disabled using
- #63, #52: Add
config.haskellProjects.${name}.outputs
containing all flake outputs for that project; as well as (#102)finalPackages
andlocalPackages
. - #49 & #91 & #110: The default value for the
packages
option is now determined from thecabal.project
file. If it doesn't exist, it looks for top-level.cabal
file orpackage.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.
- #68, #79, #106: Add support for project modules that can be imported in
- API changes
- #37: Group
buildTools
(renamed totools
),hlsCheck
andhlintCheck
under the newdevShell
submodule option - #64: Remove hlintCheck (use treefmt-nix instead)
- #52: Rename
haskellPackages
tobasePackages
. Overlays are applied on top ofbasePackage
-- usingsource-overrides
,overrides
,packages
in that order -- to producefinalPackages
. - #69: The default flake template creates
flake.nix
only, while the#example
one creates the full Haskell project template.
- #37: Group
- Initial release