Releases: srid/haskell-flake
Releases · srid/haskell-flake
0.5.0
- Breaking changes
- #221: Switch from
buildFromCabalSdist
tobuildFromSdist
, to allow using non-standard package sets (whereincabal-install
is otherwise built without using user's overrides)
- #221: Switch from
- Enhancements
- 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
0.4.0
- #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). See https://zero-to-flakes.com/haskell-flake/dependency 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
0.3.0
- #134: Add
autoWire
option to control generation of flake outputs - #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
0.2.0
- 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
- #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