Changelog of @hackage/cabal2nix 2.19.1

Revision History for cabal2nix

2.19.1

Warning: This version of cabal2nix generates Nix expressions that are expected to be used with at least NixOS 22.11 or the unstable channels at 3928cfa27d9925f9fbd1d211cf2549f723546a81 or later (which should be all unstable channels published after 2022-10-23) due to changes how libcrypt is provided by nixpkgs. For details read below.

  • cabal2nix and hackage2nix will now emit a dependency on libxcrypt if the crypt library is requested by a package description. This has been done because nixpkgs has disabled libcrypt being bundled with glibc, so the library will need to be pulled in from elsewhere. These new generated nix expressions may not work correctly with older versions of nixpkgs (since two libcrypts would be pulled in). Versions expected to work are listed in the warning above. See also #576.
  • cabal2nix and hackage2nix can now resolve the FLAC library name. See also #567.
  • Fix test suite compilation with Cabal >= 3.8. See also #572.
  • Packages closely tied to cabal2nix have been merged into the main cabal2nix source repository. As a consequence, the cabal2nix source code has been moved into the cabal2nix subdirectory. See also #567.

2.19.0

Note that some of the API has also changed in a breaking manner because of the upgrade to distribution-nixpkgs 1.7.0, see #506.

  • Only use hpack when building if no cabal file is found for the package to process. See also #508.

  • hackage2nix now supports arbitrary Nix-style platform tuples in unsupported-platforms (including the new aarch64-darwin) as well as nixpkgs platform groups which are denoted as e. g. platforms.darwin and can be used instead of platform tuples. See also #506. API breaking change: The IsString instance for Platform in Distribution.Nixpkgs.Haskell.OrphanInstances has been removed.

  • The new hackage2nix supported-platforms configuration field allows prescribing a specific list of platforms to set in the package's platforms meta attribute. unsupported-platforms are now translated to badPlatforms instead of being subtracted from platforms. See also #506 and #560. API Breaking Change for Distribution.Nixpkgs.Haskell.FromCabal.Configuration.

  • cabal2nix will no longer emit a dependency on webkitgtk24x-gtk{2,3} if it detects the older 3.0 API of WebKit being used. Nixpkgs hasn't contained this package for a few years now due to security vulnerabilities and the packages still using it on Hackage are unmaintained. If you have a legacy project built with an old version of nixpkgs, either don't upgrade cabal2nix or emulate the old behavior using overrides. See also #521.

  • If the input cabal file declares just a single executable, the mainProgram meta attribute will be set in the resulting Nix expression. See also #506 and #557.

  • If cabal2nix (or hackage2nix) doesn't recognize the license of a package, it'll still assume that it's free and enable building on Hydra (i. e. use the default value of hydraPlatforms). This is done because Hackage requires uploaded packages to be open source. You may need to keep this change in mind, however, if you use cabal2nix for packaging unfree software. See also #520. isFreeLicense has changed semantically as a result.

  • Argument parsing logic in cabal2nix has been refactored in #544. API breaking change for the following modules:

    • Cabal2nix
    • Distribution.Nixpkgs.Fetch
    • Distribution.Nixpkgs.Haskell.Derivation (removed instance)
    • Distribution.Nixpkgs.Haskell.PackageSourceSpec
  • Update handling of Lua bindings to reflect current state upstream. See #527 and #547.

2.18.0

  • Support GHC 9.0.x and Cabal 3.4.0.0, API breaking change (See #503)
  • Fix fetching remote archives: Previously they weren't properly unpacked, API breaking change (See #455)
  • Resolution of system dependency attribute names in nixpkgs
    • Update changed upstream attribute names, reflect deprecations
    • Fix hackage2nix not resolving certain attribute names if multiple attribute names referred to the same derivation. (See #492 and distribution-nixpkgs#10)
  • hackage2nix: accept multiple config files at the command line given by specifying --config more than once (See #494)