- Migrate the shell script-based release app to the Haskell CLI.
- Change the OC
ghcOptionsto accept a list of options as well as a string. - Add OC
ghcOptionthat only accepts a single string. - Add OC
nosharedthat disables creation of shared libraries. - Add OC
sharedthat enables linking Haskell libraries dynamically in executables. - Add special treatment for the override named
__all, applying to the result ofmkDerivation, and therefore all packages. - Allow multiple flags to be passed as a list in the OCs
enable,disableandconfigure. - Apply the
buildInputsOC topkgswhen it is a function, as documented. - Apply package-set and env OCs separately when reading pregenerated overrides.
- Add the option
nixpkgsfor configuring different nixpkgs versions. - Add the option
compilersfor configuring different GHC builds. - Add the option
package-setsfor configuring different GHC package sets. - Add options for building GHC from source.
- Default to
language = "Haskell2010"to avoid eager evaluation of environment configs. - Add the attribute
exeto derivations inbuild.*.executables, containing the full path to the executable in the store. - The packages defined by the option
envs.*.buildInputsare now provided to local package derivations as well, for consistency with other options of that name. - Add the options
shellToolsandenvs.*.shellToolsto take on the previous role ofenvs.*.buildInputsfor packages that should not be made available to local package derivations. - Add the options
envs.*.libraryPathandcommands.*.libraryPaththat add thelibdirectories of specified packages to$LD_LIBRARY_PATH. - Add the options
build-tools.{ghcid,hasktags}.packageto configure these tools globally.
- Rename
--ghci{,d}-optionsto--ghci{,d}-argsin commands with env selection. - Add the options
envs.*.ghci{,d}.argsas env-specific extra arguments to those commands, based on env selection. - Add the options
ghci{,d}.argsas unconditional extra arguments to those commands. - Add the CLI option
--envto override env selection for commands.
- Add the option
managed.latest.enableto control whether thelatestenv is created. - Tag managed envs with the bound they manage (
lower/upper) and select them based on that.
- Add the option
genCabalInDerivationsto control whether Cabal configs are generated inside derivations. - Add the option
selfto infer the project root from the flake input by that name. - Add a
_fileattribute to user modules for clearer NixOS module error messages. - Emit errors for all definitions of deprecated options immediately upon flake evaluation.
- Add a custom error message when
maindoesn't refer to a defined package. - Improve accuracy of error messages around compiler configuration.
- Inform the user about
.#env.*when an unexposed shell is requested. - Remove custom preludes from the regular dependency list.
- Removed some attributes in the intermediate build outputs set to avoid eager evaluation.
- Only load managed bounds if at least one of
latest/loweris enabled.
- Add an experimental app,
maint, that uploads Hackage revisions for previous tags when bounds can be bumped. - Add
package.<package>.expose.target, controlling whether a package is included in the default targets of envs. - Add the option
envs.<env>.localOverridesto control whether local packages are included in an env's GHC overrides, independently of whether they're exposed. - Add an env,
hix-build-tools, to configure packages used internally; likecabal-installandhpack. - Add the option
envs.<env>.inheritOverridesto control whether to include overrides from dependency flakes. - Allow specifying non-local packages in
envs.<env>.packages. - Add the option
envs.<env>.globalOverridesto control whether to include the global overrides. - Add the app
release-sourcefor uploading source tarballs without docs to Hackage. - Allow command scripts to be specified as paths as well as strings.
- Add
commands.<command>.buildInputsto configure packages in$PATHfor commands. - Add
output.expose.staticto control whether packages outputs includemusl-linked executables. - Remove
nodocfrom the OCforce, addforce'as an alias of the old behavior. - Add OC
modifyas a less unwieldy alias oftransformDrv. - Automatically compute overrides for the solver package set when managing deps.
- Use dependency information to assemble the GHCi search path.
- Allow mixed CLI options when running commands (including
ghci[d]) with env selection enabled.
- Add a reusable workflow for managed bounds updates.
- Parse Nix json output messages to diagnose problems in managed bounds apps; add overrides for installed packages that fail with a bounds error printed by Cabal.
- Replace
envs.<env>.derivationsby per-output-category flags inpackages.<package>.exposeto control which packages are included in outputs. - Add
envs.<env>.expose, analogous to package exposition config. - Add
devto the scoped envs to allow access to excluded derivations. - Add override combinators for toggling Cabal flags.
- Remove packages with env name prefix (
ghc96-hix) in favor of scoped derivations inlegacyPackages(ghc96.hix). - Expose intermediate and final build outputs as nested sets of environments and packages via module arguments
buildandoutputs. - Expose some computed attributes via the module argument
projectthat were previously read-only module options. - Add an override combinator for fetching from a different Hackage server.
- Add an override combinator for specifying the Hackage revision.
- Add an override combinator for specifying extra GHC options.
- Add an override combinator,
force, that combinesunbreak,jailbreak,nodocs,nobenchandnotest. - Add an override combinator for disabling a dependency (and interpret
nulllike that as well). - Move some non-package outputs in
legacyPackages, likeghcandconfig, to a subset with attribute nameproject. - Move all nested outputs in
appsandpackagestolegacyPackagesto adapt to stricter validation in Nix 2.19. - Expose
haskell.lib.composeto override functions ashsLibC. - Rename OC
cabalOverridestocabal2nixOverrides.
- Fetch
thaxfrom a static URL, removing the flake input. - Fix environment not being set when using
direnv. - Add an app,
bump, that updates dependency versions and tests the build before writing new bounds and overrides to a file that's incorporated into the build. - Add an app,
lower, that determines the lowest dependency versions with which the project builds. - Add the option
envs.<name>.hoogleto passwithHoogletoghcWithPackages. - Change the semantics of the option
profiledto enable executable profiling. The old behavior has been moved to the optionlibraryProfiling. - Add an environment
profiledwhose executables, with profiling enabled, are exposed as flake outputs like.#hix.profiledand.#env.profiled.hix. - Add a new attribute to package outputs,
musl, that uses the natively built toolchain available inpkgsMusl, as an alternative to the existingcross.musl64.
- Add the option
haskellToolsglobally and per-env, which allows specifying shell tools that should be made available from the env's GHC without overrides. - Separate the effect of the option
profilingfromenv.<name>.localPackage. - Add flake apps that build AppImage distributions using nix-appimage as
.#appimage,.#<exename>.appimage,.#env.<envname>.<exename>.appimage. - Add hooks to release process.
- The option
hackage.addallows changed files to be git-added, but not committed, during release whenhackage.commitisfalse. - Default to
mainpackage when none was specified forghci(d)commands in multi-package projects.
- Expose environment packages as
legacyPackages.<system>.<env>.<package>for each entry inghcVersions. - Expose local packages,
ghcandpkgsfor each env aslegacyPackages.<system>.env.<env>.{<package>,ghc,pkgs}.
- When releasing, the word
Un releasedcan be automatically replaced by the new version in changelogs whenhackage.setChangelogVersionistrue(default off).
- Allow envs to be excluded from being exposed as
devShellsfor specific systems. - Add an app,
dep-versions, that prints all components' direct dependencies and their actual version in an environment.
- Support multiple Cabal libraries in a single package.
- Add GHCi(d) CLI options
--ghci-optionsand--ghcid-options. - Allow cabal2nix derivations in overrides to be pre-generated and stored in a file to avoid IFD.
- Per-package
versionFileis now used for theversionfield in Cabal files.
- Custom prelude preprocessor no longer mistakes modules with the prefix
Preludefor the real thing.
- Add the top-level option
buildInputsthat specifies non-Haskell deps for all packages.
- Switch off IFD (i.e. cabal2nix) by default, allowing multiple systems to be exposed while still allowing flake checks to work.
- Change directory to the package root when running GHCi.
- Add the option
package.<name>.overridethat allows transforming a derivation with override combinators. - Add the option
package.<name>.buildInputsthat specifies non-Haskell deps for a package.
- Add commands for bootstrapping new and existing projects.
- Major rewrite moving Cabal config into the
packagesoption. - Add environments as a generalization of the GHC module.
- Add commands as a generalization of the GHCid runner.
- Add a CLI tool that acts as a GHC preprocessor for injecting extensions and prelude when running GHCi.