Merge haskell-updates PR #371032 into staging

This commit is contained in:
sternenseemann 2025-04-22 12:02:16 +02:00
commit b35c701857
79 changed files with 19704 additions and 27192 deletions

View file

@ -58,7 +58,7 @@ Each of those compiler versions has a corresponding attribute set `packages` bui
it. However, the non-standard package sets are not tested regularly and, as a it. However, the non-standard package sets are not tested regularly and, as a
result, contain fewer working packages. The corresponding package set for GHC result, contain fewer working packages. The corresponding package set for GHC
9.4.8 is `haskell.packages.ghc948`. In fact `haskellPackages` (at the time of writing) is just an alias 9.4.8 is `haskell.packages.ghc948`. In fact `haskellPackages` (at the time of writing) is just an alias
for `haskell.packages.ghc966`: for `haskell.packages.ghc984`:
Every package set also re-exposes the GHC used to build its packages as `haskell.packages.*.ghc`. Every package set also re-exposes the GHC used to build its packages as `haskell.packages.*.ghc`.
@ -297,8 +297,8 @@ Defaults to `false`.
: Whether to build (HTML) documentation using [haddock][haddock]. : Whether to build (HTML) documentation using [haddock][haddock].
Defaults to `true` if supported. Defaults to `true` if supported.
`testTarget` `testTargets`
: Name of the test suite to build and run. If unset, all test suites will be executed. : Names of the test suites to build and run. If unset, all test suites will be executed.
`preCompileBuildDriver` `preCompileBuildDriver`
: Shell code to run before compiling `Setup.hs`. : Shell code to run before compiling `Setup.hs`.
@ -621,6 +621,12 @@ environment. This means you can reuse Nix expressions of packages included in
nixpkgs, but also use local Nix expressions like this: `hpkgs: [ nixpkgs, but also use local Nix expressions like this: `hpkgs: [
(hpkgs.callPackage ./my-project.nix { }) ]`. (hpkgs.callPackage ./my-project.nix { }) ]`.
`extraDependencies`
: Extra dependencies, in the form of cabal2nix build attributes. An example use
case is when you have Haskell scripts that use libraries that don't occur in
your packages' dependencies. Example: `hpkgs: {libraryHaskellDepends =
[ hpkgs.releaser ]}`. Defaults to `hpkgs: { }`.
`nativeBuildInputs` `nativeBuildInputs`
: Expects a list of derivations to add as build tools to the build environment. : Expects a list of derivations to add as build tools to the build environment.
This is the place to add packages like `cabal-install`, `doctest` or `hlint`. This is the place to add packages like `cabal-install`, `doctest` or `hlint`.
@ -773,7 +779,7 @@ that depend on that library, you may want to use:
```nix ```nix
haskellPackages.haskell-ci.overrideScope (self: super: { haskellPackages.haskell-ci.overrideScope (self: super: {
Cabal = self.Cabal_3_14_1_0; Cabal = self.Cabal_3_14_1_1;
}) })
``` ```

View file

@ -15,6 +15,9 @@
- GCC has been updated from GCC 13 to GCC 14. - GCC has been updated from GCC 13 to GCC 14.
This introduces some backwardsincompatible changes; see the [upstream porting guide](https://gcc.gnu.org/gcc-14/porting_to.html) for details. This introduces some backwardsincompatible changes; see the [upstream porting guide](https://gcc.gnu.org/gcc-14/porting_to.html) for details.
- The default GHC version has been updated from 9.6 to 9.8.
`haskellPackages` also uses Stackage LTS 23 (instead of LTS 22) as a baseline.
- LLVM has been updated from LLVM 16 (on Darwin) and LLVM 18 (on other platforms) to LLVM 19. - LLVM has been updated from LLVM 16 (on Darwin) and LLVM 18 (on other platforms) to LLVM 19.
This introduces some backwardsincompatible changes; see the [upstream release notes](https://releases.llvm.org/) for details. This introduces some backwardsincompatible changes; see the [upstream release notes](https://releases.llvm.org/) for details.
@ -405,6 +408,10 @@
- `lib.types.coercedTo` - `lib.types.coercedTo`
- `lib.types.either` - `lib.types.either`
- The `testTarget` argument of `haskellPackages.mkDerivation` has been deprecated in favour of `testTargets`.
`testTarget` took a space separated string of targets, whereas the new `testTargets` argument takes a list of targets.
For instance, `testTarget = "foo bar baz"` should become `testTargets = [ "foo" "bar" "baz" ]`.
- Plasma 5 and Qt 5 based versions of associated software are deprecated in NixOS 25.05, and will be removed in NixOS 25.11. Users are encouraged to upgrade to Plasma 6. - Plasma 5 and Qt 5 based versions of associated software are deprecated in NixOS 25.05, and will be removed in NixOS 25.11. Users are encouraged to upgrade to Plasma 6.
- `rustPlatform.buildRustPackage` stops handling the deprecated argument `cargoSha256`. Out-of-tree packages that haven't migrated from `cargoSha256` to `cargoHash` now receive errors. - `rustPlatform.buildRustPackage` stops handling the deprecated argument `cargoSha256`. Out-of-tree packages that haven't migrated from `cargoSha256` to `cargoHash` now receive errors.

View file

@ -1,8 +1,8 @@
#! /usr/bin/env nix-shell #! /usr/bin/env nix-shell
#! nix-shell -i bash -p git gh -I nixpkgs=. #! nix-shell -i bash -p git gh -I nixpkgs=.
# #
# Script to merge the currently open haskell-updates PR into master, bump the # Script to merge the currently open haskell-updates PR , bump the Stackage
# Stackage version and Hackage versions, and open the next haskell-updates PR. # version and Hackage versions, and open the next haskell-updates PR.
set -eu -o pipefail set -eu -o pipefail
@ -79,10 +79,6 @@ fi
echo "Merging https://github.com/NixOS/nixpkgs/pull/${curr_haskell_updates_pr_num}..." echo "Merging https://github.com/NixOS/nixpkgs/pull/${curr_haskell_updates_pr_num}..."
gh pr merge --repo NixOS/nixpkgs --merge "$curr_haskell_updates_pr_num" gh pr merge --repo NixOS/nixpkgs --merge "$curr_haskell_updates_pr_num"
# Update the list of Haskell package versions in NixOS on Hackage.
echo "Updating list of Haskell package versions in NixOS on Hackage..."
./maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
# Update stackage, Hackage hashes, and regenerate Haskell package set # Update stackage, Hackage hashes, and regenerate Haskell package set
echo "Updating Stackage..." echo "Updating Stackage..."
./maintainers/scripts/haskell/update-stackage.sh --do-commit ./maintainers/scripts/haskell/update-stackage.sh --do-commit
@ -100,7 +96,7 @@ git push "$push_remote" haskell-updates
new_pr_body=$(cat <<EOF new_pr_body=$(cat <<EOF
### This Merge ### This Merge
This PR is the regular merge of the \`haskell-updates\` branch into \`master\`. This PR is the regular merge of the \`haskell-updates\` branch into \`staging\`.
This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at [cdepillabout/nix-haskell-updates-status](https://github.com/cdepillabout/nix-haskell-updates-status). This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at [cdepillabout/nix-haskell-updates-status](https://github.com/cdepillabout/nix-haskell-updates-status).
@ -113,7 +109,7 @@ Our workflow is currently described in [\`pkgs/development/haskell-modules/HACKI
The short version is this: The short version is this:
* We regularly update the Stackage and Hackage pins on \`haskell-updates\` (normally at the beginning of a merge window). * We regularly update the Stackage and Hackage pins on \`haskell-updates\` (normally at the beginning of a merge window).
* The community fixes builds of Haskell packages on that branch. * The community fixes builds of Haskell packages on that branch.
* We aim at at least one merge of \`haskell-updates\` into \`master\` every two weeks. * We aim at at least one merge of \`haskell-updates\` into \`staging\` every two weeks.
* We only do the merge if the [\`mergeable\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/mergeable) job is succeeding on hydra. * We only do the merge if the [\`mergeable\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/mergeable) job is succeeding on hydra.
* If a [\`maintained\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/maintained) package is still broken at the time of merge, we will only merge if the maintainer has been pinged 7 days in advance. (If you care about a Haskell package, become a maintainer!) * If a [\`maintained\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/maintained) package is still broken at the time of merge, we will only merge if the maintainer has been pinged 7 days in advance. (If you care about a Haskell package, become a maintainer!)
@ -126,4 +122,4 @@ EOF
) )
echo "Opening a PR for the next haskell-updates merge cycle..." echo "Opening a PR for the next haskell-updates merge cycle..."
gh pr create --repo NixOS/nixpkgs --base master --head haskell-updates --title "haskellPackages: update stackage and hackage" --body "$new_pr_body" gh pr create --repo NixOS/nixpkgs --base staging --head haskell-updates --title "haskellPackages: update stackage and hackage" --body "$new_pr_body"

View file

@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell #! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils haskellPackages.cabal2nix-unstable git nix -I nixpkgs=. #! nix-shell -i bash -p coreutils haskellPackages.cabal2nix-unstable git nix nixfmt-rfc-style -I nixpkgs=.
set -euo pipefail set -euo pipefail
@ -102,6 +102,7 @@ run_hackage2nix
fi fi
nixfmt pkgs/development/haskell-modules/hackage-packages.nix
if [[ "$DO_COMMIT" -eq 1 ]]; then if [[ "$DO_COMMIT" -eq 1 ]]; then
git add pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml git add pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml

View file

@ -0,0 +1,31 @@
#! /usr/bin/env nix-shell
#! nix-shell -i nu -p nushell flock gnused -I nixpkgs=.
# This script tests to build all packages listed in broken.yaml, expecting a build failure.
# It will remove all packages that build fine from the list.
# Attention: For unknown reasons, the script can't be easily cancelled and needs to be killed manually if it shouldn't run to completion.
use std log
let broken_config = "pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml"
def is-broken [package : string]: nothing -> bool {
let res = with-env { NIXPKGS_ALLOW_BROKEN: "1" } {
# rather high timeout of half an hour, just to prevent never-ending builds
^nix-build --no-out-link -j 1 --cores 1 --timeout 1800 -A $"haskellPackages.($package)" | complete
}
if $res.exit_code == 0 {
log warning $"($package) is not broken anymore!"
return false
} else {
log info $"($package) is still broken."
log debug $"($package) build log:\n($res.stderr)"
return true
}
}
def main [] {
$broken_config | open | get broken-packages
| par-each {|package| if not (is-broken $package) { ^flock -x $broken_config -c $"sed -i -e '/^ - ($package) /d' ($broken_config)" }}
}

View file

@ -8,7 +8,7 @@ set -eu -o pipefail
# (should be capitalized like the display name) # (should be capitalized like the display name)
SOLVER=LTS SOLVER=LTS
# Stackage solver verson, if any. Use latest if empty # Stackage solver verson, if any. Use latest if empty
VERSION=22 VERSION=
TMP_TEMPLATE=update-stackage.XXXXXXX TMP_TEMPLATE=update-stackage.XXXXXXX
readonly SOLVER readonly SOLVER
readonly VERSION readonly VERSION

View file

@ -1,6 +1,5 @@
{ {
haskellPackages, haskellPackages,
mkDerivation,
fetchFromGitHub, fetchFromGitHub,
lib, lib,
stdenv, stdenv,
@ -13,6 +12,8 @@
}: }:
let let
inherit (haskellPackages) mkDerivation;
version = "1.10.0"; version = "1.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tamarin-prover"; owner = "tamarin-prover";

View file

@ -0,0 +1,120 @@
{
lib,
stdenv,
makeWrapper,
haskellPackages,
fetchFromGitHub,
# dependencies
slither-analyzer,
}:
haskellPackages.mkDerivation rec {
pname = "echidna";
version = "2.2.6";
src = fetchFromGitHub {
owner = "crytic";
repo = "echidna";
tag = "v${version}";
sha256 = "sha256-5nzis7MXOqs0bhx2jrEexjZYZI2qY6D0D7AWO+SPs+A=";
};
isExecutable = true;
buildTools = with haskellPackages; [
hpack
];
executableHaskellDepends = with haskellPackages; [
# base dependencies
aeson
base
containers
directory
hevm
MonadRandom
mtl
text
# library dependencies
ansi-terminal
async
base16-bytestring
binary
brick
bytestring
data-bword
data-dword
deepseq
exceptions
extra
filepath
hashable
html-conduit
html-entities
http-conduit
ListLike
optics
optics-core
process
random
rosezipper
semver
signal
split
strip-ansi-escape
time
unliftio
utf8-string
vector
vty
vty-crossplatform
wai-extra
warp
word-wrap
xml-conduit
yaml
# executable dependencies
code-page
filepath
hashable
optparse-applicative
time
with-utf8
];
executableToolDepends = [
makeWrapper
];
preConfigure = ''
hpack
'';
postInstall =
with haskellPackages;
# https://github.com/NixOS/nixpkgs/pull/304352
lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
remove-references-to -t ${warp.out} "$out/bin/echidna"
remove-references-to -t ${wreq.out} "$out/bin/echidna"
''
# make slither-analyzer a runtime dependency
+ ''
wrapProgram $out/bin/echidna \
--prefix PATH : ${lib.makeBinPath [ slither-analyzer ]}
'';
doHaddock = false;
# tests depend on a specific version of solc
doCheck = false;
homepage = "https://github.com/crytic/echidna";
description = "Ethereum smart contract fuzzer";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [
arturcygan
hellwolf
];
platforms = lib.platforms.unix;
mainProgram = "echidna";
}

View file

@ -12,7 +12,7 @@ let
# nom has unit-tests and golden-tests # nom has unit-tests and golden-tests
# golden-tests call nix and thus cant be run in a nix build. # golden-tests call nix and thus cant be run in a nix build.
testTarget = "unit-tests"; testTargets = [ "unit-tests" ];
buildTools = [ installShellFiles ]; buildTools = [ installShellFiles ];
postInstall = '' postInstall = ''

View file

@ -41,9 +41,6 @@ in
remove-references-to \ remove-references-to \
-t ${pandoc-cli.scope.pandoc} \ -t ${pandoc-cli.scope.pandoc} \
$out/bin/pandoc $out/bin/pandoc
''
# https://github.com/jgm/typst-hs/commit/9707b74ce60d71c2ba0f35249ffbd01dea197a6e
+ lib.optionalString (lib.versionAtLeast pandoc-cli.scope.typst.version "0.6.1") ''
remove-references-to \ remove-references-to \
-t ${pandoc-cli.scope.typst} \ -t ${pandoc-cli.scope.typst} \
$out/bin/pandoc $out/bin/pandoc

View file

@ -1,6 +1,6 @@
{ {
"commit": "c9ce1cc4a029220ec3582fbcf69e082d245d78b6", "commit": "6fc5e0d20fed4a6e8ec26f6956786d0077f028b4",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/c9ce1cc4a029220ec3582fbcf69e082d245d78b6.tar.gz", "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/6fc5e0d20fed4a6e8ec26f6956786d0077f028b4.tar.gz",
"sha256": "02x3z4rg4dwarzb6p88z7sff40bkbq41gxnczvzph8s3s8jq9iw1", "sha256": "08vkrfn4s1jb680rq1flxas8hv04f5l715z0kh8sv909k3psbfak",
"msg": "Update from Hackage at 2024-12-23T18:27:47Z" "msg": "Update from Hackage at 2025-03-30T11:13:14Z"
} }

View file

@ -22,8 +22,8 @@ let
# Haskell packages that require ghc 8.10 # Haskell packages that require ghc 8.10
hs810Pkgs = import ./packages/ghc8_10 { inherit pkgs lib; }; hs810Pkgs = import ./packages/ghc8_10 { inherit pkgs lib; };
# Haskell packages that require ghc 9.2 # Haskell packages that require ghc 9.4
hs92Pkgs = import ./packages/ghc9_2 { inherit pkgs lib; }; hs94Pkgs = import ./packages/ghc9_4 { inherit pkgs lib; };
# Patched, originally npm-downloaded, packages # Patched, originally npm-downloaded, packages
patchedNodePkgs = import ./packages/node { patchedNodePkgs = import ./packages/node {
@ -38,7 +38,7 @@ let
assembleScope = assembleScope =
self: basics: self: basics:
(hs96Pkgs self).elmPkgs (hs96Pkgs self).elmPkgs
// (hs92Pkgs self).elmPkgs // (hs94Pkgs self).elmPkgs
// (hs810Pkgs self).elmPkgs // (hs810Pkgs self).elmPkgs
// (patchedNodePkgs self) // (patchedNodePkgs self)
// basics; // basics;

View file

@ -1,7 +1,7 @@
{ pkgs, lib }: { pkgs, lib }:
self: self:
pkgs.haskell.packages.ghc92.override { pkgs.haskell.packages.ghc94.override {
overrides = overrides =
self: super: self: super:
let let
@ -49,12 +49,5 @@ pkgs.haskell.packages.ghc92.override {
elm-format-lib = fixHaddock (doJailbreak (self.callPackage ./elm-format/elm-format-lib.nix { })); elm-format-lib = fixHaddock (doJailbreak (self.callPackage ./elm-format/elm-format-lib.nix { }));
elm-format-test-lib = fixHaddock (self.callPackage ./elm-format/elm-format-test-lib.nix { }); elm-format-test-lib = fixHaddock (self.callPackage ./elm-format/elm-format-test-lib.nix { });
elm-format-markdown = fixHaddock (self.callPackage ./elm-format/elm-format-markdown.nix { }); elm-format-markdown = fixHaddock (self.callPackage ./elm-format/elm-format-markdown.nix { });
# elm-format requires text >= 2.0
text = self.text_2_0_2;
# unordered-container's tests indirectly depend on text < 2.0
unordered-containers = overrideCabal (drv: { doCheck = false; }) super.unordered-containers;
# relude-1.1.0.0's tests depend on hedgehog < 1.2, which indirectly depends on text < 2.0
relude = overrideCabal (drv: { doCheck = false; }) super.relude;
}; };
} }

View file

@ -299,6 +299,20 @@ stdenv.mkDerivation (
sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv";
}) })
# Determine size of time related types using hsc2hs instead of assuming CLong.
# Prevents failures when e.g. stat(2)ing on 32bit systems with 64bit time_t etc.
# https://github.com/haskell/ghcup-hs/issues/1107
# https://gitlab.haskell.org/ghc/ghc/-/issues/25095
# Note that in normal situations this shouldn't be the case since nixpkgs
# doesn't set -D_FILE_OFFSET_BITS=64 and friends (yet).
(fetchpatch {
name = "unix-fix-ctimeval-size-32-bit.patch";
url = "https://github.com/haskell/unix/commit/8183e05b97ce870dd6582a3677cc82459ae566ec.patch";
sha256 = "17q5yyigqr5kxlwwzb95sx567ysfxlw6bp3j4ji20lz0947aw6gv";
stripLen = 1;
extraPrefix = "libraries/unix/";
})
# See upstream patch at # See upstream patch at
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4885. Since we build
# from source distributions, the auto-generated configure script needs to be # from source distributions, the auto-generated configure script needs to be

View file

@ -0,0 +1,4 @@
import ./common-hadrian.nix rec {
version = "9.12.2";
sha256 = "0e49cd5dde43f348c5716e5de9a5d7a0f8d68d945dc41cf75dfdefe65084f933";
}

View file

@ -1,4 +0,0 @@
import ./common-make-native-bignum.nix {
version = "9.2.5";
sha256 = "0606797d1b38e2d88ee2243f38ec6b9a1aa93e9b578e95f0de9a9c0a4144021c";
}

View file

@ -1,4 +0,0 @@
import ./common-make-native-bignum.nix {
version = "9.2.6";
sha256 = "7a54cf0398ad488b4ed219e15d1d1e64c0b6876c43a0564550dd11f0540d7305";
}

View file

@ -1,4 +0,0 @@
import ./common-make-native-bignum.nix {
version = "9.2.7";
sha256 = "a253567a17b734a4c0dd0ffa296d33c2a5b5a54a77df988806a2a1e1ca7e88b8";
}

View file

@ -0,0 +1,4 @@
import ./common-hadrian.nix {
version = "9.6.7";
sha256 = "sha256-0FO/bOHViKdc/oyTFiaUhunY+4nc32/ZKDb6Lj32EwU=";
}

View file

@ -181,9 +181,42 @@
in in
# Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
lib.optionals (lib.versionOlder version "9.8") [ lib.optionals (lib.versionOlder version "9.6.7") [
./docs-sphinx-7.patch ./docs-sphinx-7.patch
] ]
++ lib.optionals (lib.versionAtLeast version "9.6" && lib.versionOlder version "9.6.5") [
# Fix aarch64-linux builds of 9.6.0 - 9.6.4.
# Fixes a pointer type mismatch in the RTS.
# https://gitlab.haskell.org/ghc/ghc/-/issues/24348
(fetchpatch {
name = "fix-incompatible-pointer-types.patch";
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/1e48c43483693398001bfb0ae644a3558bf6a9f3.diff";
hash = "sha256-zUlzpX7J1n+MCEv9AWpj69FTy2uzJH8wrQDkTexGbgM=";
})
]
++
lib.optionals
(
# 2025-01-16: unix >= 2.8.6.0 is unaffected which is shipped by GHC 9.12.1 and 9.8.4
lib.versionOlder version "9.11"
&& !(lib.versionAtLeast version "9.6.7" && lib.versionOlder version "9.8")
&& !(lib.versionAtLeast version "9.8.4" && lib.versionOlder version "9.9")
)
[
# Determine size of time related types using hsc2hs instead of assuming CLong.
# Prevents failures when e.g. stat(2)ing on 32bit systems with 64bit time_t etc.
# https://github.com/haskell/ghcup-hs/issues/1107
# https://gitlab.haskell.org/ghc/ghc/-/issues/25095
# Note that in normal situations this shouldn't be the case since nixpkgs
# doesn't set -D_FILE_OFFSET_BITS=64 and friends (yet).
(fetchpatch {
name = "unix-fix-ctimeval-size-32-bit.patch";
url = "https://github.com/haskell/unix/commit/8183e05b97ce870dd6582a3677cc82459ae566ec.patch";
sha256 = "17q5yyigqr5kxlwwzb95sx567ysfxlw6bp3j4ji20lz0947aw6gv";
stripLen = 1;
extraPrefix = "libraries/unix/";
})
]
++ lib.optionals (lib.versionAtLeast version "9.6" && lib.versionOlder version "9.6.6") [ ++ lib.optionals (lib.versionAtLeast version "9.6" && lib.versionOlder version "9.6.6") [
(fetchpatch { (fetchpatch {
name = "fix-fully_static.patch"; name = "fix-fully_static.patch";

View file

@ -283,7 +283,22 @@ stdenv.mkDerivation (
]; ];
patches = patches =
lib.optionals (lib.versionOlder version "9.4") [ [
# Determine size of time related types using hsc2hs instead of assuming CLong.
# Prevents failures when e.g. stat(2)ing on 32bit systems with 64bit time_t etc.
# https://github.com/haskell/ghcup-hs/issues/1107
# https://gitlab.haskell.org/ghc/ghc/-/issues/25095
# Note that in normal situations this shouldn't be the case since nixpkgs
# doesn't set -D_FILE_OFFSET_BITS=64 and friends (yet).
(fetchpatch {
name = "unix-fix-ctimeval-size-32-bit.patch";
url = "https://github.com/haskell/unix/commit/8183e05b97ce870dd6582a3677cc82459ae566ec.patch";
sha256 = "17q5yyigqr5kxlwwzb95sx567ysfxlw6bp3j4ji20lz0947aw6gv";
stripLen = 1;
extraPrefix = "libraries/unix/";
})
]
++ lib.optionals (lib.versionOlder version "9.4") [
# fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482
(fetchpatch { (fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch";

View file

@ -1,5 +1,5 @@
import ./common-hadrian.nix { import ./common-hadrian.nix {
version = "9.13.20241031"; version = "9.13.20250205";
rev = "0b11cdc022ce33d089db95b2b2e7c1f4bb326d37"; rev = "5622a14a7a036ab36e28963a4fba826a5ac798a7";
sha256 = "0kqnpcgv49ricbr950lffs8gx7jrcg6anzc0qvwy5pb518w0d37i"; sha256 = "1djhs67gz136xvky7wsv44ic60j7xk4fzabr5why2jh312r4vlr4";
} }

View file

@ -34,6 +34,8 @@ self: super: {
# Allow transformers-compat >= 0.7 # Allow transformers-compat >= 0.7
optparse-applicative = doJailbreak self.optparse-applicative_0_15_1_0; optparse-applicative = doJailbreak self.optparse-applicative_0_15_1_0;
ansi-wl-pprint = self.ansi-wl-pprint_0_6_9; ansi-wl-pprint = self.ansi-wl-pprint_0_6_9;
ansi-terminal = self.ansi-terminal_1_0_2;
ansi-terminal-types = self.ansi-terminal-types_0_11_5;
} }
) )
); );

View file

@ -7,28 +7,30 @@ there are no Haskell-related evaluation errors or build errors that get into
the Nixpkgs `master` branch. the Nixpkgs `master` branch.
We do this by periodically merging an updated set of Haskell packages on the We do this by periodically merging an updated set of Haskell packages on the
`haskell-updates` branch into the `master` branch. Each member of the team `haskell-updates` branch into the `staging` branch. Each member of the team
takes a two week period where they are in charge of merging the takes a two week period where they are in charge of merging the
`haskell-updates` branch into `master`. This is the documentation for this `haskell-updates` branch into `staging`. This is the documentation for this
workflow. workflow.
The workflow generally proceeds in three main steps: The workflow generally proceeds in three main steps:
1. create the initial `haskell-updates` PR, and update Stackage and Hackage snapshots 1. create the initial `haskell-updates` PR, and update Stackage and Hackage snapshots
1. wait for contributors to fix newly broken Haskell packages 1. wait for contributors to fix newly broken Haskell packages
1. merge `haskell-updates` into `master` 1. merge `haskell-updates` into `staging`
Each of these steps is described in a separate section. Each of these steps is described in a separate section.
There is a script that automates the workflow for merging the currently open There is a script that automates the workflow for merging the currently open
`haskell-updates` PR into `master` and opening the next PR. It is described `haskell-updates` PR into `staging` and opening the next PR. It is described
at the end of this document. at the end of this document.
## Initial `haskell-updates` PR ## Initial `haskell-updates` PR
In this section we create the PR for merging `haskell-updates` into `master`. In this section we create the PR for merging `haskell-updates` into `staging`.
1. Make sure the `haskell-updates` branch is up-to-date with `master`. 1. Make sure the `haskell-updates` branch is up-to-date with a _merge base_ of
`staging` and `master`. `haskell-updates` is not based _on_ `staging`,
so that it can share binary cache with `master`.
1. Update the Stackage Nightly resolver used by Nixpkgs and create a commit: 1. Update the Stackage Nightly resolver used by Nixpkgs and create a commit:
@ -50,7 +52,7 @@ In this section we create the PR for merging `haskell-updates` into `master`.
1. Push these commits to the `haskell-updates` branch of the NixOS/nixpkgs repository. 1. Push these commits to the `haskell-updates` branch of the NixOS/nixpkgs repository.
1. Open a PR on Nixpkgs for merging `haskell-updates` into `master`. The recommended 1. Open a PR on Nixpkgs for merging `haskell-updates` into `staging`. The recommended
PR title and body text are described in the `merge-and-open-pr.sh` section. PR title and body text are described in the `merge-and-open-pr.sh` section.
## Notify Maintainers and Fix Broken Packages ## Notify Maintainers and Fix Broken Packages
@ -85,7 +87,7 @@ most recent build report.
Maintainers should be given at least 7 days to fix up their packages when they Maintainers should be given at least 7 days to fix up their packages when they
break. If maintainers don't fix up their packages within 7 days, then they break. If maintainers don't fix up their packages within 7 days, then they
may be marked broken before merging `haskell-updates` into `master`. may be marked broken before merging `haskell-updates` into `staging`.
### Fix Broken Packages ### Fix Broken Packages
@ -153,7 +155,7 @@ following will happen:
- All updated files will be committed. - All updated files will be committed.
## Merge `haskell-updates` into `master` ## Merge `haskell-updates` into `staging`
Now it is time to merge the `haskell-updates` PR you opened above. Now it is time to merge the `haskell-updates` PR you opened above.
@ -168,33 +170,12 @@ Before doing this, make sure of the following:
have been pinged on GitHub and given at least a week to fix their packages. have been pinged on GitHub and given at least a week to fix their packages.
This is especially important for widely-used packages like `cachix`. This is especially important for widely-used packages like `cachix`.
- Make sure you first merge the `master` branch into `haskell-updates`. Wait - Keep an eye on the next `staging-next` iteration (which is branched off
for Hydra to evaluate the new `haskell-updates` jobset. Make sure you only from `staging`) to confirm that there are no show stopping issues stemming
merge `haskell-updates` into `master` when there are no evaluation errors. from interactions between changes on `staging` and `haskell-updates`.
Also be aware that build or eval regressions from a `haskell-updates`
- Due to Hydra having only a small number of Darwin build machines, the iteration may only become apparent on `staging-next`, especially when the
`haskell-updates` jobset on Hydra often has many queued Darwin jobs. `haskell-updates` jobset had e.g. Darwin builds disabled.
In order to not have these queued Darwin jobs prevent the `haskell-updates`
branch from being merged to `master` in a timely manner, we have special
rules for Darwin jobs.
- It is alright to merge the `haskell-updates` branch to `master` if
there are remaining queued Darwin jobs on Hydra.
- We would like to keep GHC and the `mergeable` job building on Darwin.
Do not merge the `haskell-updates` branch to `master` if GHC is failing
to build, or the `mergeable` job has failing Darwin constituent jobs.
If GHC and the `mergeable` job are not failing, but merely queued,
it is alright to merge the `haskell-updates` branch to `master`.
- We do not need to keep the `maintained` job building on Darwin.
If `maintained` packages are failing on Darwin, it is helpful to
mark them as broken on that platform.
When you've double-checked these points, go ahead and merge the `haskell-updates` PR.
After merging, **make sure not to delete the `haskell-updates` branch**, since it
causes all currently open Haskell-related pull-requests to be automatically closed on GitHub.
## Script for Merging `haskell-updates` and Opening a New PR ## Script for Merging `haskell-updates` and Opening a New PR
@ -233,10 +214,6 @@ opening the next one. When you want to merge the currently open
$ ./maintainers/scripts/haskell/mark-broken.sh --do-commit $ ./maintainers/scripts/haskell/mark-broken.sh --do-commit
``` ```
1. Merge `master` into `haskell-updates` and make sure to push to the
`haskell-updates` branch. (This can be skipped if `master` has recently
been merged into `haskell-updates`.)
1. Go to https://hydra.nixos.org/jobset/nixpkgs/haskell-updates and force an 1. Go to https://hydra.nixos.org/jobset/nixpkgs/haskell-updates and force an
evaluation of the `haskell-updates` jobset. See one of the following evaluation of the `haskell-updates` jobset. See one of the following
sections for how to do this. Make sure there are no evaluation errors. If sections for how to do this. Make sure there are no evaluation errors. If
@ -270,11 +247,14 @@ opening the next one. When you want to merge the currently open
## Update Hackage Version Information ## Update Hackage Version Information
After merging into `master` you can update what Hackage displays as the current Remember to regularly update what Hackage displays as the current
version in NixOS for every individual package. To do this you run version in NixOS for every individual package. To do this you run
`maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh`. See the `maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh` on a checkout
script for how to provide credentials. Once you have configured credentials, of `master` (or `nixpkgs-unstable`). See the script for how to provide credentials.
running this takes only a few seconds. Once you have configured credentials, running this takes only a few seconds.
The best time to do this is after `staging-next` has been merged since this is
the way Haskell package updates propagate to `master`.
## Additional Info ## Additional Info

View file

@ -2,6 +2,7 @@
{ {
mkDerivation, mkDerivation,
aeson, aeson,
ansi-terminal,
ansi-wl-pprint, ansi-wl-pprint,
base, base,
bytestring, bytestring,
@ -34,16 +35,17 @@
}: }:
mkDerivation { mkDerivation {
pname = "cabal2nix"; pname = "cabal2nix";
version = "unstable-2024-12-31"; version = "unstable-2025-04-22";
src = fetchzip { src = fetchzip {
url = "https://github.com/NixOS/cabal2nix/archive/e290b906f056dd1414ede71b4bb6375be2d0aa5d.tar.gz"; url = "https://github.com/NixOS/cabal2nix/archive/e6ed81965def7775aabdda7456d0c13f626295ee.tar.gz";
sha256 = "0x94w4dfjfxp3f5h7w5738znkyb8barzjki0xsf94asiffiqsgxn"; sha256 = "1fh428r4wfrqjj77dxy1l3d9scm4ywz89rp7dhp07y3bq5yr7hs4";
}; };
postUnpack = "sourceRoot+=/cabal2nix; echo source root reset to $sourceRoot"; postUnpack = "sourceRoot+=/cabal2nix; echo source root reset to $sourceRoot";
isLibrary = true; isLibrary = true;
isExecutable = true; isExecutable = true;
libraryHaskellDepends = [ libraryHaskellDepends = [
aeson aeson
ansi-terminal
ansi-wl-pprint ansi-wl-pprint
base base
bytestring bytestring

File diff suppressed because it is too large Load diff

View file

@ -243,40 +243,12 @@ self: super:
# Otherwise impure gcc is used, which is Apple's weird wrapper # Otherwise impure gcc is used, which is Apple's weird wrapper
c2hsc = addTestToolDepends [ pkgs.gcc ] super.c2hsc; c2hsc = addTestToolDepends [ pkgs.gcc ] super.c2hsc;
http-client-tls = overrideCabal (drv: {
postPatch =
''
# This comment has been inserted, so the derivation hash changes, forcing
# a rebuild of this derivation which has succeeded to build on Hydra before,
# but apparently been corrupted, causing reverse dependencies to fail.
#
# This workaround can be removed upon the next darwin stdenv rebuild,
# presumably https://github.com/NixOS/nixpkgs/pull/152850 or the next
# full haskellPackages rebuild.
''
+ drv.postPatch or "";
}) super.http-client-tls;
http2 = super.http2.overrideAttrs (drv: { http2 = super.http2.overrideAttrs (drv: {
# Allow access to local networking when the Darwin sandbox is enabled, so http2 can run tests # Allow access to local networking when the Darwin sandbox is enabled, so http2 can run tests
# that access localhost. # that access localhost.
__darwinAllowLocalNetworking = true; __darwinAllowLocalNetworking = true;
}); });
foldl = overrideCabal (drv: {
postPatch =
''
# This comment has been inserted, so the derivation hash changes, forcing
# a rebuild of this derivation which has succeeded to build on Hydra before,
# but apparently been corrupted, causing reverse dependencies to fail.
#
# This workaround can be removed upon the next darwin stdenv rebuild,
# presumably https://github.com/NixOS/nixpkgs/pull/152850 or the next
# full haskellPackages rebuild.
''
+ drv.postPatch or "";
}) super.foldl;
# https://hydra.nixos.org/build/230964714/nixlog/1 # https://hydra.nixos.org/build/230964714/nixlog/1
inline-c-cpp = appendPatch (pkgs.fetchpatch { inline-c-cpp = appendPatch (pkgs.fetchpatch {
url = "https://github.com/fpco/inline-c/commit/e8dc553b13bb847409fdced649a6a863323cff8a.patch"; url = "https://github.com/fpco/inline-c/commit/e8dc553b13bb847409fdced649a6a863323cff8a.patch";
@ -362,6 +334,8 @@ self: super:
http-reverse-proxy = dontCheck super.http-reverse-proxy; http-reverse-proxy = dontCheck super.http-reverse-proxy;
servant-auth-server = dontCheck super.servant-auth-server; servant-auth-server = dontCheck super.servant-auth-server;
sysinfo = dontCheck super.sysinfo;
} }
// lib.optionalAttrs pkgs.stdenv.hostPlatform.isAarch64 { // lib.optionalAttrs pkgs.stdenv.hostPlatform.isAarch64 {
# aarch64-darwin # aarch64-darwin

View file

@ -46,7 +46,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -61,6 +61,20 @@ self: super: {
# their existence to callPackages, but their is no shim for lower GHC versions. # their existence to callPackages, but their is no shim for lower GHC versions.
system-cxx-std-lib = null; system-cxx-std-lib = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# only broken for >= 9.6
calligraphy = doDistribute (unmarkBroken super.calligraphy);
# Only required for ghc >= 9.2
nothunks = super.nothunks.override {
wherefrom-compat = null;
};
# Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
aeson = dontCheck super.aeson;
# For GHC < 9.4, some packages need data-array-byte as an extra dependency # For GHC < 9.4, some packages need data-array-byte as an extra dependency
# For GHC < 9.2, os-string is not required. # For GHC < 9.2, os-string is not required.
primitive = addBuildDepends [ self.data-array-byte ] super.primitive; primitive = addBuildDepends [ self.data-array-byte ] super.primitive;
@ -77,6 +91,9 @@ self: super: {
); );
hashable-time = doDistribute (unmarkBroken super.hashable-time); hashable-time = doDistribute (unmarkBroken super.hashable-time);
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# Too strict lower bounds on base # Too strict lower bounds on base
primitive-addr = doJailbreak super.primitive-addr; primitive-addr = doJailbreak super.primitive-addr;
@ -84,7 +101,7 @@ self: super: {
ghc-api-compat = doDistribute (unmarkBroken self.ghc-api-compat_8_10_7); ghc-api-compat = doDistribute (unmarkBroken self.ghc-api-compat_8_10_7);
# Needs to use ghc-lib due to incompatible GHC # Needs to use ghc-lib due to incompatible GHC
ghc-tags = doDistribute (addBuildDepend self.ghc-lib self.ghc-tags_1_5); ghc-tags = doDistribute self.ghc-tags_1_5;
# Jailbreak to fix the build. # Jailbreak to fix the build.
base-noprelude = doJailbreak super.base-noprelude; base-noprelude = doJailbreak super.base-noprelude;
@ -133,8 +150,16 @@ self: super: {
# bundled with GHC < 9.0. # bundled with GHC < 9.0.
wai-extra = dontHaddock super.wai-extra; wai-extra = dontHaddock super.wai-extra;
# Overly-strict bounds introduced by a revision in version 0.3.2. # tar > 0.6 requires os-string which can't be built with bytestring < 0.11
text-metrics = doJailbreak super.text-metrics; tar = overrideCabal (drv: {
jailbreak = true;
buildDepends = drv.buildDepends or [ ] ++ [
self.bytestring-handle
];
}) self.tar_0_6_0_0;
# text-metrics >= 0.3.3 requires GHC2021
text-metrics = doDistribute (doJailbreak self.text-metrics_0_3_2);
bytestring-handle = unmarkBroken (doDistribute super.bytestring-handle);
# Doesn't build with 9.0, see https://github.com/yi-editor/yi/issues/1125 # Doesn't build with 9.0, see https://github.com/yi-editor/yi/issues/1125
yi-core = doDistribute (markUnbroken super.yi-core); yi-core = doDistribute (markUnbroken super.yi-core);

View file

@ -8,8 +8,12 @@ in
self: super: { self: super: {
# Should be llvmPackages_6 which has been removed from nixpkgs # Should be llvmPackages_6 which has been removed from nixpkgs,
llvmPackages = null; # create attribute set to prevent eval errors.
llvmPackages = {
llvm = null;
clang = null;
};
# Disable GHC 8.6.x core libraries. # Disable GHC 8.6.x core libraries.
array = null; array = null;
@ -43,7 +47,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -58,6 +62,9 @@ self: super: {
# their existence to callPackages, but their is no shim for lower GHC versions. # their existence to callPackages, but their is no shim for lower GHC versions.
system-cxx-std-lib = null; system-cxx-std-lib = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# Needs Cabal 3.0.x. # Needs Cabal 3.0.x.
jailbreak-cabal = super.jailbreak-cabal.overrideScope (cself: _: { Cabal = cself.Cabal_3_2_1_0; }); jailbreak-cabal = super.jailbreak-cabal.overrideScope (cself: _: { Cabal = cself.Cabal_3_2_1_0; });
@ -93,6 +100,9 @@ self: super: {
# ghc versions prior to 8.8.x needs additional dependency to compile successfully. # ghc versions prior to 8.8.x needs additional dependency to compile successfully.
ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser super.ghc-lib-parser-ex; ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser super.ghc-lib-parser-ex;
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# This became a core library in ghc 8.10., so we dont have an "exception" attribute anymore. # This became a core library in ghc 8.10., so we dont have an "exception" attribute anymore.
exceptions = self.exceptions_0_10_9; exceptions = self.exceptions_0_10_9;

View file

@ -45,7 +45,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -60,8 +60,24 @@ self: super: {
# their existence to callPackages, but their is no shim for lower GHC versions. # their existence to callPackages, but their is no shim for lower GHC versions.
system-cxx-std-lib = null; system-cxx-std-lib = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# Only required for ghc >= 9.2
nothunks = super.nothunks.override {
wherefrom-compat = null;
};
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# Jailbreaks & Version Updates # Jailbreaks & Version Updates
# tar > 0.6 requires os-string which can't be built with bytestring < 0.11
tar = doDistribute (doJailbreak self.tar_0_6_0_0);
# text-metrics >= 0.3.3 requires GHC2021
text-metrics = doDistribute self.text-metrics_0_3_2;
# For GHC < 9.4, some packages need data-array-byte as an extra dependency # For GHC < 9.4, some packages need data-array-byte as an extra dependency
primitive = addBuildDepends [ self.data-array-byte ] super.primitive; primitive = addBuildDepends [ self.data-array-byte ] super.primitive;
# For GHC < 9.2, os-string is not required. # For GHC < 9.2, os-string is not required.
@ -95,7 +111,7 @@ self: super: {
haskell-language-server = throw "haskell-language-server has dropped support for ghc 9.0 in version 2.4.0.0, please use a newer ghc version or an older nixpkgs version"; haskell-language-server = throw "haskell-language-server has dropped support for ghc 9.0 in version 2.4.0.0, please use a newer ghc version or an older nixpkgs version";
# Needs to use ghc-lib due to incompatible GHC # Needs to use ghc-lib due to incompatible GHC
ghc-tags = doDistribute (addBuildDepend self.ghc-lib self.ghc-tags_1_5); ghc-tags = doDistribute self.ghc-tags_1_5;
# ghc-lib >= 9.6 and friends no longer build with GHC 9.0 # ghc-lib >= 9.6 and friends no longer build with GHC 9.0
ghc-lib-parser = doDistribute self.ghc-lib-parser_9_2_8_20230729; ghc-lib-parser = doDistribute self.ghc-lib-parser_9_2_8_20230729;
@ -121,6 +137,9 @@ self: super: {
# https://github.com/lspitzner/butcher/issues/7 # https://github.com/lspitzner/butcher/issues/7
butcher = doJailbreak super.butcher; butcher = doJailbreak super.butcher;
# Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
aeson = dontCheck super.aeson;
# We use a GHC patch to support the fix for https://github.com/fpco/inline-c/issues/127 # We use a GHC patch to support the fix for https://github.com/fpco/inline-c/issues/127
# which means that the upstream cabal file isn't allowed to add the flag. # which means that the upstream cabal file isn't allowed to add the flag.
inline-c-cpp = inline-c-cpp =

View file

@ -51,7 +51,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -64,35 +64,14 @@ self: super: {
# Upgrade to accommodate new core library versions, where the authors have # Upgrade to accommodate new core library versions, where the authors have
# already made the relevant changes. # already made the relevant changes.
aeson = doDistribute self.aeson_2_2_3_0; # 2025-04-09: jailbreak to allow hedgehog >= 1.5, hspec-hedgehog >=0.2
attoparsec-aeson = doDistribute self.attoparsec-aeson_2_2_2_0; extensions = doJailbreak (doDistribute self.extensions_0_1_0_2);
auto-update = doDistribute self.auto-update_0_2_6; fourmolu = doDistribute self.fourmolu_0_16_0_0;
dependent-sum-template = doJailbreak self.dependent-sum-template_0_2_0_1; # template-haskell < 2.22 ghc-lib = doDistribute self.ghc-lib_9_10_1_20250103;
extensions = doDistribute self.extensions_0_1_0_2; ghc-lib-parser = doDistribute self.ghc-lib-parser_9_10_1_20250103;
fourmolu = doDistribute self.fourmolu_0_16_2_0;
hashable = doDistribute self.hashable_1_4_7_0;
integer-conversion = doDistribute self.integer-conversion_0_1_1;
ghc-lib = doDistribute self.ghc-lib_9_10_1_20241103;
ghc-lib-parser = doDistribute self.ghc-lib-parser_9_10_1_20241103;
ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_10_0_0; ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_10_0_0;
http2 = doDistribute self.http2_5_3_9;
http-semantics = doDistribute self.http-semantics_0_3_0;
htree = doDistribute self.htree_0_2_0_0; htree = doDistribute self.htree_0_2_0_0;
lens = doDistribute self.lens_5_3_2;
lukko = doDistribute self.lukko_0_1_2;
network-control = super.network-control_0_1_3;
network-run = super.network-run_0_4_0;
ormolu = doDistribute self.ormolu_0_7_7_0; ormolu = doDistribute self.ormolu_0_7_7_0;
primitive = doDistribute self.primitive_0_9_0_0;
quickcheck-instances = doDistribute self.quickcheck-instances_0_3_32;
rebase = doDistribute self.rebase_1_21_1;
rerebase = doDistribute self.rerebase_1_21_1;
scientific = doDistribute self.scientific_0_3_8_0;
semirings = doDistribute self.semirings_0_7;
time-manager = doDistribute self.time-manager_0_2_2;
th-abstraction = doDistribute self.th-abstraction_0_7_1_0;
uuid-types = doDistribute self.uuid-types_1_0_6;
warp = pkgs.haskell.lib.dontCheck super.warp_3_4_7; # test suite assumes it can freely call curl
# A given major version of ghc-exactprint only supports one version of GHC. # A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = doDistribute self.ghc-exactprint_1_9_0_0; ghc-exactprint = doDistribute self.ghc-exactprint_1_9_0_0;
@ -109,32 +88,34 @@ self: super: {
# Jailbreaks # Jailbreaks
# #
base64 = doJailbreak super.base64; # base <4.20 base64 = doJailbreak super.base64; # base <4.20
commutative-semigroups = doJailbreak super.commutative-semigroups; # base <4.20 # 2025-04-09: base <4.20, containers <0.7, filepath <1.5, Cabal-syntax <3.11
dejafu = doJailbreak super.dejafu; # containers <0.7 cabal-install-parsers =
assert super.cabal-install-parsers.version == "0.6.1.1";
doJailbreak super.cabal-install-parsers;
floskell = doJailbreak super.floskell; # base <4.20 floskell = doJailbreak super.floskell; # base <4.20
lucid = doJailbreak super.lucid; # base <4.20 # 2025-04-09: filepath <1.5
tar = doJailbreak super.tar; # base <4.20 haddock-library =
assert super.haddock-library.version == "1.11.0";
doJailbreak super.haddock-library;
spdx = doJailbreak super.spdx; # Cabal-syntax < 3.13
tasty-coverage = doJailbreak super.tasty-coverage; # base <4.20, filepath <1.5 tasty-coverage = doJailbreak super.tasty-coverage; # base <4.20, filepath <1.5
tree-diff = doJailbreak super.tree-diff; # base <4.20 tree-diff = doJailbreak super.tree-diff; # base <4.20
tree-sitter = doJailbreak super.tree-sitter; # containers <0.7, filepath <1.5
time-compat = doJailbreak super.time-compat; # base <4.20 time-compat = doJailbreak super.time-compat; # base <4.20
# https://github.com/haskell-party/feed/issues/73
feed = doJailbreak super.feed; # base
bitvec = doJailbreak super.bitvec; # primitive <0.9 bitvec = doJailbreak super.bitvec; # primitive <0.9
hashable_1_4_7_0 = doJailbreak super.hashable_1_4_7_0; # relax bounds for QuickCheck, tasty, and tasty-quickcheck
hashable_1_5_0_0 = doJailbreak super.hashable_1_5_0_0; # relax bounds for QuickCheck, tasty, and tasty-quickcheck hashable_1_5_0_0 = doJailbreak super.hashable_1_5_0_0; # relax bounds for QuickCheck, tasty, and tasty-quickcheck
broadcast-chan = doJailbreak super.broadcast-chan; # base <4.19 https://github.com/merijn/broadcast-chan/pull/19
# #
# Test suite issues # Test suite issues
# #
call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19 call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19
lifted-base = dontCheck super.lifted-base; # doesn't compile with transformers ==0.6.* fsnotify = dontCheck super.fsnotify; # https://github.com/haskell-fswatch/hfsnotify/issues/115
lukko_0_1_2 = dontCheck super.lukko_0_1_2; # doesn't compile with tasty ==1.4.*
resolv = dontCheck super.resolv; # doesn't compile with filepath ==1.5.*
primitive-unlifted = dontCheck super.primitive-unlifted; # doesn't compile with primitive ==0.9.*
bsb-http-chunked = pkgs.haskell.lib.dontCheck super.bsb-http-chunked; # https://github.com/sjakobi/bsb-http-chunked/issues/45
hinotify = pkgs.haskell.lib.dontCheck super.hinotify; # https://github.com/kolmodin/hinotify/issues/38 hinotify = pkgs.haskell.lib.dontCheck super.hinotify; # https://github.com/kolmodin/hinotify/issues/38
monad-dijkstra = dontCheck super.monad-dijkstra; # needs hlint 3.10
haskell-language-server = disableCabalFlag "retrie" ( haskell-language-server = disableCabalFlag "retrie" (
disableCabalFlag "hlint" ( disableCabalFlag "hlint" (

View file

@ -1,12 +1,29 @@
{ pkgs, haskellLib }: { pkgs, haskellLib }:
self: super:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
versionAtMost = a: b: lib.versionAtLeast b a;
warnVersion =
predicate: ver: pkg:
let
pname = pkg.pname;
in
lib.warnIf (predicate ver
super.${pname}.version
) "override for haskell.packages.ghc912.${pname} may no longer be needed" pkg;
warnAfterVersion = warnVersion lib.versionOlder;
warnFromVersion = warnVersion versionAtMost;
in in
with haskellLib; with haskellLib;
self: super: { {
llvmPackages = lib.dontRecurseIntoAttrs self.ghc.llvmPackages; llvmPackages = lib.dontRecurseIntoAttrs self.ghc.llvmPackages;
# Disable GHC core libraries # Disable GHC core libraries
@ -20,6 +37,7 @@ self: super: {
deepseq = null; deepseq = null;
directory = null; directory = null;
exceptions = null; exceptions = null;
file-io = null;
filepath = null; filepath = null;
ghc-bignum = null; ghc-bignum = null;
ghc-boot = null; ghc-boot = null;
@ -32,6 +50,8 @@ self: super: {
ghc-prim = null; ghc-prim = null;
ghc-toolchain = null; ghc-toolchain = null;
ghci = null; ghci = null;
haddock-api = null;
haddock-library = null;
haskeline = null; haskeline = null;
hpc = null; hpc = null;
integer-gmp = null; integer-gmp = null;
@ -50,29 +70,138 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
haskellLib.doDistribute self.terminfo_0_4_1_6; haskellLib.doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
unix = null; unix = null;
xhtml = null; xhtml = null;
# Version upgrades #
jailbreak-cabal = overrideCabal { # Hand pick versions that are compatible with ghc 9.12 and base 4.21
# Manually update jailbreak-cabal to 1.4.1 (which supports Cabal >= 3.14) #
# since Hackage bump containing it is tied up in the update to Stackage LTS 23.
version = "1.4.1";
sha256 = "0q6l608m965s6932xabm7v2kav5cxrihb5qcbrwz0c4xiwrz4l5x";
revision = null; extra = doDistribute self.extra_1_8;
editedCabalFile = null;
} super.jailbreak-cabal;
htree = doDistribute self.htree_0_2_0_0; htree = doDistribute self.htree_0_2_0_0;
primitive = doDistribute self.primitive_0_9_0_0;
splitmix = doDistribute self.splitmix_0_1_1;
tagged = doDistribute self.tagged_0_8_9; tagged = doDistribute self.tagged_0_8_9;
tar = doDistribute self.tar_0_6_3_0; time-compat = doDistribute self.time-compat_1_9_8;
extensions = doDistribute self.extensions_0_1_0_3;
doctest = doDistribute self.doctest_0_24_0;
ghc-syntax-highlighter = doDistribute self.ghc-syntax-highlighter_0_0_13_0;
ghc-lib = doDistribute self.ghc-lib_9_12_2_20250320;
ghc-exactprint = doDistribute self.ghc-exactprint_1_12_0_0;
ghc-lib-parser = doDistribute self.ghc-lib-parser_9_12_2_20250320;
ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_12_0_0;
hlint = doDistribute self.hlint_3_10;
fourmolu = doDistribute self.fourmolu_0_18_0_0;
ormolu = doDistribute self.ormolu_0_8_0_0;
apply-refact = doDistribute self.apply-refact_0_15_0_0;
#
# Jailbreaks
#
lucid = doJailbreak super.lucid; # base <4.21
extensions_0_1_0_3 = doJailbreak super.extensions_0_1_0_3; # hedgehog >=1.0 && <1.5, hspec-hedgehog >=0.0.1 && <0.2
hie-compat = doJailbreak super.hie-compat; # base <4.21
hiedb = doJailbreak super.hiedb; # base >=4.12 && <4.21, ghc >=8.6 && <9.11
ed25519 = doJailbreak super.ed25519; # https://github.com/thoughtpolice/hs-ed25519/issues/39
ghc-trace-events = doJailbreak super.ghc-trace-events; # base <4.21
time-compat_1_9_8 = doJailbreak super.time-compat_1_9_8; # too strict lower bound on QuickCheck
cpphs = overrideCabal (drv: {
# jail break manually the conditional dependencies
postPatch = ''
sed -i 's/time >=1.5 \&\& <1.13/time >=1.5 \&\& <=1.14/g' cpphs.cabal
'';
}) super.cpphs;
vector = doJailbreak super.vector; # doctest >=0.15 && <0.24
binary-instances = doJailbreak super.binary-instances; # base >=4.6.0.1 && <4.21, tagged >=0.8.8 && <0.8.9
cabal-install-parsers = doJailbreak super.cabal-install-parsers; # base, Cabal-syntax, etc.
http-api-data = doJailbreak super.http-api-data; # base < 4.21
servant = doJailbreak super.servant; # base < 4.21
ghc-exactprint_1_12_0_0 = addBuildDepends [
# somehow buildDepends was missing
self.Diff
self.extra
self.ghc-paths
self.silently
self.syb
self.HUnit
] super.ghc-exactprint_1_12_0_0;
co-log-core = doJailbreak super.co-log-core; # doctest >=0.16.0 && <0.24
#
# Test suite issues # Test suite issues
#
call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19 call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19
relude = dontCheck super.relude;
doctest_0_24_0 = overrideCabal (drv: {
testFlags = drv.testFlags or [ ] ++ [
# These tests require cabal-install (would cause infinite recursion)
"--skip=/Cabal.Options"
"--skip=/Cabal.Paths/paths"
"--skip=/Cabal.ReplOptions" # >= 0.23
];
}) super.doctest_0_24_0;
# https://github.com/typeable/generic-arbitrary/issues/18
generic-arbitrary = overrideCabal (drv: {
patches = drv.patches or [ ] ++ [
(pkgs.fetchpatch {
name = "hellwolf:fix-recursive-test-hidding-unit";
url = "https://github.com/typeable/generic-arbitrary/commit/133b80be93e6744f21e0e5ed4180a24c589f92e4.patch";
sha256 = "sha256-z9EVcD1uNAYUOVTwmCCnrEFFOvFB7lD94Y6BwGVwVRQ=";
})
];
}) super.generic-arbitrary;
# https://gitlab.haskell.org/ghc/ghc/-/issues/25930
generic-lens = dontCheck super.generic-lens;
# Cabal 3.14 regression (incorrect datadir in tests): https://github.com/haskell/cabal/issues/10717
alex = overrideCabal (drv: {
preCheck =
drv.preCheck or ""
+ ''
export alex_datadir="$(pwd)/data"
'';
}) super.alex;
# https://github.com/sjakobi/newtype-generics/pull/28/files
newtype-generics = warnAfterVersion "0.6.2" (doJailbreak super.newtype-generics);
#
# Multiple issues
#
fourmolu_0_18_0_0 = dontCheck (
super.fourmolu_0_18_0_0.override {
# Diff >=1 && <2
Diff = super.Diff_1_0_2;
}
);
doctest-parallel = overrideCabal (drv: {
patches = drv.patches or [ ] ++ [
(pkgs.fetchpatch {
name = "doctest-0.23.0-ghc-9.12.patch";
url = "https://github.com/martijnbastiaan/doctest-parallel/commit/d3df7aa5d223f3daeb676c8a7efe093ee743d54f.patch";
sha256 = "sha256-92CtqBCulfOTjLAeC205cIrqL/2CBP1YFLijTVcTD2M=";
includes = [ "src/Test/DocTest/Helpers.hs" ];
})
];
}) (dontCheck (doJailbreak super.doctest-parallel)); # Cabal >=2.4 && <3.13
haskell-language-server = disableCabalFlag "retrie" (
disableCabalFlag "stylishhaskel" (
super.haskell-language-server.override {
stylish-haskell = null;
floskell = null;
retrie = null;
}
)
);
} }

View file

@ -52,7 +52,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
haskellLib.doDistribute self.terminfo_0_4_1_6; haskellLib.doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;

View file

@ -45,7 +45,7 @@ self: super: {
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -60,6 +60,9 @@ self: super: {
# their existence to callPackages, but their is no shim for lower GHC versions. # their existence to callPackages, but their is no shim for lower GHC versions.
system-cxx-std-lib = null; system-cxx-std-lib = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# weeder >= 2.5 requires GHC 9.4 # weeder >= 2.5 requires GHC 9.4
weeder = doDistribute self.weeder_2_4_1; weeder = doDistribute self.weeder_2_4_1;
# Allow dhall 1.42.* # Allow dhall 1.42.*
@ -71,20 +74,7 @@ self: super: {
} }
); );
haskell-language-server = lib.pipe super.haskell-language-server [ haskell-language-server = throw "haskell-language-server has dropped support for ghc 9.2 in version 2.10.0.0, please use a newer ghc version or an older nixpkgs version";
(disableCabalFlag "fourmolu")
(disableCabalFlag "ormolu")
(disableCabalFlag "cabal")
(disableCabalFlag "stylishHaskell")
(
d:
d.override {
ormolu = null;
fourmolu = null;
stan = null;
}
)
];
# For GHC < 9.4, some packages need data-array-byte as an extra dependency # For GHC < 9.4, some packages need data-array-byte as an extra dependency
hashable = addBuildDepends [ self.data-array-byte ] super.hashable; hashable = addBuildDepends [ self.data-array-byte ] super.hashable;
@ -93,6 +83,9 @@ self: super: {
# Too strict lower bound on base # Too strict lower bound on base
primitive-addr = doJailbreak super.primitive-addr; primitive-addr = doJailbreak super.primitive-addr;
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# Jailbreaks & Version Updates # Jailbreaks & Version Updates
hashable-time = doJailbreak super.hashable-time; hashable-time = doJailbreak super.hashable-time;
@ -101,17 +94,30 @@ self: super: {
# https://mail.haskell.org/pipermail/haskell-cafe/2022-October/135613.html # https://mail.haskell.org/pipermail/haskell-cafe/2022-October/135613.html
language-javascript_0_7_0_0 = dontCheck super.language-javascript_0_7_0_0; language-javascript_0_7_0_0 = dontCheck super.language-javascript_0_7_0_0;
# Needs to match ghc version # Needs to match ghc-lib version
ghc-tags = doDistribute self.ghc-tags_1_5; ghc-tags = doDistribute (doJailbreak self.ghc-tags_1_7);
# For "ghc-lib" flag see https://github.com/haskell/haskell-language-server/issues/3185#issuecomment-1250264515 # Needs to match ghc-lib
hlint = enableCabalFlag "ghc-lib" super.hlint; hlint = doDistribute self.hlint_3_6_1;
# ghc-lib >= 9.8 and friends no longer build with GHC 9.2 since they require semaphore-compat
ghc-lib-parser = doDistribute (
self.ghc-lib-parser_9_6_7_20250325.override {
happy = self.happy_1_20_1_1; # wants happy < 1.21
}
);
ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_6_0_2;
ghc-lib = doDistribute (
self.ghc-lib_9_6_7_20250325.override {
happy = self.happy_1_20_1_1; # wants happy < 1.21
}
);
# 0.2.2.3 requires Cabal >= 3.8 # 0.2.2.3 requires Cabal >= 3.8
shake-cabal = doDistribute self.shake-cabal_0_2_2_2; shake-cabal = doDistribute self.shake-cabal_0_2_2_2;
# https://github.com/sjakobi/bsb-http-chunked/issues/38 # Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
bsb-http-chunked = dontCheck super.bsb-http-chunked; aeson = dontCheck super.aeson;
# https://github.com/NixOS/cabal2nix/issues/554 # https://github.com/NixOS/cabal2nix/issues/554
# https://github.com/clash-lang/clash-compiler/blob/f0f6275e19b8c672f042026c478484c5fd45191d/README.md#ghc-compatibility # https://github.com/clash-lang/clash-compiler/blob/f0f6275e19b8c672f042026c478484c5fd45191d/README.md#ghc-compatibility
@ -129,6 +135,9 @@ self: super: {
# A given major version of ghc-exactprint only supports one version of GHC. # A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = super.ghc-exactprint_1_5_0; ghc-exactprint = super.ghc-exactprint_1_5_0;
# only broken for >= 9.6
calligraphy = doDistribute (unmarkBroken super.calligraphy);
# Packages which need compat library for GHC < 9.6 # Packages which need compat library for GHC < 9.6
inherit (lib.mapAttrs (_: addBuildDepends [ self.foldable1-classes-compat ]) super) inherit (lib.mapAttrs (_: addBuildDepends [ self.foldable1-classes-compat ]) super)
indexed-traversable indexed-traversable

View file

@ -54,7 +54,7 @@ in
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -63,6 +63,12 @@ in
# still the case when updating: https://gitlab.haskell.org/ghc/ghc/-/blob/0198841877f6f04269d6050892b98b5c3807ce4c/ghc.mk#L463 # still the case when updating: https://gitlab.haskell.org/ghc/ghc/-/blob/0198841877f6f04269d6050892b98b5c3807ce4c/ghc.mk#L463
xhtml = if self.ghc.hasHaddock or true then null else doDistribute self.xhtml_3000_4_0_0; xhtml = if self.ghc.hasHaddock or true then null else doDistribute self.xhtml_3000_4_0_0;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# only broken for >= 9.6
calligraphy = doDistribute (unmarkBroken super.calligraphy);
# Jailbreaks & Version Updates # Jailbreaks & Version Updates
hashable-time = doJailbreak super.hashable-time; hashable-time = doJailbreak super.hashable-time;
@ -74,6 +80,9 @@ in
self.base-orphans self.base-orphans
] super.generically; ] super.generically;
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# the dontHaddock is due to a GHC panic. might be this bug, not sure. # the dontHaddock is due to a GHC panic. might be this bug, not sure.
# https://gitlab.haskell.org/ghc/ghc/-/issues/21619 # https://gitlab.haskell.org/ghc/ghc/-/issues/21619
hedgehog = dontHaddock super.hedgehog; hedgehog = dontHaddock super.hedgehog;
@ -86,16 +95,26 @@ in
] ++ drv.testFlags or [ ]; ] ++ drv.testFlags or [ ];
}) (doJailbreak super.hpack); }) (doJailbreak super.hpack);
# https://github.com/sjakobi/bsb-http-chunked/issues/38
bsb-http-chunked = dontCheck super.bsb-http-chunked;
# 2022-08-01: Tests are broken on ghc 9.2.4: https://github.com/wz1000/HieDb/issues/46 # 2022-08-01: Tests are broken on ghc 9.2.4: https://github.com/wz1000/HieDb/issues/46
hiedb = dontCheck super.hiedb; hiedb = dontCheck super.hiedb;
# 2022-10-06: https://gitlab.haskell.org/ghc/ghc/-/issues/22260 # 2022-10-06: https://gitlab.haskell.org/ghc/ghc/-/issues/22260
ghc-check = dontHaddock super.ghc-check; ghc-check = dontHaddock super.ghc-check;
ghc-tags = self.ghc-tags_1_6; ghc-tags = doDistribute (doJailbreak self.ghc-tags_1_7); # aeson < 2.2
# ghc-lib >= 9.8 and friends no longer build with GHC 9.4 since they require semaphore-compat
ghc-lib-parser = doDistribute (
self.ghc-lib-parser_9_6_7_20250325.override {
happy = self.happy_1_20_1_1; # wants happy < 1.21
}
);
ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_6_0_2;
ghc-lib = doDistribute (
self.ghc-lib_9_6_7_20250325.override {
happy = self.happy_1_20_1_1; # wants happy < 1.21
}
);
# A given major version of ghc-exactprint only supports one version of GHC. # A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = super.ghc-exactprint_1_6_1_3; ghc-exactprint = super.ghc-exactprint_1_6_1_3;
@ -112,14 +131,15 @@ in
let let
hls_overlay = lself: lsuper: { hls_overlay = lself: lsuper: {
Cabal-syntax = lself.Cabal-syntax_3_10_3_0; Cabal-syntax = lself.Cabal-syntax_3_10_3_0;
Cabal = lself.Cabal_3_10_3_0;
}; };
in in
lib.mapAttrs (_: pkg: doDistribute (pkg.overrideScope hls_overlay)) { lib.mapAttrs (_: pkg: doDistribute (pkg.overrideScope hls_overlay)) {
haskell-language-server = allowInconsistentDependencies super.haskell-language-server; haskell-language-server = allowInconsistentDependencies super.haskell-language-server;
fourmolu = super.fourmolu; fourmolu = doJailbreak self.fourmolu_0_14_0_0; # ansi-terminal, Diff
ormolu = super.ormolu; ormolu = doJailbreak self.ormolu_0_7_2_0; # ansi-terminal
hlint = super.hlint; hlint = self.hlint_3_6_1;
stylish-haskell = super.stylish-haskell; stylish-haskell = self.stylish-haskell_0_14_5_0;
} }
) )
haskell-language-server haskell-language-server
@ -140,6 +160,9 @@ in
self.OneTuple self.OneTuple
] super.base-compat-batteries; ] super.base-compat-batteries;
# Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
aeson = dontCheck super.aeson;
# Too strict lower bound on base # Too strict lower bound on base
primitive-addr = doJailbreak super.primitive-addr; primitive-addr = doJailbreak super.primitive-addr;
} }

View file

@ -62,13 +62,19 @@ self: super:
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
unix = null; unix = null;
xhtml = null; xhtml = null;
# Becomes a core package in GHC >= 9.8
semaphore-compat = doDistribute self.semaphore-compat_1_0_0;
# Needs base-orphans for GHC < 9.8 / base < 4.19
some = addBuildDepend self.base-orphans super.some;
# #
# Version deviations from Stackage LTS # Version deviations from Stackage LTS
# #
@ -78,7 +84,8 @@ self: super:
th-extras = doJailbreak super.th-extras; th-extras = doJailbreak super.th-extras;
# not in Stackage, needs to match ghc-lib # not in Stackage, needs to match ghc-lib
ghc-tags = doDistribute self.ghc-tags_1_7; # since expression is generated for 9.8, ghc-lib dep needs to be added manually
ghc-tags = doDistribute (addBuildDepends [ self.ghc-lib ] self.ghc-tags_1_8);
# #
# Too strict bounds without upstream fix # Too strict bounds without upstream fix
@ -100,8 +107,6 @@ self: super:
# Jailbreaks for servant <0.20 # Jailbreaks for servant <0.20
servant-lucid = doJailbreak super.servant-lucid; servant-lucid = doJailbreak super.servant-lucid;
lifted-base = dontCheck super.lifted-base;
hw-prim = dontCheck (doJailbreak super.hw-prim);
stm-containers = dontCheck super.stm-containers; stm-containers = dontCheck super.stm-containers;
regex-tdfa = dontCheck super.regex-tdfa; regex-tdfa = dontCheck super.regex-tdfa;
hiedb = dontCheck super.hiedb; hiedb = dontCheck super.hiedb;
@ -124,9 +129,6 @@ self: super:
# A factor of 100 is insufficient, 200 seems seems to work. # A factor of 100 is insufficient, 200 seems seems to work.
hip = appendConfigureFlag "--ghc-options=-fsimpl-tick-factor=200" super.hip; hip = appendConfigureFlag "--ghc-options=-fsimpl-tick-factor=200" super.hip;
# Doctest comments have bogus imports.
bsb-http-chunked = dontCheck super.bsb-http-chunked;
# This can be removed once https://github.com/typeclasses/ascii-predicates/pull/1 # This can be removed once https://github.com/typeclasses/ascii-predicates/pull/1
# is merged and in a release that's being tracked. # is merged and in a release that's being tracked.
ascii-predicates = appendPatch (pkgs.fetchpatch { ascii-predicates = appendPatch (pkgs.fetchpatch {
@ -145,6 +147,9 @@ self: super:
sha256 = "sha256-buw1UeW57CFefEfqdDUraSyQ+H/NvCZOv6WF2ORiYQg="; sha256 = "sha256-buw1UeW57CFefEfqdDUraSyQ+H/NvCZOv6WF2ORiYQg=";
}) super.ascii-numbers; }) super.ascii-numbers;
# Tests require nothunks < 0.3 (conflicting with Stackage) for GHC < 9.8
aeson = dontCheck super.aeson;
# Apply patch from PR with mtl-2.3 fix. # Apply patch from PR with mtl-2.3 fix.
ConfigFile = overrideCabal (drv: { ConfigFile = overrideCabal (drv: {
editedCabalFile = null; editedCabalFile = null;
@ -159,6 +164,9 @@ self: super:
]; ];
}) super.ConfigFile; }) super.ConfigFile;
# https://github.com/NixOS/nixpkgs/pull/367998#issuecomment-2598941240
libtorch-ffi-helper = unmarkBroken (doDistribute super.libtorch-ffi-helper);
# Compatibility with core libs of GHC 9.6 # Compatibility with core libs of GHC 9.6
# Jailbreak to lift bound on time # Jailbreak to lift bound on time
kqueue = doJailbreak ( kqueue = doJailbreak (
@ -187,6 +195,9 @@ self: super:
; ;
singletons-base = dontCheck super.singletons-base; singletons-base = dontCheck super.singletons-base;
# A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = addBuildDepend self.extra super.ghc-exactprint_1_7_1_0;
} }
# super.ghc is required to break infinite recursion as Nix is strict in the attrNames # super.ghc is required to break infinite recursion as Nix is strict in the attrNames
// //

View file

@ -41,6 +41,7 @@ self: super:
process = null; process = null;
rts = null; rts = null;
stm = null; stm = null;
semaphore-compat = null;
system-cxx-std-lib = null; system-cxx-std-lib = null;
template-haskell = null; template-haskell = null;
# GHC only builds terminfo if it is a native compiler # GHC only builds terminfo if it is a native compiler
@ -48,7 +49,7 @@ self: super:
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null null
else else
doDistribute self.terminfo_0_4_1_6; doDistribute self.terminfo_0_4_1_7;
text = null; text = null;
time = null; time = null;
transformers = null; transformers = null;
@ -58,79 +59,25 @@ self: super:
# #
# Version upgrades # Version upgrades
# #
th-abstraction = doDistribute self.th-abstraction_0_7_1_0;
ghc-lib-parser = doDistribute self.ghc-lib-parser_9_8_4_20241130;
ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_8_0_2;
ghc-lib = doDistribute self.ghc-lib_9_8_4_20241130;
megaparsec = doDistribute self.megaparsec_9_7_0; megaparsec = doDistribute self.megaparsec_9_7_0;
# aeson 2.2.3.0 seemingly unnecessesarily bumped the lower bound on hashable
# https://github.com/haskell/aeson/commit/1a666febd0775d8e88d315ece1b97cd20602fb5f
aeson = doJailbreak (doDistribute self.aeson_2_2_3_0);
attoparsec-aeson = doDistribute self.attoparsec-aeson_2_2_2_0;
dependent-sum-template = self.dependent-sum-template_0_2_0_1; # template-haskell < 2.22
xmonad = doDistribute self.xmonad_0_18_0;
apply-refact = self.apply-refact_0_14_0_0;
ormolu = self.ormolu_0_7_4_0;
fourmolu = self.fourmolu_0_15_0_0;
stylish-haskell = self.stylish-haskell_0_14_6_0;
hlint = self.hlint_3_8;
ghc-syntax-highlighter = self.ghc-syntax-highlighter_0_0_12_0;
websockets = self.websockets_0_13_0_0;
th-desugar = doJailbreak self.th-desugar_1_16; # th-abstraction >=0.6 && <0.7
singletons-th = self.singletons-th_3_3;
singletons-base = self.singletons-base_3_3;
ghc-tags = self.ghc-tags_1_8; ghc-tags = self.ghc-tags_1_8;
# A given major version of ghc-exactprint only supports one version of GHC.
ghc-exactprint = self.ghc-exactprint_1_8_0_0;
ghc-exactprint_1_8_0_0 = addBuildDepends [
self.Diff
self.HUnit
self.data-default
self.extra
self.free
self.ghc-paths
self.ordered-containers
self.silently
self.syb
] super.ghc-exactprint_1_8_0_0;
# #
# Jailbreaks # Jailbreaks
# #
blaze-svg = doJailbreak super.blaze-svg; # base <4.19
commutative-semigroups = doJailbreak super.commutative-semigroups; # base < 4.19
diagrams-lib = doJailbreak super.diagrams-lib; # base <4.19, text <2.1
diagrams-postscript = doJailbreak super.diagrams-postscript; # base <4.19, bytestring <0.12
diagrams-svg = doJailbreak super.diagrams-svg; # base <4.19, text <2.1
generics-sop = doJailbreak super.generics-sop_0_5_1_4; # th-abstraction >=0.6 && <0.7
ghc-trace-events = doJailbreak super.ghc-trace-events; # text < 2.1, bytestring < 0.12, base < 4.19
hashing = doJailbreak super.hashing; # bytestring <0.12 hashing = doJailbreak super.hashing; # bytestring <0.12
json-sop = doJailbreak super.json-sop; # aeson <2.2, base <4.19, text <2.1 hevm = appendPatch (pkgs.fetchpatch {
primitive-unlifted = doJailbreak super.primitive-unlifted; # bytestring < 0.12 url = "https://github.com/hellwolf/hevm/commit/338674d1fe22d46ea1e8582b24c224d76d47d0f3.patch";
statestack = doJailbreak super.statestack; # base < 4.19 name = "release-0.54.2-ghc-9.8.4-patch";
newtype-generics = doJailbreak super.newtype-generics; # base < 4.19 sha256 = "sha256-Mo65FfP1nh7QTY+oLia22hj4eV2v9hpXlYsrFKljA3E=";
hw-prim = doJailbreak super.hw-prim; # doctest < 0.22, ghc-prim < 0.11, hedgehog < 1.4 }) super.hevm;
svg-builder = doJailbreak super.svg-builder; # base <4.19, bytestring <0.12, text <2.1
# Too strict bound on base, believe it or not.
# https://github.com/judah/terminfo/pull/55#issuecomment-1876894232
terminfo_0_4_1_6 = doJailbreak super.terminfo_0_4_1_6;
HaskellNet-SSL = doJailbreak super.HaskellNet-SSL; # bytestring >=0.9 && <0.12 HaskellNet-SSL = doJailbreak super.HaskellNet-SSL; # bytestring >=0.9 && <0.12
raven-haskell = doJailbreak super.raven-haskell; # aeson <2.2
saltine = doJailbreak super.saltine; # bytestring && <0.12, deepseq <1.5, text > 1.2 && <1.3 || >=2.0 && <2.1 saltine = doJailbreak super.saltine; # bytestring && <0.12, deepseq <1.5, text > 1.2 && <1.3 || >=2.0 && <2.1
stripe-concepts = doJailbreak super.stripe-concepts; # text >=1.2.5 && <1.3 || >=2.0 && <2.1
stripe-signature = doJailbreak super.stripe-signature; # text >=1.2.5 && <1.3 || >=2.0 && <2.1
string-random = doJailbreak super.string-random; # text >=1.2.2.1 && <2.1
inflections = doJailbreak super.inflections; # text >=0.2 && <2.1 inflections = doJailbreak super.inflections; # text >=0.2 && <2.1
universe-some = doJailbreak super.universe-some; # th-abstraction < 0.7
broadcast-chan = doJailbreak super.broadcast-chan; # base <4.19 https://github.com/merijn/broadcast-chan/pull/19
# #
# Test suite issues # Test suite issues
# #
unordered-containers = dontCheck super.unordered-containers; # ChasingBottoms doesn't support base 4.20
lifted-base = dontCheck super.lifted-base; # doesn't compile with transformers == 0.6.*
bsb-http-chunked = dontCheck super.bsb-http-chunked; # umaintained, test suite doesn't compile anymore
pcre-heavy = dontCheck super.pcre-heavy; # GHC warnings cause the tests to fail pcre-heavy = dontCheck super.pcre-heavy; # GHC warnings cause the tests to fail
# #
@ -140,6 +87,17 @@ self: super:
# 2023-12-23: It needs this to build under ghc-9.6.3. # 2023-12-23: It needs this to build under ghc-9.6.3.
# A factor of 100 is insufficient, 200 seems seems to work. # A factor of 100 is insufficient, 200 seems seems to work.
hip = appendConfigureFlag "--ghc-options=-fsimpl-tick-factor=200" super.hip; hip = appendConfigureFlag "--ghc-options=-fsimpl-tick-factor=200" super.hip;
# 2025-04-21: "flavor" for GHC 9.8.5 is missing a fix introduced for 9.8.4. See:
# https://github.com/digital-asset/ghc-lib/pull/571#discussion_r2052684630
ghc-lib-parser =
assert super.ghc-lib-parser.version == "9.8.5.20250214";
overrideCabal {
postPatch = ''
substituteInPlace compiler/cbits/genSym.c \
--replace-fail "HsWord64 u = atomic_inc64" "HsWord64 u = atomic_inc"
'';
} super.ghc-lib-parser;
} }
// lib.optionalAttrs (lib.versionAtLeast super.ghc.version "9.8.3") { // lib.optionalAttrs (lib.versionAtLeast super.ghc.version "9.8.3") {
# Breakage related to GHC 9.8.3 / deepseq 1.5.1.0 # Breakage related to GHC 9.8.3 / deepseq 1.5.1.0

View file

@ -1,5 +1,9 @@
{ pkgs, haskellLib }: { pkgs, haskellLib }:
let
inherit (pkgs) lib;
in
with haskellLib; with haskellLib;
# cabal2nix doesn't properly add dependencies conditional on arch(javascript) # cabal2nix doesn't properly add dependencies conditional on arch(javascript)
@ -20,17 +24,41 @@ with haskellLib;
ghcjs-dom-javascript = addBuildDepend self.ghcjs-base super.ghcjs-dom-javascript; ghcjs-dom-javascript = addBuildDepend self.ghcjs-base super.ghcjs-dom-javascript;
jsaddle = addBuildDepend self.ghcjs-base super.jsaddle; jsaddle = addBuildDepend self.ghcjs-base super.jsaddle;
jsaddle-dom = addBuildDepend self.ghcjs-base super.jsaddle-dom; jsaddle-dom = addBuildDepend self.ghcjs-base super.jsaddle-dom;
jsaddle-warp = overrideCabal (drv: {
libraryHaskellDepends = [ ];
testHaskellDepends = [ ];
}) super.jsaddle-warp;
entropy = addBuildDepend self.ghcjs-dom super.entropy; entropy = addBuildDepend self.ghcjs-dom super.entropy;
reflex-dom = super.reflex-dom.override (drv: { # https://gitlab.haskell.org/ghc/ghc/-/issues/25083#note_578275
jsaddle-webkit2gtk = null; patch = haskellLib.disableParallelBuilding super.patch;
}); reflex-dom-core = haskellLib.disableParallelBuilding super.reflex-dom-core;
patch = pkgs.lib.pipe super.patch (
with haskellLib; reflex-dom =
[ lib.warn "reflex-dom builds with JS backend but it is missing fixes for working at runtime"
disableParallelBuilding # https://gitlab.haskell.org/ghc/ghc/-/issues/25083#note_578275 super.reflex-dom.override
doJailbreak (drv: {
] jsaddle-webkit2gtk = null;
); });
miso-examples = pkgs.lib.pipe super.miso-examples [
(addBuildDepends (
with self;
[
aeson
ghcjs-base
jsaddle-warp
miso
servant
]
))
];
# https://github.com/haskellari/splitmix/pull/75
splitmix = appendPatch (pkgs.fetchpatch {
url = "https://github.com/haskellari/splitmix/commit/7ffb3158f577c48ab5de774abea47767921ef3e9.patch";
sha256 = "sha256-n2q4FGf/pPcI1bhb9srHjHLzaNVehkdN6kQgL0F4MMg=";
}) super.splitmix;
}) })

View file

@ -24,106 +24,108 @@
# tracked in stackage.yaml. Adding conflicting overrides with stackage here will # tracked in stackage.yaml. Adding conflicting overrides with stackage here will
# not work. # not work.
default-package-overrides: default-package-overrides:
# gi-gdkx11-4.x requires gtk-4.x, but stackage still restricts gi-gtk to 3.*
- gi-gdkx11 < 4
# 2021-11-09: ghc-bignum is bundled starting with 9.0.1; only 1.0 builds with GHCs prior to 9.2.1 # 2021-11-09: ghc-bignum is bundled starting with 9.0.1; only 1.0 builds with GHCs prior to 9.2.1
- ghc-bignum == 1.0 - ghc-bignum == 1.0
- extensions < 0.1.0.2 # Incompatible with Cabal < 3.12, the newest extensions version is only needed on ghc 9.10 - extensions < 0.1.0.2 # Incompatible with Cabal < 3.12, the newest extensions version is only needed on ghc 9.10
# 2024-05-10: need to match hlegder from stackage
- hledger-ui < 1.33
- chs-cabal < 0.1.1.2 # Incompatible with Cabal < 3.12 - chs-cabal < 0.1.1.2 # Incompatible with Cabal < 3.12
# 2024-08-17: Stackage doesn't contain hnix-store-core >= 0.8 yet, so we need to restrict hnix-store-remote # 2024-08-17: Stackage doesn't contain hnix-store-core >= 0.8 yet, so we need to restrict hnix-store-remote
- hnix-store-remote < 0.7 - hnix-store-remote < 0.7
# 2024-09-12: match xmonad 0.17.* from Stackage LTS
- xmonad-contrib < 0.18.1
# 2024-11-01: no release version of http2/3 supports http-semantics >= 0.3.0 at the moment
- http-semantics < 0.3.0
# 2024-12-23: last version to be compatible with Stackage LTS 22/23 (due to data-default) # 2024-12-23: last version to be compatible with Stackage LTS 22/23 (due to data-default)
- diagrams-input < 0.1.4 - diagrams-input < 0.1.4
# 2024-12-31: last version that's compatible with GHC < 9.9 # 2024-12-31: last version that's compatible with GHC < 9.9
- htree < 0.2.0.0 - htree < 0.2.0.0
# 2025-01-17: need to match stackage version of hosc
- hsc3 < 0.21
extra-packages: extra-packages:
- Cabal == 3.2.* # Used for packages needing newer Cabal on ghc 8.6 and 8.8 - Cabal == 3.2.* # Used for packages needing newer Cabal on ghc 8.6 and 8.8
- Cabal-syntax == 3.6.* # Dummy package that ensures packages depending on Cabal-syntax can work for Cabal < 3.8
- Cabal-syntax == 3.8.* # version required for ormolu and fourmolu on ghc 9.2 and 9.0
- Cabal-syntax == 3.10.*
- Cabal == 3.10.* - Cabal == 3.10.*
- Cabal == 3.12.* # version required for cabal-install and other packages - Cabal == 3.12.* # version required for cabal-install and other packages
- Cabal-syntax == 3.6.* # Dummy package that ensures packages depending on Cabal-syntax can work for Cabal < 3.8
- Cabal-syntax == 3.8.* # version required for ormolu and fourmolu on ghc 9.0
- Cabal-syntax == 3.10.*
- Cabal-syntax == 3.12.* # version required for cabal-install and other packages - Cabal-syntax == 3.12.* # version required for cabal-install and other packages
- ShellCheck == 0.9.0 # 2024-03-21: pinned by haskell-ci
- aeson < 2 # required by pantry-0.5.2 - aeson < 2 # required by pantry-0.5.2
- algebraic-graphs < 0.7 # 2023-08-14: Needed for building weeder < 2.6.0
- ansi-terminal < 1.1 # 2025-02-27: required for ghcjs
- ansi-terminal-types == 0.11.5 # 2025-02-27: required for ghcjs
- ansi-wl-pprint >= 0.6 && < 0.7 # 2024-03-23: required for ghcjs
- apply-refact == 0.9.* # 2022-12-12: needed for GHC < 9.2 - apply-refact == 0.9.* # 2022-12-12: needed for GHC < 9.2
- apply-refact == 0.11.* # 2023-02-02: needed for hls-hlint-plugin on GHC 9.2
- attoparsec == 0.13.* # 2022-02-23: Needed to compile elm for now - attoparsec == 0.13.* # 2022-02-23: Needed to compile elm for now
- commonmark-pandoc < 0.2.3 # 2025-04-06: Needed for pandoc 3.6
- extensions == 0.1.0.2 # 2024-10-20: for GHC 9.10/Cabal 3.12
- fourmolu == 0.14.0.0 # 2023-11-13: for ghc-lib-parser 9.6 compat
- fourmolu == 0.16.0.0 # 2025-01-27: for ghc 9.10 compat
- fsnotify < 0.4 # 2024-04-22: required by spago-0.21
- fuzzyset == 0.2.4 # 2023-12-20: Needed for building postgrest > 10
- ghc-api-compat == 8.10.7 # 2022-02-17: preserve for GHC 8.10.7 - ghc-api-compat == 8.10.7 # 2022-02-17: preserve for GHC 8.10.7
- ghc-exactprint == 0.6.* # 2022-12-12: needed for GHC < 9.2 - ghc-exactprint == 0.6.* # 2022-12-12: needed for GHC < 9.2
- ghc-exactprint == 1.5.* # 2023-03-30: needed for GHC == 9.2 - ghc-exactprint == 1.5.* # 2023-03-30: needed for GHC == 9.2
- ghc-exactprint == 1.6.* # 2023-03-30: needed for GHC == 9.4 - ghc-exactprint == 1.6.* # 2023-03-30: needed for GHC == 9.4
- ghc-exactprint == 1.7.* # 2025-03-09: needed for GHC == 9.6
- ghc-exactprint == 1.8.* # 2024-05-20: needed for GHC == 9.8 - ghc-exactprint == 1.8.* # 2024-05-20: needed for GHC == 9.8
- ghc-exactprint == 1.9.* # 2024-08-27: needed for GHC == 9.10 - ghc-exactprint == 1.9.* # 2024-08-27: needed for GHC == 9.10
- ghc-lib == 9.2.* # 2022-02-17: preserve for GHC 8.10, 9.0 - ghc-lib == 9.2.* # 2022-02-17: preserve for GHC 8.10, 9.0
- ghc-lib == 9.8.* # 2024-05-19: preserve for GHC 9.8 - ghc-lib == 9.6.* # 2022-02-17: preserve for GHC 9.2, 9.4
- ghc-lib-parser == 9.2.* # 2022-02-17: preserve for GHC 8.10, 9.0
- ghc-lib-parser == 9.8.* # 2024-05-19: preserve for GHC 9.8
- ghc-lib == 9.10.* # 2024-12-30: preserve for GHC 9.10/ghc-tags 1.9 - ghc-lib == 9.10.* # 2024-12-30: preserve for GHC 9.10/ghc-tags 1.9
- ghc-lib-parser == 9.10.* # 2024-12-26: preserve for ghc-syntax-highlighter == 0.0.12.0 - ghc-lib-parser == 9.2.* # 2022-02-17: preserve for GHC 8.10, 9.0
- ghc-lib-parser-ex == 9.10.* # 2024-12-26: preserve for 9.10 HLS - ghc-lib-parser == 9.6.* # 2024-05-19: preserve for GHC 9.2, 9.4
- ghc-lib-parser == 9.10.* # 2024-12-26: preserve for GHC 9.10
- ghc-lib-parser-ex == 9.2.* # 2022-07-13: preserve for GHC 8.10, 9.0 - ghc-lib-parser-ex == 9.2.* # 2022-07-13: preserve for GHC 8.10, 9.0
- ghc-lib-parser-ex == 9.8.* # 2024-05-19: preserve for GHC 9.8 - ghc-lib-parser-ex == 9.6.* # 2024-05-19: preserve for GHC 9.2, 9.4
- ghc-lib-parser-ex == 9.10.* # 2024-12-26: preserve for 9.10 HLS
- ghc-source-gen < 0.4.6.0 # 2024-12-31: support GHC < 9.0
- ghc-tags == 1.5.* # 2023-02-18: preserve for ghc-lib == 9.2.*
- ghc-tags == 1.7.* # 2023-02-18: preserve for ghc-lib == 9.6.*
- ghc-tags == 1.8.* # 2023-02-18: preserve for ghc-lib == 9.8.*
- happy == 1.19.12 # for ghcjs - happy == 1.19.12 # for ghcjs
- hashable == 1.4.7.0 # allows GHC 9.10 - happy == 1.20.* # for ghc-lib-parser == 9.6.*
- ansi-wl-pprint >= 0.6 && < 0.7 # 2024-03-23: required for ghcjs - hasql < 1.7 # 2025-01-19: Needed for building postgrest
- hlint == 3.4.1 # 2022-09-21: needed for hls with ghc-lib-parser 9.2 - hasql-dynamic-statements < 0.3.1.6 # 2025-01-19: Needed for building postgrest
- hasql-implicits < 0.2 # 2025-01-19: Needed for building postgrest
- hasql-notifications < 0.2.3 # 2025-01-19: Needed for building postgrest
- hasql-pool < 1.1 # 2025-01-19: Needed for building postgrest
- hasql-transaction < 1.1.1 # 2025-01-19: Needed for building postgrest
- hlint == 3.4.1 # 2022-09-21: preserve for ghc 8.10
- hlint == 3.6.* # 2025-04-14: needed for hls with ghc-lib-parser 9.6
- hnix-store-core < 0.7 # 2023-12-11: required by hnix-store-remote 0.6 - hnix-store-core < 0.7 # 2023-12-11: required by hnix-store-remote 0.6
- hspec < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6 - hspec < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6
- hspec-core < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6 - hspec-core < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6
- hspec-discover < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6 - hspec-discover < 2.8 # 2022-04-07: Needed for tasty-hspec 1.1.6
- hspec-megaparsec == 2.2.0 # 2023-11-18: Latest version compatible with ghc 9.0, needed for HLS - hspec-megaparsec == 2.2.0 # 2023-11-18: Latest version compatible with ghc 9.0
- hspec-meta < 2.8 # 2022-12-07: Needed for elmPackages.elm / hspec-discover - hspec-meta < 2.8 # 2022-12-07: Needed for elmPackages.elm / hspec-discover
- immortal == 0.2.2.1 # required by Hasura 1.3.1, 2020-08-20
- language-docker == 11.0.0 # required by hadolint 2.12.0, 2022-11-16
- language-javascript == 0.7.0.0 # required by purescript - language-javascript == 0.7.0.0 # required by purescript
- lsp == 2.1.0.0 # 2024-02-28: need for dhall-lsp-server unstable
- lsp-types == 2.0.2.0 # 2024-02-28: need for dhall-lsp-server unstable
- lsp < 2.5 # 2024-07-08: need for koka - lsp < 2.5 # 2024-07-08: need for koka
- lsp-types < 2.2 # 2024-07-08: need for koka - lsp == 2.1.* # 2024-02-28: need for dhall-lsp-server
- lsp-types == 2.1.* # 2024-02-28: need for dhall-lsp-server and koka
- network-run == 0.4.0 # 2024-10-20: for GHC 9.10/network == 3.1.*
- optparse-applicative < 0.16 # needed for niv-0.2.19 - optparse-applicative < 0.16 # needed for niv-0.2.19
- fourmolu == 0.14.0.0 # 2023-11-13: for ghc-lib-parser 9.6 compat - ormolu == 0.5.2.0 # 2023-08-08: preserve for ghc 9.0
- fourmolu == 0.15.0.0 # 2024-07-07: for ghc 9.8 compat
- ormolu == 0.5.2.0 # 2023-08-08: for hls on ghc 9.0 and 9.2
- ormolu == 0.7.2.0 # 2023-11-13: for ghc-lib-parser 9.6 compat - ormolu == 0.7.2.0 # 2023-11-13: for ghc-lib-parser 9.6 compat
- ormolu == 0.7.4.0 # 2024-07-07: for ghc 9.8 compat - ormolu == 0.7.7.0 # 2025-01-27: for ghc 9.10 compat
- primitive-unlifted == 0.1.3.1 # 2024-03-16: Needed for hls on ghc 9.2 - postgresql-binary < 0.14 # 2025-01-19: Needed for building postgrest
- stylish-haskell == 0.14.4.0 # 2022-09-19: needed for hls on ghc 9.2 - primitive-unlifted == 0.1.3.1 # 2024-03-16: preserve for ghc 9.2
- retrie < 1.2.0.0 # 2022-12-30: preserve for ghc < 9.2
- shake-cabal < 0.2.2.3 # 2023-07-01: last version to support Cabal 3.6.*
- stylish-haskell == 0.14.4.0 # 2022-09-19: preserve for ghc 9.0
- stylish-haskell == 0.14.5.0 # 2025-04-14: needed for hls with ghc-lib 9.6
- tar == 0.6.0.0 # 2025-02-08: last version to not require os-string (which can't be built with GHC < 9.2)
- text == 2.0.2 # 2023-09-14: Needed for elm (which is currently on ghc-8.10) - text == 2.0.2 # 2023-09-14: Needed for elm (which is currently on ghc-8.10)
- text-metrics < 0.3.3 # 2025-02-08: >= 0.3.3 uses GHC2021
- versions < 6 # 2024-04-22: required by spago-0.21
- weeder == 2.2.* # 2022-02-21: preserve for GHC 8.10.7 - weeder == 2.2.* # 2022-02-21: preserve for GHC 8.10.7
- weeder == 2.3.* # 2022-05-31: preserve for GHC 9.0.2 - weeder == 2.3.* # 2022-05-31: preserve for GHC 9.0.2
- weeder == 2.4.* # 2023-02-02: preserve for GHC 9.2.* - weeder == 2.4.* # 2023-02-02: preserve for GHC 9.2.*
- retrie < 1.2.0.0 # 2022-12-30: required for hls on ghc < 9.2
- ghc-tags == 1.5.* # 2023-02-18: preserve for ghc-lib == 9.2.*
- ghc-tags == 1.6.* # 2023-02-18: preserve for ghc-lib == 9.4.*
- ghc-tags == 1.7.* # 2023-02-18: preserve for ghc-lib == 9.6.*
- ghc-tags == 1.8.* # 2023-02-18: preserve for ghc-lib == 9.8.*
- shake-cabal < 0.2.2.3 # 2023-07-01: last version to support Cabal 3.6.*
- algebraic-graphs < 0.7 # 2023-08-14: Needed for building weeder < 2.6.0
- fuzzyset == 0.2.4 # 2023-12-20: Needed for building postgrest > 10
- ShellCheck == 0.9.0 # 2024-03-21: pinned by haskell-ci
- versions < 6 # 2024-04-22: required by spago-0.21
- fsnotify < 0.4 # 2024-04-22: required by spago-0.21
- th-desugar == 1.16 # 2024-06-28: preserve for GHC 9.8
- singletons-th == 3.3 # 2024-06-28: preserve for GHC 9.8
- singletons-base == 3.3 # 2024-06-28: preserve for GHC 9.8
- tls < 2.1.0 # 2024-07-19: requested by darcs == 2.18.3
- extensions == 0.1.0.2 # 2024-10-20: for GHC 9.10/Cabal 3.12
- network-run == 0.4.0 # 2024-10-20: for GHC 9.10/network == 3.1.*
- ghc-source-gen < 0.4.6.0 # 2024-12-31: support GHC < 9.0
package-maintainers: package-maintainers:
abbradar: abbradar:
- Agda - Agda
alexfmpe: alexfmpe:
- aeson-gadt-th - aeson-gadt-th
- android-activity
- basic-sop - basic-sop
- bytestring-aeson-orphans
- cli-extras - cli-extras
- cli-git - cli-git
- cli-nix - cli-nix
@ -157,6 +159,7 @@ package-maintainers:
- large-records - large-records
- lens-sop - lens-sop
- linux-namespaces - linux-namespaces
- monoid-map
- monoidal-containers - monoidal-containers
- nix-thunk - nix-thunk
- patch - patch
@ -168,6 +171,8 @@ package-maintainers:
- reflex-dom - reflex-dom
- reflex-dom-core - reflex-dom-core
- reflex-gadt-api - reflex-gadt-api
- reflex-fsnotify
- th-abstraction
- universe - universe
- universe-some - universe-some
- vessel - vessel
@ -203,7 +208,6 @@ package-maintainers:
- nfc - nfc
dalpd: dalpd:
- dhall-lsp-server - dhall-lsp-server
- espial
- ghc-vis - ghc-vis
- patat - patat
- svgcairo - svgcairo
@ -296,6 +300,15 @@ package-maintainers:
- sensei - sensei
malo: malo:
- cornelis - cornelis
mangoiv:
- fused-effects
- htree
- http-barf
- libsodium-bindings
- scoped-codensity
- sel
- text-display
- unclogging
maralorn: maralorn:
- bluefin - bluefin
- cabal-fmt - cabal-fmt
@ -344,8 +357,6 @@ package-maintainers:
- shake - shake
nomeata: nomeata:
- cabal-plan-bounds - cabal-plan-bounds
- candid
- leb128-cereal
- lhs2tex - lhs2tex
- rec-def - rec-def
- tasty-expected-failure - tasty-expected-failure
@ -405,6 +416,14 @@ package-maintainers:
- taffybar - taffybar
- arbtt - arbtt
- lentil - lentil
sellout:
- dualizer
- no-recursion
- yaya
- yaya-containers
- yaya-hedgehog
- yaya-quickcheck
- yaya-unsafe
sheepforce: sheepforce:
- mpi-hs - mpi-hs
- mpi-hs-store - mpi-hs-store
@ -645,7 +664,10 @@ package-maintainers:
- minio-hs - minio-hs
- smtp-mail - smtp-mail
- pdftotext - pdftotext
- warp-systemd
- amazonka
wolfgangwalther: wolfgangwalther:
- postgres-websockets
- postgrest - postgrest
unsupported-platforms: unsupported-platforms:
@ -823,6 +845,8 @@ supported-platforms:
memfd: [ platforms.linux ] memfd: [ platforms.linux ]
midi-alsa: [ platforms.linux ] # alsa-core only supported on linux midi-alsa: [ platforms.linux ] # alsa-core only supported on linux
midisurface: [ platforms.linux ] # alsa-core only supported on linux midisurface: [ platforms.linux ] # alsa-core only supported on linux
miso-action-logger: [ javascript-ghcjs ] # https://github.com/Lermex/miso-action-logger/issues/1
miso-examples: [ javascript-ghcjs ]
OrderedBits: [ platforms.x86 ] # lacks implementations for non-x86: https://github.com/choener/OrderedBits/blob/401cbbe933b1635aa33e8e9b29a4a570b0a8f044/lib/Data/Bits/Ordered.hs#L316 OrderedBits: [ platforms.x86 ] # lacks implementations for non-x86: https://github.com/choener/OrderedBits/blob/401cbbe933b1635aa33e8e9b29a4a570b0a8f044/lib/Data/Bits/Ordered.hs#L316
reactivity: [ platforms.windows ] reactivity: [ platforms.windows ]
reflex-libtelnet: [ platforms.linux ] # pkgs.libtelnet only supports linux reflex-libtelnet: [ platforms.linux ] # pkgs.libtelnet only supports linux

View file

@ -54,6 +54,11 @@ builtins.intersectAttrs super {
### HASKELL-LANGUAGE-SERVER SECTION ### ### HASKELL-LANGUAGE-SERVER SECTION ###
####################################### #######################################
cabal-add = overrideCabal (drv: {
# tests depend on executable
preCheck = ''export PATH="$PWD/dist/build/cabal-add:$PATH"'';
}) super.cabal-add;
haskell-language-server = overrideCabal (drv: { haskell-language-server = overrideCabal (drv: {
# starting with 1.6.1.1 haskell-language-server wants to be linked dynamically # starting with 1.6.1.1 haskell-language-server wants to be linked dynamically
# by default. Unless we reflect this in the generic builder, GHC is going to # by default. Unless we reflect this in the generic builder, GHC is going to
@ -79,7 +84,7 @@ builtins.intersectAttrs super {
self.cabal-install self.cabal-install
pkgs.git pkgs.git
]; ];
testTarget = "func-test"; # wrapper test accesses internet testTargets = [ "func-test" ]; # wrapper test accesses internet
preCheck = '' preCheck = ''
export PATH=$PATH:$PWD/dist/build/haskell-language-server:$PWD/dist/build/haskell-language-server-wrapper export PATH=$PATH:$PWD/dist/build/haskell-language-server:$PWD/dist/build/haskell-language-server-wrapper
export HOME=$TMPDIR export HOME=$TMPDIR
@ -93,8 +98,6 @@ builtins.intersectAttrs super {
ghcide = overrideCabal (drv: { ghcide = overrideCabal (drv: {
# tests depend on executable # tests depend on executable
preCheck = ''export PATH="$PWD/dist/build/ghcide:$PATH"''; preCheck = ''export PATH="$PWD/dist/build/ghcide:$PATH"'';
# tests disabled because they require network
doCheck = false;
}) super.ghcide; }) super.ghcide;
hiedb = overrideCabal (drv: { hiedb = overrideCabal (drv: {
@ -119,43 +122,12 @@ builtins.intersectAttrs super {
+ drv.preCheck or ""; + drv.preCheck or "";
}) super.agda2lagda; }) super.agda2lagda;
# - Disable scrypt support since the library used only works on x86 due to SSE2: # scrypt requires SSE2
# https://github.com/informatikr/scrypt/issues/8 password = super.password.override (
# - Use crypton as the encryption backend. That override becomes obsolete with lib.optionalAttrs (!(lib.meta.availableOn pkgs.stdenv.hostPlatform self.scrypt)) {
# 3.1.* since cabal2nix picks crypton by default then. scrypt = null;
password = }
let );
scryptSupported = pkgs.stdenv.hostPlatform.isx86;
in
lib.pipe
(super.password.override (
{
cryptonite = self.crypton;
}
// lib.optionalAttrs (!scryptSupported) {
scrypt = null;
}
))
(
[
(enableCabalFlag "crypton")
(disableCabalFlag "cryptonite")
# https://github.com/cdepillabout/password/pull/84
(appendPatch ./patches/password-3.0.4.0-scrypt-conditional.patch)
(overrideCabal (drv: {
# patch doesn't apply otherwise because of revisions
prePatch =
drv.prePatch or ""
+ ''
${pkgs.buildPackages.dos2unix}/bin/dos2unix *.cabal
'';
}))
]
++ lib.optionals (!scryptSupported) [
(disableCabalFlag "scrypt")
]
);
audacity = enableCabalFlag "buildExamples" ( audacity = enableCabalFlag "buildExamples" (
overrideCabal (drv: { overrideCabal (drv: {
@ -242,43 +214,14 @@ builtins.intersectAttrs super {
}); });
in in
{ {
hledger = installHledgerExtraFiles "" super.hledger; hledger = installHledgerExtraFiles "embeddedfiles" super.hledger;
hledger-web = installHledgerExtraFiles "" (hledgerWebTestFix super.hledger-web); hledger-web = installHledgerExtraFiles "" (hledgerWebTestFix super.hledger-web);
hledger-ui = installHledgerExtraFiles "" super.hledger-ui; hledger-ui = installHledgerExtraFiles "" super.hledger-ui;
hledger_1_40 = installHledgerExtraFiles "embeddedfiles" (
doDistribute (
super.hledger_1_40.override {
hledger-lib = self.hledger-lib_1_40;
}
)
);
hledger-ui_1_40 = installHledgerExtraFiles "" (
doDistribute (
super.hledger-ui_1_40.override {
hledger = self.hledger_1_40;
hledger-lib = self.hledger-lib_1_40;
}
)
);
hledger-web_1_40 = installHledgerExtraFiles "" (
hledgerWebTestFix (
doDistribute (
super.hledger-web_1_40.override {
hledger = self.hledger_1_40;
hledger-lib = self.hledger-lib_1_40;
}
)
)
);
} }
) )
hledger hledger
hledger-web hledger-web
hledger-ui hledger-ui
hledger_1_40
hledger-ui_1_40
hledger-web_1_40
; ;
cufft = overrideCabal (drv: { cufft = overrideCabal (drv: {
@ -424,27 +367,23 @@ builtins.intersectAttrs super {
digitalocean-kzs = dontCheck super.digitalocean-kzs; # https://github.com/KazumaSATO/digitalocean-kzs/issues/1 digitalocean-kzs = dontCheck super.digitalocean-kzs; # https://github.com/KazumaSATO/digitalocean-kzs/issues/1
github-types = dontCheck super.github-types; # http://hydra.cryp.to/build/1114046/nixlog/1/raw github-types = dontCheck super.github-types; # http://hydra.cryp.to/build/1114046/nixlog/1/raw
hadoop-rpc = dontCheck super.hadoop-rpc; # http://hydra.cryp.to/build/527461/nixlog/2/raw hadoop-rpc = dontCheck super.hadoop-rpc; # http://hydra.cryp.to/build/527461/nixlog/2/raw
hjsonschema = overrideCabal (drv: { testTarget = "local"; }) super.hjsonschema; hjsonschema = overrideCabal (drv: { testTargets = [ "local" ]; }) super.hjsonschema;
marmalade-upload = dontCheck super.marmalade-upload; # http://hydra.cryp.to/build/501904/nixlog/1/raw marmalade-upload = dontCheck super.marmalade-upload; # http://hydra.cryp.to/build/501904/nixlog/1/raw
mongoDB = dontCheck super.mongoDB; mongoDB = dontCheck super.mongoDB;
network-transport-tcp = dontCheck super.network-transport-tcp;
network-transport-zeromq = dontCheck super.network-transport-zeromq; # https://github.com/tweag/network-transport-zeromq/issues/30 network-transport-zeromq = dontCheck super.network-transport-zeromq; # https://github.com/tweag/network-transport-zeromq/issues/30
oidc-client = dontCheck super.oidc-client; # the spec runs openid against google.com oidc-client = dontCheck super.oidc-client; # the spec runs openid against google.com
persistent-migration = dontCheck super.persistent-migration; # spec requires pg_ctl binary persistent-migration = dontCheck super.persistent-migration; # spec requires pg_ctl binary
pipes-mongodb = dontCheck super.pipes-mongodb; # http://hydra.cryp.to/build/926195/log/raw pipes-mongodb = dontCheck super.pipes-mongodb; # http://hydra.cryp.to/build/926195/log/raw
pixiv = dontCheck super.pixiv; pixiv = dontCheck super.pixiv;
raven-haskell = dontCheck super.raven-haskell; # http://hydra.cryp.to/build/502053/log/raw
riak = dontCheck super.riak; # http://hydra.cryp.to/build/498763/log/raw riak = dontCheck super.riak; # http://hydra.cryp.to/build/498763/log/raw
scotty-binding-play = dontCheck super.scotty-binding-play; scotty-binding-play = dontCheck super.scotty-binding-play;
servant-router = dontCheck super.servant-router; servant-router = dontCheck super.servant-router;
serversession-backend-redis = dontCheck super.serversession-backend-redis; serversession-backend-redis = dontCheck super.serversession-backend-redis;
slack-api = dontCheck super.slack-api; # https://github.com/mpickering/slack-api/issues/5 slack-api = dontCheck super.slack-api; # https://github.com/mpickering/slack-api/issues/5
socket = dontCheck super.socket;
stackage = dontCheck super.stackage; # http://hydra.cryp.to/build/501867/nixlog/1/raw stackage = dontCheck super.stackage; # http://hydra.cryp.to/build/501867/nixlog/1/raw
textocat-api = dontCheck super.textocat-api; # http://hydra.cryp.to/build/887011/log/raw textocat-api = dontCheck super.textocat-api; # http://hydra.cryp.to/build/887011/log/raw
wreq = dontCheck super.wreq; # http://hydra.cryp.to/build/501895/nixlog/1/raw wreq = dontCheck super.wreq; # http://hydra.cryp.to/build/501895/nixlog/1/raw
wreq-sb = dontCheck super.wreq-sb; # http://hydra.cryp.to/build/783948/log/raw wreq-sb = dontCheck super.wreq-sb; # http://hydra.cryp.to/build/783948/log/raw
wuss = dontCheck super.wuss; # http://hydra.cryp.to/build/875964/nixlog/2/raw
download = dontCheck super.download; download = dontCheck super.download;
http-client = dontCheck super.http-client; http-client = dontCheck super.http-client;
http-client-openssl = dontCheck super.http-client-openssl; http-client-openssl = dontCheck super.http-client-openssl;
@ -452,10 +391,8 @@ builtins.intersectAttrs super {
http-conduit = dontCheck super.http-conduit; http-conduit = dontCheck super.http-conduit;
transient-universe = dontCheck super.transient-universe; transient-universe = dontCheck super.transient-universe;
telegraph = dontCheck super.telegraph; telegraph = dontCheck super.telegraph;
typed-process = dontCheck super.typed-process;
js-jquery = dontCheck super.js-jquery; js-jquery = dontCheck super.js-jquery;
hPDB-examples = dontCheck super.hPDB-examples; hPDB-examples = dontCheck super.hPDB-examples;
configuration-tools = dontCheck super.configuration-tools; # https://github.com/alephcloud/hs-configuration-tools/issues/40
tcp-streams = dontCheck super.tcp-streams; tcp-streams = dontCheck super.tcp-streams;
holy-project = dontCheck super.holy-project; holy-project = dontCheck super.holy-project;
mustache = dontCheck super.mustache; mustache = dontCheck super.mustache;
@ -721,7 +658,7 @@ builtins.intersectAttrs super {
''; '';
}) super.GLUT; }) super.GLUT;
libsystemd-journal = doJailbreak (addExtraLibrary pkgs.systemd super.libsystemd-journal); libsystemd-journal = addExtraLibrary pkgs.systemd super.libsystemd-journal;
# does not specify tests in cabal file, instead has custom runTest cabal hook, # does not specify tests in cabal file, instead has custom runTest cabal hook,
# so cabal2nix will not detect test dependencies. # so cabal2nix will not detect test dependencies.
@ -732,9 +669,6 @@ builtins.intersectAttrs super {
]; ];
}) super.either-unwrap; }) super.either-unwrap;
# https://github.com/haskell-fswatch/hfsnotify/issues/62
fsnotify = dontCheck super.fsnotify;
hs-GeoIP = super.hs-GeoIP.override { GeoIP = pkgs.geoipWithDatabase; }; hs-GeoIP = super.hs-GeoIP.override { GeoIP = pkgs.geoipWithDatabase; };
discount = super.discount.override { markdown = pkgs.discount; }; discount = super.discount.override { markdown = pkgs.discount; };
@ -833,12 +767,32 @@ builtins.intersectAttrs super {
# Not running the "example" test because it requires a binary from lsps test # Not running the "example" test because it requires a binary from lsps test
# suite which is not part of the output of lsp. # suite which is not part of the output of lsp.
lsp-test = overrideCabal (old: { testTarget = "tests func-test"; }) super.lsp-test; lsp-test = overrideCabal (old: {
testTargets = [
"tests"
"func-test"
];
}) super.lsp-test;
# the test suite attempts to run the binaries built in this package # the test suite attempts to run the binaries built in this package
# through $PATH but they aren't in $PATH # through $PATH but they aren't in $PATH
dhall-lsp-server = dontCheck super.dhall-lsp-server; dhall-lsp-server = dontCheck super.dhall-lsp-server;
# Test suite requires z3 to be in PATH
copilot-libraries = overrideCabal (drv: {
testToolDepends = drv.testToolDepends or [ ] ++ [
pkgs.z3
];
}) super.copilot-libraries;
# tests need to execute the built executable
ogma-cli = overrideCabal (drv: {
preCheck =
''
export PATH=dist/build/ogma:$PATH
''
+ (drv.preCheck or "");
}) super.ogma-cli;
# Expects z3 to be on path so we replace it with a hard # Expects z3 to be on path so we replace it with a hard
# #
# The tests expect additional solvers on the path, replace the # The tests expect additional solvers on the path, replace the
@ -864,6 +818,13 @@ builtins.intersectAttrs super {
# The test-suite requires a running PostgreSQL server. # The test-suite requires a running PostgreSQL server.
Frames-beam = dontCheck super.Frames-beam; Frames-beam = dontCheck super.Frames-beam;
# Test suite requires yices to be in PATH
crucible-symio = overrideCabal (drv: {
testToolDepends = drv.testToolDepends or [ ] ++ [
pkgs.yices
];
}) super.crucible-symio;
# Compile manpages (which are in RST and are compiled with Sphinx). # Compile manpages (which are in RST and are compiled with Sphinx).
futhark = futhark =
overrideCabal overrideCabal
@ -912,6 +873,15 @@ builtins.intersectAttrs super {
executableSystemDepends = runtimeExecDeps; executableSystemDepends = runtimeExecDeps;
enableSharedExecutables = false; enableSharedExecutables = false;
# Unnecessary for Setup.hs, but we reuse the setup package db
# for the installation utilities.
setupHaskellDepends = drv.setupHaskellDepends or [ ] ++ [
self.buildHaskellPackages.unix-compat
self.buildHaskellPackages.IfElse
self.buildHaskellPackages.QuickCheck
self.buildHaskellPackages.data-default
];
preConfigure = preConfigure =
drv.preConfigure or "" drv.preConfigure or ""
+ '' + ''
@ -995,9 +965,6 @@ builtins.intersectAttrs super {
# The test suite has undeclared dependencies on git. # The test suite has undeclared dependencies on git.
githash = dontCheck super.githash; githash = dontCheck super.githash;
# Avoid infitite recursion with yaya.
yaya-hedgehog = super.yaya-hedgehog.override { yaya = dontCheck self.yaya; };
# Avoid infitite recursion with tonatona. # Avoid infitite recursion with tonatona.
tonaparser = dontCheck super.tonaparser; tonaparser = dontCheck super.tonaparser;
@ -1048,7 +1015,8 @@ builtins.intersectAttrs super {
in in
lib.pipe lib.pipe
(super.spago.override { (super.spago.override {
versions = self.versions_5_0_5; # base <4.19, text <2.1
versions = doJailbreak self.versions_5_0_5;
fsnotify = self.fsnotify_0_3_0_1; fsnotify = self.fsnotify_0_3_0_1;
}) })
[ [
@ -1109,7 +1077,6 @@ builtins.intersectAttrs super {
# break infinite recursion with base-orphans # break infinite recursion with base-orphans
primitive = dontCheck super.primitive; primitive = dontCheck super.primitive;
primitive_0_7_1_0 = dontCheck super.primitive_0_7_1_0; primitive_0_7_1_0 = dontCheck super.primitive_0_7_1_0;
primitive_0_9_0_0 = dontCheck super.primitive_0_9_0_0;
cut-the-crap = cut-the-crap =
let let
@ -1126,7 +1093,7 @@ builtins.intersectAttrs super {
}) (addBuildTool pkgs.buildPackages.makeWrapper super.cut-the-crap); }) (addBuildTool pkgs.buildPackages.makeWrapper super.cut-the-crap);
# Compiling the readme throws errors and has no purpose in nixpkgs # Compiling the readme throws errors and has no purpose in nixpkgs
aeson-gadt-th = disableCabalFlag "build-readme" (doJailbreak super.aeson-gadt-th); aeson-gadt-th = disableCabalFlag "build-readme" super.aeson-gadt-th;
# Fix compilation of Setup.hs by removing the module declaration. # Fix compilation of Setup.hs by removing the module declaration.
# See: https://github.com/tippenein/guid/issues/1 # See: https://github.com/tippenein/guid/issues/1
@ -1160,6 +1127,9 @@ builtins.intersectAttrs super {
retrie_1_2_0_0 = addTestToolDepends [ pkgs.git pkgs.mercurial ] super.retrie_1_2_0_0; retrie_1_2_0_0 = addTestToolDepends [ pkgs.git pkgs.mercurial ] super.retrie_1_2_0_0;
retrie_1_2_1_1 = addTestToolDepends [ pkgs.git pkgs.mercurial ] super.retrie_1_2_1_1; retrie_1_2_1_1 = addTestToolDepends [ pkgs.git pkgs.mercurial ] super.retrie_1_2_1_1;
# Just an executable
ret = enableSeparateBinOutput super.ret;
# there are three very heavy test suites that need external repos, one requires network access # there are three very heavy test suites that need external repos, one requires network access
hevm = dontCheck super.hevm; hevm = dontCheck super.hevm;
@ -1241,7 +1211,7 @@ builtins.intersectAttrs super {
substituteInPlace src/Nix/Diff/Types.hs \ substituteInPlace src/Nix/Diff/Types.hs \
--replace "{-# OPTIONS_GHC -Wno-orphans #-}" "{-# OPTIONS_GHC -Wno-orphans -fconstraint-solver-iterations=0 #-}" --replace "{-# OPTIONS_GHC -Wno-orphans #-}" "{-# OPTIONS_GHC -Wno-orphans -fconstraint-solver-iterations=0 #-}"
''; '';
}) (doJailbreak (dontCheck super.nix-diff)); }) (dontCheck super.nix-diff);
# mockery's tests depend on hspec-discover which dependso on mockery for its tests # mockery's tests depend on hspec-discover which dependso on mockery for its tests
mockery = dontCheck super.mockery; mockery = dontCheck super.mockery;
@ -1312,7 +1282,7 @@ builtins.intersectAttrs super {
rel8 = pkgs.lib.pipe super.rel8 [ rel8 = pkgs.lib.pipe super.rel8 [
(addTestToolDepend pkgs.postgresql) (addTestToolDepend pkgs.postgresql)
# https://github.com/NixOS/nixpkgs/issues/198495 # https://github.com/NixOS/nixpkgs/issues/198495
(dontCheckIf (!pkgs.postgresql.doCheck)) (dontCheckIf (!pkgs.postgresql.doInstallCheck))
]; ];
cloudy = pkgs.lib.pipe super.cloudy [ cloudy = pkgs.lib.pipe super.cloudy [
@ -1409,10 +1379,6 @@ builtins.intersectAttrs super {
) )
); );
# Test suite is just the default example executable which doesn't work if not
# executed by Setup.hs, but works if started on a proper TTY
isocline = dontCheck super.isocline;
# Some hash implementations are x86 only, but part of the test suite. # Some hash implementations are x86 only, but part of the test suite.
# So executing and building it on non-x86 platforms will always fail. # So executing and building it on non-x86 platforms will always fail.
hashes = dontCheckIf (!pkgs.stdenv.hostPlatform.isx86) super.hashes; hashes = dontCheckIf (!pkgs.stdenv.hostPlatform.isx86) super.hashes;
@ -1458,8 +1424,8 @@ builtins.intersectAttrs super {
builtins.mapAttrs (_: fourmoluTestFix) super builtins.mapAttrs (_: fourmoluTestFix) super
) )
fourmolu fourmolu
fourmolu_0_15_0_0 fourmolu_0_14_0_0
fourmolu_0_16_2_0 fourmolu_0_16_0_0
; ;
# Test suite needs to execute 'disco' binary # Test suite needs to execute 'disco' binary
@ -1475,7 +1441,7 @@ builtins.intersectAttrs super {
"!/oeis/" "!/oeis/"
]; ];
# disco-examples needs network access # disco-examples needs network access
testTarget = "disco-tests"; testTargets = [ "disco-tests" ];
}) super.disco; }) super.disco;
# Apply a patch which hardcodes the store path of graphviz instead of using # Apply a patch which hardcodes the store path of graphviz instead of using
@ -1505,17 +1471,39 @@ builtins.intersectAttrs super {
# Test have become more fussy in >= 2.0. We need to have which available for # Test have become more fussy in >= 2.0. We need to have which available for
# tests to succeed and the makefile no longer finds happy by itself. # tests to succeed and the makefile no longer finds happy by itself.
happy_2_1_3 = overrideCabal (drv: { inherit
buildTools = drv.buildTools or [ ] ++ [ pkgs.buildPackages.which ]; (lib.mapAttrs
preCheck = (
drv.preCheck or "" _:
+ '' overrideCabal (drv: {
export PATH="$PWD/dist/build/happy:$PATH" buildTools = drv.buildTools or [ ] ++ [ pkgs.buildPackages.which ];
''; preCheck =
}) super.happy_2_1_3; drv.preCheck or ""
+ ''
export PATH="$PWD/dist/build/happy:$PATH"
'';
})
)
{
inherit (super) happy;
happy_2_1_5 = super.happy_2_1_5.override {
happy-lib = self.happy-lib_2_1_5;
};
}
)
happy_2_1_5
happy
;
# Additionally install documentation # Additionally install documentation
jacinda = overrideCabal (drv: { jacinda = overrideCabal (drv: {
enableSeparateDocOutput = true; enableSeparateDocOutput = true;
# Test suite is broken by DOS line endings inserted by Hackage revisions
# https://github.com/vmchale/jacinda/issues/5
postPatch = ''
${drv.postPatch or ""}
${pkgs.buildPackages.dos2unix}/bin/dos2unix *.cabal
'';
postInstall = '' postInstall = ''
${drv.postInstall or ""} ${drv.postInstall or ""}
@ -1565,9 +1553,9 @@ builtins.intersectAttrs super {
# is not commonly installed on systems, so we add it to PATH. Closure size # is not commonly installed on systems, so we add it to PATH. Closure size
# penalty is about 10MB at the time of writing this (2022-08-20). # penalty is about 10MB at the time of writing this (2022-08-20).
cabal-install = overrideCabal (old: { cabal-install = overrideCabal (old: {
executableToolDepends = [ buildTools = [
pkgs.buildPackages.makeWrapper pkgs.buildPackages.makeWrapper
] ++ old.buildToolDepends or [ ]; ] ++ old.buildTools or [ ];
postInstall = postInstall =
old.postInstall old.postInstall
+ '' + ''
@ -1639,14 +1627,21 @@ builtins.intersectAttrs super {
} }
) super) ) super)
gi-javascriptcore gi-javascriptcore
gi-javascriptcore4
gi-javascriptcore6
gi-webkit2webextension gi-webkit2webextension
gi-gtk_4_0_11 gi-gtk_4_0_12
gi-gdk_4_0_9 gi-gdk_4_0_10
gi-gdk4
gi-gdkx114
gi-gtk4
gi-gtksource5
gi-gsk gi-gsk
gi-adwaita gi-adwaita
sdl2-ttf sdl2-ttf
sdl2 sdl2
dear-imgui dear-imgui
libremidi
; ;
webkit2gtk3-javascriptcore = lib.pipe super.webkit2gtk3-javascriptcore [ webkit2gtk3-javascriptcore = lib.pipe super.webkit2gtk3-javascriptcore [
@ -1673,7 +1668,7 @@ builtins.intersectAttrs super {
mpiImpl = pkgs.mpi.pname; mpiImpl = pkgs.mpi.pname;
disableUnused = with builtins; map disableCabalFlag (filter (n: n != mpiImpl) validMpi); disableUnused = with builtins; map disableCabalFlag (filter (n: n != mpiImpl) validMpi);
in in
lib.pipe (super.mpi-hs_0_7_3_1.override { ompi = pkgs.mpi; }) ( lib.pipe (super.mpi-hs.override { ompi = pkgs.mpi; }) (
[ [
(addTestToolDepends [ (addTestToolDepends [
pkgs.openssh pkgs.openssh
@ -1696,13 +1691,17 @@ builtins.intersectAttrs super {
mpi-hs-binary mpi-hs-binary
; ;
postgresql-libpq = overrideCabal (drv: { postgresql-libpq = lib.pipe super.postgresql-libpq [
# Using use-pkg-config flag, because pg_config won't work when cross-compiling. (x: x.override { postgresql-libpq-configure = null; })
configureFlags = drv.configureFlags or [ ] ++ [ "-fuse-pkg-config" ]; (appendConfigureFlag "-fuse-pkg-config")
# Move postgresql from SystemDepends to PkgconfigDepends (addBuildDepend self.postgresql-libpq-pkgconfig)
libraryPkgconfigDepends = drv.librarySystemDepends; ];
librarySystemDepends = [ ];
}) super.postgresql-libpq; postgresql-libpq-configure = overrideCabal (drv: {
librarySystemDepends = (drv.librarySystemDepends or [ ]) ++ [ pkgs.libpq ];
}) super.postgresql-libpq-configure;
postgresql-libpq-pkgconfig = addPkgconfigDepend pkgs.libpq super.postgresql-libpq-pkgconfig;
# Test failure is related to a GHC implementation detail of primitives and doesn't # Test failure is related to a GHC implementation detail of primitives and doesn't
# cause actual problems in dependent packages, see https://github.com/lehins/pvar/issues/4 # cause actual problems in dependent packages, see https://github.com/lehins/pvar/issues/4
@ -1718,16 +1717,57 @@ builtins.intersectAttrs super {
xmobar = enableSeparateBinOutput super.xmobar; xmobar = enableSeparateBinOutput super.xmobar;
# 2024-08-09: Disable some cabal-doctest tests pending further investigation. # 2024-08-09: Disable some cabal-doctest tests pending further investigation.
doctest = overrideCabal (drv: { inherit
testFlags = drv.testFlags or [ ] ++ [ (lib.mapAttrs (
# These tests require cabal-install _: doctest:
"--skip=/Cabal.Options" lib.pipe doctest [
"--skip=/Cabal.Paths/paths" (overrideCabal (drv: {
]; patches = drv.patches or [ ] ++ [
}) super.doctest; (pkgs.fetchpatch {
name = "doctest-0.23.0-ghc-9.12.patch";
url = "https://github.com/sol/doctest/commit/77373c5d84cd5e59ea86ec30b9ada874f50fad9e.patch";
sha256 = "07dx99lna17fni1ccbklijx1ckkf2p4kk9wvkwib0ihmra70zpn2";
includes = [ "test/**" ];
})
];
testFlags = drv.testFlags or [ ] ++ [
# These tests require cabal-install (would cause infinite recursion)
"--skip=/Cabal.Options"
"--skip=/Cabal.Paths/paths"
"--skip=/Cabal.ReplOptions" # >= 0.23
];
}))
doDistribute
]
) { inherit (super) doctest doctest_0_23_0; })
doctest
doctest_0_23_0
;
# tracked upstream: https://github.com/snapframework/openssl-streams/pull/11 # tracked upstream: https://github.com/snapframework/openssl-streams/pull/11
# certificate used only 1024 Bit RSA key and SHA-1, which is not allowed in OpenSSL 3.1+ # certificate used only 1024 Bit RSA key and SHA-1, which is not allowed in OpenSSL 3.1+
# security level 2 # security level 2
openssl-streams = appendPatch ./patches/openssl-streams-cert.patch super.openssl-streams; openssl-streams = appendPatch ./patches/openssl-streams-cert.patch super.openssl-streams;
libtorch-ffi =
appendConfigureFlags
(
[
"--extra-include-dirs=${lib.getDev pkgs.libtorch-bin}/include/torch/csrc/api/include"
]
++ (lib.optionals pkgs.config.cudaSupport [
"-f"
"cuda"
])
)
(
super.libtorch-ffi.override ({
c10 = pkgs.libtorch-bin;
torch = pkgs.libtorch-bin;
torch_cpu = pkgs.libtorch-bin;
})
);
# Upper bounds of text and bytestring too strict: https://github.com/zsedem/haskell-cpython/pull/24
cpython = doJailbreak super.cpython;
} }

View file

@ -23,7 +23,7 @@ let
}); });
in in
{ {
tensorflow-proto = doJailbreak (setTensorflowSourceRoot "tensorflow-proto" super.tensorflow-proto); tensorflow-proto = setTensorflowSourceRoot "tensorflow-proto" super.tensorflow-proto;
tensorflow = overrideCabal (drv: { tensorflow = overrideCabal (drv: {
libraryHaskellDepends = drv.libraryHaskellDepends ++ [ self.vector-split ]; libraryHaskellDepends = drv.libraryHaskellDepends ++ [ self.vector-split ];

View file

@ -126,7 +126,9 @@ in
benchmarkHaskellDepends ? [ ], benchmarkHaskellDepends ? [ ],
benchmarkSystemDepends ? [ ], benchmarkSystemDepends ? [ ],
benchmarkFrameworkDepends ? [ ], benchmarkFrameworkDepends ? [ ],
# testTarget is deprecated. Use testTargets instead.
testTarget ? "", testTarget ? "",
testTargets ? lib.strings.splitString " " testTarget,
testFlags ? [ ], testFlags ? [ ],
broken ? false, broken ? false,
preCompileBuildDriver ? null, preCompileBuildDriver ? null,
@ -537,6 +539,11 @@ let
exec "$@" exec "$@"
''; '';
testTargetsString =
lib.warnIf (testTarget != "")
"haskellPackages.mkDerivation: testTarget is deprecated. Use testTargets instead"
(lib.concatStringsSep " " testTargets);
in in
lib.fix ( lib.fix (
drv: drv:
@ -765,7 +772,7 @@ lib.fix (
${lib.escapeShellArgs (builtins.map (opt: "--test-option=${opt}") testFlags)} ${lib.escapeShellArgs (builtins.map (opt: "--test-option=${opt}") testFlags)}
) )
export NIX_GHC_PACKAGE_PATH_FOR_TEST="''${NIX_GHC_PACKAGE_PATH_FOR_TEST:-$packageConfDir:}" export NIX_GHC_PACKAGE_PATH_FOR_TEST="''${NIX_GHC_PACKAGE_PATH_FOR_TEST:-$packageConfDir:}"
${setupCommand} test ${testTarget} $checkFlags ''${checkFlagsArray:+"''${checkFlagsArray[@]}"} ${setupCommand} test ${testTargetsString} $checkFlags ''${checkFlagsArray:+"''${checkFlagsArray[@]}"}
runHook postCheck runHook postCheck
''; '';

File diff suppressed because it is too large Load diff

View file

@ -41,17 +41,6 @@ self: super:
nix-linter = self.callPackage ../../development/tools/analysis/nix-linter { }; nix-linter = self.callPackage ../../development/tools/analysis/nix-linter { };
# hasura graphql-engine is not released to hackage.
# https://github.com/hasura/graphql-engine/issues/7391
ci-info = self.callPackage ../misc/haskell/hasura/ci-info.nix { };
pg-client = self.callPackage ../misc/haskell/hasura/pg-client.nix { };
graphql-parser = self.callPackage ../misc/haskell/hasura/graphql-parser.nix { };
graphql-engine = self.callPackage ../misc/haskell/hasura/graphql-engine.nix { };
kriti-lang = self.callPackage ../misc/haskell/hasura/kriti-lang.nix { };
hasura-resource-pool = self.callPackage ../misc/haskell/hasura/pool.nix { };
hasura-ekg-core = self.callPackage ../misc/haskell/hasura/ekg-core.nix { };
hasura-ekg-json = self.callPackage ../misc/haskell/hasura/ekg-json.nix { };
# Unofficial fork until PRs are merged https://github.com/pcapriotti/optparse-applicative/pulls/roberth # Unofficial fork until PRs are merged https://github.com/pcapriotti/optparse-applicative/pulls/roberth
# cabal2nix --maintainer roberth https://github.com/hercules-ci/optparse-applicative.git > pkgs/development/misc/haskell/hercules-ci-optparse-applicative.nix # cabal2nix --maintainer roberth https://github.com/hercules-ci/optparse-applicative.git > pkgs/development/misc/haskell/hercules-ci-optparse-applicative.nix
hercules-ci-optparse-applicative = hercules-ci-optparse-applicative =

View file

@ -0,0 +1,11 @@
--- a/cabal-install.cabal
+++ b/cabal-install.cabal
@@ -261,7 +261,7 @@
-- newer directory for symlinks
build-depends: Win32 >= 2.8 && < 3, directory >=1.3.1.0
else
- build-depends: unix >= 2.5 && < 2.8 || >= 2.8.6.0 && < 2.9
+ build-depends: unix >= 2.5 && < 2.9
if flag(lukko)
build-depends: lukko >= 0.1 && <0.2

View file

@ -2,12 +2,12 @@ diff --git a/Utility/FreeDesktop.hs b/Utility/FreeDesktop.hs
index 896b89b991..6cbb4f90ae 100644 index 896b89b991..6cbb4f90ae 100644
--- a/Utility/FreeDesktop.hs --- a/Utility/FreeDesktop.hs
+++ b/Utility/FreeDesktop.hs +++ b/Utility/FreeDesktop.hs
@@ -112,7 +112,7 @@ desktopfile f = f ++ ".desktop" @@ -106,7 +106,7 @@ desktopfile f = toOsPath $ f ++ ".desktop"
{- Directory used for installation of system wide data files.. -} {- Directory used for installation of system wide data files.. -}
systemDataDir :: FilePath systemDataDir :: OsPath
-systemDataDir = "/usr/share" -systemDataDir = literalOsPath "/usr/share"
+systemDataDir = "/share" +systemDataDir = literalOsPath "/share"
{- Directory used for installation of system wide config files. -} {- Directory used for installation of system wide config files. -}
systemConfigDir :: FilePath systemConfigDir :: OsPath

View file

@ -1,26 +0,0 @@
diff --git a/gogol-core.cabal b/gogol-core.cabal
index 4c47988..caa4796 100644
--- a/gogol-core.cabal
+++ b/gogol-core.cabal
@@ -62,7 +62,7 @@ library
, lens >= 4.4
, resourcet >= 1.1
, scientific >= 0.3
- , servant >= 0.4.4
+ , servant >= 0.14.1
, text >= 1.1
, unordered-containers >= 0.2.5
diff --git a/src/Network/Google/Prelude.hs b/src/Network/Google/Prelude.hs
index a4ad9de..795c690 100644
--- a/src/Network/Google/Prelude.hs
+++ b/src/Network/Google/Prelude.hs
@@ -28,7 +28,7 @@ import Network.HTTP.Client as Export (RequestBody)
import Numeric.Natural as Export (Natural)
import Prelude as Export hiding (product, span, any, Word)
import Servant.API as Export hiding (Headers, Link, getResponse, Stream, ResponseHeader, Header, header)
-import Servant.Utils.Links as Export hiding (Link)
+import Servant.Links as Export hiding (Link)
import Web.HttpApiData as Export (FromHttpApiData (..), ToHttpApiData (..))
import Network.Google.Data.Bytes as Export

View file

@ -1,21 +0,0 @@
diff --git a/password/password.cabal b/password/password.cabal
index 506457e..8fa978b 100644
--- a/password.cabal
+++ b/password.cabal
@@ -186,6 +186,8 @@ test-suite password-tasty
other-modules:
Scrypt
Data.Password.Scrypt
+ build-depends:
+ scrypt
ghc-options:
-threaded -O2 -rtsopts -with-rtsopts=-N
build-depends:
@@ -195,7 +197,6 @@ test-suite password-tasty
, bytestring
, memory
, quickcheck-instances
- , scrypt
, tasty
, tasty-hunit
, tasty-quickcheck

View file

@ -1,6 +1,7 @@
{ {
stdenv, stdenv,
lib, lib,
testers,
buildPackages, buildPackages,
fetchFromGitLab, fetchFromGitLab,
python3, python3,
@ -253,7 +254,12 @@ stdenv.mkDerivation (finalAttrs: {
moveToOutput "bin/pw-jack" "$jack" moveToOutput "bin/pw-jack" "$jack"
''; '';
passthru.tests.installed-tests = nixosTests.installed-tests.pipewire; passthru.tests = {
installed-tests = nixosTests.installed-tests.pipewire;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
meta = with lib; { meta = with lib; {
description = "Server and user space API to deal with multimedia pipelines"; description = "Server and user space API to deal with multimedia pipelines";
@ -265,5 +271,9 @@ stdenv.mkDerivation (finalAttrs: {
kranzes kranzes
k900 k900
]; ];
pkgConfigModules = [
"libpipewire-0.3"
"libspa-0.2"
];
}; };
}) })

View file

@ -1,7 +1,7 @@
{ {
stdenv, stdenv,
lib, lib,
pandoc_3_6, pandoc,
typst, typst,
esbuild, esbuild,
deno, deno,
@ -39,7 +39,7 @@ stdenv.mkDerivation (final: {
preFixup = '' preFixup = ''
wrapProgram $out/bin/quarto \ wrapProgram $out/bin/quarto \
--prefix QUARTO_DENO : ${lib.getExe deno} \ --prefix QUARTO_DENO : ${lib.getExe deno} \
--prefix QUARTO_PANDOC : ${lib.getExe pandoc_3_6} \ --prefix QUARTO_PANDOC : ${lib.getExe pandoc} \
--prefix QUARTO_ESBUILD : ${lib.getExe esbuild} \ --prefix QUARTO_ESBUILD : ${lib.getExe esbuild} \
--prefix QUARTO_DART_SASS : ${lib.getExe dart-sass} \ --prefix QUARTO_DART_SASS : ${lib.getExe dart-sass} \
--prefix QUARTO_TYPST : ${lib.getExe typst} \ --prefix QUARTO_TYPST : ${lib.getExe typst} \

View file

@ -1,41 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
aeson-casing,
base,
fetchgit,
hashable,
hpack,
lib,
template-haskell,
text,
th-lift-instances,
unordered-containers,
}:
mkDerivation {
pname = "ci-info";
version = "0.1.0.0";
src = fetchgit {
url = "https://github.com/hasura/ci-info-hs.git";
sha256 = "018vfyg0y2sn497nigjrcs6b1v3i9bna06dsbvgr6wjikcl6dhh4";
rev = "68247a83738ac4bb9f719f0e4213aeb7be9565cf";
fetchSubmodules = true;
};
libraryHaskellDepends = [
aeson
aeson-casing
base
hashable
template-haskell
text
th-lift-instances
unordered-containers
];
libraryToolDepends = [ hpack ];
prePatch = "hpack";
homepage = "https://github.com/hasura/ci-info-hs#readme";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ lassulus ];
}

View file

@ -1,75 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
async,
atomic-primops,
base,
containers,
criterion,
fetchgit,
ghc-prim,
hashable,
hspec,
hspec-smallcheck,
HUnit,
inspection-testing,
lib,
markdown-unlit,
primitive,
QuickCheck,
smallcheck,
text,
unordered-containers,
}:
mkDerivation {
pname = "ekg-core";
version = "0.1.1.7";
src = fetchgit {
url = "https://github.com/hasura/ekg-core.git";
sha256 = "1syb87iav3fgj6vqjh1izdvw4g0l4mngcyhvcg2nazisw3l685z6";
rev = "b0cdc337ca2a52e392d427916ba3e28246b396c0";
fetchSubmodules = true;
};
libraryHaskellDepends = [
atomic-primops
base
containers
ghc-prim
hashable
inspection-testing
primitive
text
unordered-containers
];
testHaskellDepends = [
async
atomic-primops
base
containers
ghc-prim
hashable
hspec
hspec-smallcheck
HUnit
inspection-testing
markdown-unlit
primitive
QuickCheck
smallcheck
text
unordered-containers
];
testToolDepends = [ markdown-unlit ];
benchmarkHaskellDepends = [
base
criterion
];
doHaddock = false;
homepage = "https://github.com/tibbe/ekg-core";
description = "Tracking of system metrics";
license = lib.licenses.bsd3;
hydraPlatforms = lib.platforms.none;
maintainers = with lib.maintainers; [ lassulus ];
broken = true;
}

View file

@ -1,46 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
base,
ekg-core,
fetchgit,
hspec,
lib,
text,
unordered-containers,
vector,
}:
mkDerivation {
pname = "ekg-json";
version = "0.1.0.7";
src = fetchgit {
url = "https://github.com/hasura/ekg-json.git";
sha256 = "17kd2f1695dmf5l95iz1w86hapc4f1gfrd0ld3ivffa2q5vxbi70";
rev = "d1c5031b49a5559cf4b4f6beb0238b872890a48c";
fetchSubmodules = true;
};
libraryHaskellDepends = [
aeson
base
ekg-core
text
unordered-containers
vector
];
testHaskellDepends = [
aeson
base
ekg-core
hspec
text
unordered-containers
];
homepage = "https://github.com/tibbe/ekg-json";
description = "JSON encoding of ekg metrics";
license = lib.licenses.bsd3;
hydraPlatforms = lib.platforms.none;
maintainers = with lib.maintainers; [ lassulus ];
broken = true;
}

View file

@ -1,406 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
aeson-casing,
aeson-qq,
ansi-wl-pprint,
asn1-encoding,
asn1-types,
async,
attoparsec,
attoparsec-iso8601,
auto-update,
base,
base16-bytestring,
base64-bytestring,
binary,
byteorder,
bytestring,
case-insensitive,
ci-info,
conduit,
connection,
containers,
cron,
cryptonite,
data-default-class,
data-has,
deepseq,
dependent-map,
dependent-sum,
directory,
either,
ekg-core,
ekg-json,
exceptions,
fast-logger,
fetchgit,
file-embed,
filepath,
ghc-heap-view,
graphql-parser,
hashable,
hashable-time,
haskell-src-meta,
hedgehog,
hspec,
hspec-core,
hspec-discover,
hspec-expectations,
hspec-expectations-lifted,
hspec-hedgehog,
hspec-wai,
hspec-wai-json,
http-api-data,
http-client,
http-client-tls,
http-conduit,
http-media,
http-types,
immortal,
insert-ordered-containers,
jose,
kan-extensions,
kriti-lang,
lens,
lens-aeson,
lib,
libyaml,
lifted-async,
lifted-base,
list-t,
memory,
mime-types,
mmorph,
monad-control,
monad-logger,
monad-loops,
monad-validate,
mtl,
mustache,
mysql,
mysql-simple,
natural-transformation,
network,
network-uri,
odbc,
openapi3,
optparse-applicative,
optparse-generic,
parsec,
pem,
pg-client,
postgresql-binary,
postgresql-libpq,
postgresql-simple,
pretty-simple,
process,
profunctors,
psqueues,
QuickCheck,
quickcheck-instances,
random,
regex-tdfa,
resource-pool,
resourcet,
retry,
safe,
safe-exceptions,
scientific,
semialign,
semigroups,
semver,
shakespeare,
some,
split,
Spock-core,
stm,
stm-containers,
tagged,
template-haskell,
text,
text-builder,
text-conversions,
th-lift,
th-lift-instances,
these,
time,
tls,
tmp-postgres,
transformers,
transformers-base,
typed-process,
unix,
unliftio-core,
unordered-containers,
uri-bytestring,
uri-encode,
url,
utf8-string,
uuid,
validation,
vector,
vector-instances,
wai,
wai-extra,
warp,
websockets,
witch,
wreq,
x509,
x509-store,
x509-system,
x509-validation,
yaml,
zlib,
}:
mkDerivation {
pname = "graphql-engine";
version = "1.0.0";
src = fetchgit {
url = "https://github.com/hasura/graphql-engine.git";
sha256 = "1r19qw2wxzmngb6sjpin3dk6i5r491brcb0ir4g8kw9d0ic90hpy";
rev = "1349e6cdcfdef4b06593b48fe8e2e51b9f9c94e9";
fetchSubmodules = true;
};
postUnpack = "sourceRoot+=/server; echo source root reset to $sourceRoot";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson
aeson-casing
ansi-wl-pprint
asn1-encoding
asn1-types
async
attoparsec
attoparsec-iso8601
auto-update
base
base16-bytestring
base64-bytestring
binary
byteorder
bytestring
case-insensitive
ci-info
connection
containers
cron
cryptonite
data-default-class
data-has
deepseq
dependent-map
dependent-sum
directory
either
ekg-core
ekg-json
exceptions
fast-logger
file-embed
filepath
ghc-heap-view
graphql-parser
hashable
hashable-time
http-api-data
http-client
http-client-tls
http-conduit
http-media
http-types
immortal
insert-ordered-containers
jose
kan-extensions
kriti-lang
lens
lens-aeson
lifted-async
lifted-base
list-t
memory
mime-types
mmorph
monad-control
monad-loops
monad-validate
mtl
mustache
mysql
mysql-simple
network
network-uri
odbc
openapi3
optparse-applicative
optparse-generic
parsec
pem
pg-client
postgresql-binary
postgresql-libpq
pretty-simple
process
profunctors
psqueues
QuickCheck
quickcheck-instances
random
regex-tdfa
resource-pool
retry
safe-exceptions
scientific
semialign
semigroups
semver
shakespeare
some
split
Spock-core
stm
stm-containers
tagged
template-haskell
text
text-builder
text-conversions
these
time
tls
transformers
transformers-base
unix
unordered-containers
uri-bytestring
uri-encode
url
utf8-string
uuid
validation
vector
vector-instances
wai
warp
websockets
witch
wreq
x509
x509-store
x509-system
x509-validation
yaml
zlib
];
executableHaskellDepends = [
base
bytestring
ekg-core
kan-extensions
pg-client
text
text-conversions
time
unix
];
testHaskellDepends = [
aeson
aeson-casing
aeson-qq
async
base
bytestring
case-insensitive
conduit
containers
cron
dependent-map
dependent-sum
ekg-core
exceptions
graphql-parser
haskell-src-meta
hedgehog
hspec
hspec-core
hspec-discover
hspec-expectations
hspec-expectations-lifted
hspec-hedgehog
hspec-wai
hspec-wai-json
http-client
http-client-tls
http-conduit
http-types
insert-ordered-containers
jose
kan-extensions
lens
lens-aeson
libyaml
lifted-base
mmorph
monad-control
monad-logger
mtl
mysql
mysql-simple
natural-transformation
network
network-uri
odbc
optparse-applicative
parsec
pg-client
postgresql-libpq
postgresql-simple
process
QuickCheck
resource-pool
resourcet
safe
safe-exceptions
scientific
shakespeare
split
Spock-core
stm
template-haskell
text
text-conversions
th-lift
th-lift-instances
time
tmp-postgres
transformers
transformers-base
typed-process
unix
unliftio-core
unordered-containers
utf8-string
vector
wai
wai-extra
warp
websockets
yaml
];
testToolDepends = [ hspec-discover ];
doCheck = false;
homepage = "https://www.hasura.io";
description = "GraphQL API over Postgres";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ lassulus ];
# Needs to be updated for aeson-2.0
# https://github.com/hasura/graphql-engine/issues/8369
hydraPlatforms = lib.platforms.none;
broken = true;
}

View file

@ -1,74 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
attoparsec,
base,
bytestring,
deepseq,
fetchgit,
hashable,
hedgehog,
lib,
prettyprinter,
scientific,
tasty-bench,
template-haskell,
text,
text-builder,
th-lift-instances,
unordered-containers,
}:
mkDerivation {
pname = "graphql-parser";
version = "0.2.0.0";
src = fetchgit {
url = "https://github.com/hasura/graphql-parser-hs.git";
sha256 = "1xprr5wdhcfnbggkygz71v3za1mmkqv5mbm7h16kpsrhm1m9mpx8";
rev = "c311bc15b8d8cef28a846d1d81b0bcc1d59bd956";
fetchSubmodules = true;
};
libraryHaskellDepends = [
aeson
attoparsec
base
bytestring
deepseq
hashable
hedgehog
prettyprinter
scientific
template-haskell
text
text-builder
th-lift-instances
unordered-containers
];
testHaskellDepends = [
attoparsec
base
bytestring
hedgehog
prettyprinter
text
text-builder
];
benchmarkHaskellDepends = [
base
bytestring
prettyprinter
tasty-bench
text
text-builder
];
homepage = "https://github.com/hasura/graphql-parser-hs";
description = "Native Haskell GraphQL parser";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ lassulus ];
# Needs to be updated for aeson-2.0
# https://github.com/hasura/graphql-engine/issues/8369
hydraPlatforms = lib.platforms.none;
broken = true;
}

View file

@ -1,119 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
aeson-pretty,
alex,
array,
base,
bytestring,
containers,
directory,
fetchgit,
filepath,
generic-arbitrary,
happy,
hspec,
hspec-core,
hspec-golden,
lens,
lens-aeson,
lib,
megaparsec,
mtl,
network-uri,
optparse-applicative,
parsec,
parser-combinators,
pretty-simple,
prettyprinter,
QuickCheck,
raw-strings-qq,
safe-exceptions,
scientific,
text,
unordered-containers,
utf8-string,
vector,
}:
mkDerivation {
pname = "kriti-lang";
version = "0.3.1";
src = fetchgit {
url = "https://github.com/hasura/kriti-lang.git";
sha256 = "09v31xp8gkc0p0gfysxyd8yb7lyb1vpgzq8550h3s3msjbapr7pj";
rev = "0f0b153b93af5dc6c6e995c016ca4562e8438cec";
fetchSubmodules = true;
};
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson
array
base
bytestring
containers
lens
megaparsec
mtl
network-uri
optparse-applicative
parser-combinators
prettyprinter
scientific
text
unordered-containers
utf8-string
vector
];
libraryToolDepends = [
alex
happy
];
executableHaskellDepends = [
aeson
base
bytestring
containers
mtl
optparse-applicative
prettyprinter
text
utf8-string
];
testHaskellDepends = [
aeson
aeson-pretty
base
bytestring
containers
directory
filepath
generic-arbitrary
hspec
hspec-core
hspec-golden
lens
lens-aeson
mtl
optparse-applicative
parsec
pretty-simple
prettyprinter
QuickCheck
raw-strings-qq
safe-exceptions
scientific
text
unordered-containers
utf8-string
vector
];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ lassulus ];
# Does not compile with ghc-9.2
hydraPlatforms = lib.platforms.none;
broken = true;
}

View file

@ -1,100 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
aeson,
aeson-casing,
async,
attoparsec,
base,
bytestring,
ekg-core,
fetchgit,
file-embed,
hashable,
hashtables,
hasql,
hasql-pool,
hasql-transaction,
hspec,
lib,
mmorph,
monad-control,
mtl,
postgresql-binary,
postgresql-libpq,
resource-pool,
retry,
safe-exceptions,
scientific,
tasty-bench,
template-haskell,
text,
text-builder,
time,
transformers-base,
uuid,
vector,
}:
mkDerivation {
pname = "pg-client";
version = "0.1.0";
src = fetchgit {
url = "https://github.com/hasura/pg-client-hs.git";
sha256 = "0ga2bj0mfng25c8kxsvi8i13pnanbnhahxvbq8ijl0bysd41g7zi";
rev = "09b40ad8e5d16a78f5d91fe2306676f52caadbc8";
fetchSubmodules = true;
};
libraryHaskellDepends = [
aeson
aeson-casing
async
attoparsec
base
bytestring
ekg-core
hashable
hashtables
mmorph
monad-control
mtl
postgresql-binary
postgresql-libpq
resource-pool
retry
safe-exceptions
scientific
template-haskell
text
text-builder
time
transformers-base
uuid
vector
];
testHaskellDepends = [
async
base
bytestring
hspec
mtl
safe-exceptions
time
];
benchmarkHaskellDepends = [
base
bytestring
file-embed
hasql
hasql-pool
hasql-transaction
mtl
tasty-bench
text
];
homepage = "https://github.com/hasura/platform";
license = lib.licenses.asl20;
hydraPlatforms = lib.platforms.none;
maintainers = with lib.maintainers; [ lassulus ];
broken = true;
}

View file

@ -1,44 +0,0 @@
# This has been automatically generated by the script
# ./update.sh. This should not be changed by hand.
{
mkDerivation,
base,
fetchgit,
hashable,
hspec,
lib,
monad-control,
stm,
time,
transformers,
transformers-base,
vector,
}:
mkDerivation {
pname = "resource-pool";
version = "0.2.3.2";
src = fetchgit {
url = "https://github.com/hasura/pool.git";
sha256 = "02wa32fl5wq5fk59id54xmxiqjl564r4rhsc79xsgf2j2spj0v94";
rev = "dc56753338e7b61220a09bed0469c6dcc5e9fb52";
fetchSubmodules = true;
};
libraryHaskellDepends = [
base
hashable
monad-control
stm
time
transformers
transformers-base
vector
];
testHaskellDepends = [
base
hspec
];
homepage = "https://github.com/bos/pool";
description = "High-performance striped resource pooling implementation";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ lassulus ];
}

View file

@ -1,95 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p cabal2nix curl jq -I nixpkgs=.
#
# This script will update the hasura derivations to the latest version using
# cabal2nix.
#
# Note that you should always try building hasura graphql-engine after updating it here, since
# some of the overrides in pkgs/development/haskell/configuration-nix.nix may
# need to be updated/changed.
set -eo pipefail
# This is the directory of this update.sh script.
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# graphql-engine derivation created with cabal2nix.
engine_derivation_file="${script_dir}/graphql-engine.nix"
parser_derivation_file="${script_dir}/graphql-parser.nix"
ciinfo_derivation_file="${script_dir}/ci-info.nix"
pgclient_derivation_file="${script_dir}/pg-client.nix"
pool_derivation_file="${script_dir}/pool.nix"
ekgcore_derivation_file="${script_dir}/ekg-core.nix"
ekgjson_derivation_file="${script_dir}/ekg-json.nix"
kritilang_derivation_file="${script_dir}/kriti-lang.nix"
# TODO: get current revision of graphql-engine in Nixpkgs.
# old_version="$(sed -En 's/.*\bversion = "(.*?)".*/\1/p' "$engine_derivation_file")"
# This is the latest release version of graphql-engine on GitHub.
new_version=$(curl --silent "https://api.github.com/repos/hasura/graphql-engine/releases" | jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output)
echo "Running cabal2nix and outputting to ${engine_derivation_file}..."
echo "# This has been automatically generated by the script" > "$engine_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$engine_derivation_file"
cabal2nix --revision "$new_version" --subpath server --maintainer lassulus --no-check "https://github.com/hasura/graphql-engine.git" >> "$engine_derivation_file"
echo "Running cabal2nix and outputting to ${parser_derivation_file}..."
echo "# This has been automatically generated by the script" > "$parser_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$parser_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/graphql-parser-hs.git" >> "$parser_derivation_file"
echo "Running cabal2nix and outputting to ${ciinfo_derivation_file}..."
echo "# This has been automatically generated by the script" > "$ciinfo_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$ciinfo_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/ci-info-hs.git" >> "$ciinfo_derivation_file"
echo "Running cabal2nix and outputting to ${pgclient_derivation_file}..."
echo "# This has been automatically generated by the script" > "$pgclient_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$pgclient_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/pg-client-hs.git" >> "$pgclient_derivation_file"
echo "Running cabal2nix and outputting to ${pool_derivation_file}..."
echo "# This has been automatically generated by the script" > "$pool_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$pool_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/pool.git" >> "$pool_derivation_file"
echo "Running cabal2nix and outputting to ${ekgcore_derivation_file}..."
echo "# This has been automatically generated by the script" > "$ekgcore_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$ekgcore_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/ekg-core.git" >> "$ekgcore_derivation_file"
echo "Running cabal2nix and outputting to ${ekgjson_derivation_file}..."
echo "# This has been automatically generated by the script" > "$ekgjson_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$ekgjson_derivation_file"
cabal2nix --maintainer lassulus "https://github.com/hasura/ekg-json.git" >> "$ekgjson_derivation_file"
echo "Running cabal2nix and outputting to ${kritilang_derivation_file}..."
echo "# This has been automatically generated by the script" > "$kritilang_derivation_file"
echo "# ./update.sh. This should not be changed by hand." >> "$kritilang_derivation_file"
new_kritilang_version=$(curl --silent "https://api.github.com/repos/hasura/kriti-lang/tags" | jq '.[0].name' --raw-output)
cabal2nix --revision "$new_kritilang_version" --maintainer lassulus "https://github.com/hasura/kriti-lang.git" >> "$kritilang_derivation_file"
echo "###################"
echo "please update pkgs/servers/hasura/cli.nix vendorHash"
echo "please update pkgs/development/haskell-modules/configuration-common.nix graphql-engine version"
echo "###################"
echo "Finished."

View file

@ -52,7 +52,8 @@ mkDerivation {
# that only seems to affect Windows. We never build GHC natively on Windows. # that only seems to affect Windows. We never build GHC natively on Windows.
# https://gitlab.haskell.org/ghc/ghc/-/issues/24382 # https://gitlab.haskell.org/ghc/ghc/-/issues/24382
# https://gitlab.haskell.org/ghc/ghc/-/commit/a2c033cf82635c83f3107706634bebee43297b99 # https://gitlab.haskell.org/ghc/ghc/-/commit/a2c033cf82635c83f3107706634bebee43297b99
(lib.versionAtLeast ghcVersion "9.12" && lib.versionOlder ghcVersion "9.13"); (lib.versionAtLeast ghcVersion "9.6.7" && lib.versionOlder ghcVersion "9.7")
|| (lib.versionAtLeast ghcVersion "9.12" && lib.versionOlder ghcVersion "9.15");
isLibrary = false; isLibrary = false;
isExecutable = true; isExecutable = true;
executableHaskellDepends = executableHaskellDepends =

View file

@ -64,6 +64,6 @@ callPackage' ./hadrian.nix (
} }
// lib.optionalAttrs (lib.versionAtLeast ghcVersion "9.11") { // lib.optionalAttrs (lib.versionAtLeast ghcVersion "9.11") {
# See https://gitlab.haskell.org/ghc/ghc/-/commit/145a6477854d4003a07573d5e7ffa0c9a64ae29c # See https://gitlab.haskell.org/ghc/ghc/-/commit/145a6477854d4003a07573d5e7ffa0c9a64ae29c
Cabal = bootPkgs.Cabal_3_14_1_0; Cabal = bootPkgs.Cabal_3_14_1_1;
} }
) )

View file

@ -9,7 +9,9 @@
# Run # Run
# $ nix-instantiate --eval -E 'with import <nixpkgs> {}; builtins.attrNames pkgs.haskell.packages' # $ nix-instantiate --eval -E 'with import <nixpkgs> {}; builtins.attrNames pkgs.haskell.packages'
# to list for your nixpkgs version. # to list for your nixpkgs version.
supportedGhcVersions ? [ "96" ], supportedGhcVersions ? [
(lib.strings.replaceStrings [ "." ] [ "" ] (lib.versions.majorMinor haskellPackages.ghc.version))
],
# Whether to build hls with the dynamic run-time system. # Whether to build hls with the dynamic run-time system.
# See https://haskell-language-server.readthedocs.io/en/latest/troubleshooting.html#static-binaries for more information. # See https://haskell-language-server.readthedocs.io/en/latest/troubleshooting.html#static-binaries for more information.

View file

@ -1,10 +1,19 @@
{ buildGoModule, hasura-graphql-engine }: {
buildGoModule,
lib,
fetchFromGitHub,
}:
buildGoModule rec { buildGoModule rec {
pname = "hasura"; pname = "hasura";
version = hasura-graphql-engine.version; version = "2.3.1";
src = hasura-graphql-engine.src; src = fetchFromGitHub {
owner = "hasura";
repo = "graphql-engine";
rev = "v${version}";
sha256 = "1r19qw2wxzmngb6sjpin3dk6i5r491brcb0ir4g8kw9d0ic90hpy";
};
modRoot = "./cli"; modRoot = "./cli";
subPackages = [ "cmd/hasura" ]; subPackages = [ "cmd/hasura" ];
@ -28,7 +37,9 @@ buildGoModule rec {
''; '';
meta = { meta = {
inherit (hasura-graphql-engine.meta) license homepage maintainers; homepage = "https://www.hasura.io";
maintainers = [ lib.maintainers.lassulus ];
license = lib.licenses.asl20;
description = "Hasura GraphQL Engine CLI"; description = "Hasura GraphQL Engine CLI";
mainProgram = "hasura"; mainProgram = "hasura";
}; };

View file

@ -1,7 +1,7 @@
{ pkgs, haskellPackages }: { pkgs, haskellPackages }:
let let
drv = haskellPackages.vector; drv = haskellPackages.random;
docs = pkgs.haskell.lib.compose.documentationTarball drv; docs = pkgs.haskell.lib.compose.documentationTarball drv;
in in
@ -15,10 +15,10 @@ pkgs.runCommand "test haskell.lib.compose.documentationTarball"
tar xvzf "${docs}/${drv.name}-docs.tar.gz" tar xvzf "${docs}/${drv.name}-docs.tar.gz"
# Check for Haddock html # Check for Haddock html
find "${drv.name}-docs" | grep -q "Data-Vector.html" find "${drv.name}-docs" | grep -q "System-Random.html"
# Check for source html # Check for source html
find "${drv.name}-docs" | grep -q "src/Data.Vector.html" find "${drv.name}-docs" | grep -q "src/System.Random.html"
touch "$out" touch "$out"
'' ''

View file

@ -68,4 +68,8 @@
maintainers = allMaintainers; maintainers = allMaintainers;
inherit (cabal-install.meta) platforms; inherit (cabal-install.meta) platforms;
}; };
# `shellFor` adds a `buildCommand` (via `envFunc -> runCommandCC`), which
# overrides custom phases. To ensure this test's phases run, we remove
# that `buildCommand` from the derivation.
buildCommand = null;
}) })

View file

@ -1,121 +0,0 @@
{
stdenv,
lib,
fetchpatch,
mkDerivation,
fetchFromGitHub,
haskellPackages,
slither-analyzer,
}:
mkDerivation (
rec {
pname = "echidna";
version = "2.2.3";
src = fetchFromGitHub {
owner = "crytic";
repo = "echidna";
rev = "v${version}";
sha256 = "sha256-NJ2G6EkexYE4P3GD7PZ+lLEs1dqnoqIB2zfAOD5SQ8M=";
};
patches = [
# Support cross platform vty 6.x with vty-crossplatform
# https://github.com/crytic/echidna/pull/1290
(fetchpatch {
url = "https://github.com/crytic/echidna/commit/2913b027d7e793390ed489ef6a47d23ec9b3c800.patch";
hash = "sha256-5CGD9nDbDUTG869xUybWYSvGRsrm7JP7n0WMBNYfayw=";
})
];
isExecutable = true;
libraryToolDepends = with haskellPackages; [ haskellPackages.hpack ];
executableHaskellDepends = with haskellPackages; [
# package.yaml - dependencies
base
aeson
async
base16-bytestring
binary
bytestring
code-page
containers
data-bword
data-dword
deepseq
extra
directory
exceptions
filepath
hashable
hevm
html-entities
ListLike
MonadRandom
mtl
optparse-applicative
optics
optics-core
process
random
rosezipper
semver
split
text
transformers
time
unliftio
utf8-string
vector
with-utf8
word-wrap
yaml
http-conduit
html-conduit
warp
wai-extra
xml-conduit
strip-ansi-escape
# package.yaml - dependencies when "!os(windows)"
brick
unix
vty
];
# Note: there is also a runtime dependency of slither-analyzer. So, let's include it.
executableSystemDepends = [ slither-analyzer ];
preConfigure = ''
hpack
'';
shellHook = "hpack";
doHaddock = false;
# tests depend on a specific version of solc
doCheck = false;
description = "Ethereum smart contract fuzzer";
homepage = "https://github.com/crytic/echidna";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [
arturcygan
hellwolf
];
platforms = lib.platforms.unix;
mainProgram = "echidna-test";
}
// lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) {
# https://github.com/NixOS/nixpkgs/pull/304352
postInstall = with haskellPackages; ''
remove-references-to -t ${warp.out} "$out/bin/echidna"
remove-references-to -t ${wreq.out} "$out/bin/echidna"
'';
}
)

View file

@ -815,6 +815,7 @@ mapAliases {
hacksaw = throw "'hacksaw' has been removed due to lack of upstream maintenance"; # Added 2025-01-25 hacksaw = throw "'hacksaw' has been removed due to lack of upstream maintenance"; # Added 2025-01-25
haka = throw "haka has been removed because it failed to build and was unmaintained for 9 years"; # Added 2025-03-11 haka = throw "haka has been removed because it failed to build and was unmaintained for 9 years"; # Added 2025-03-11
hardinfo = throw "'hardinfo' has been removed as it was abandoned upstream. Consider using 'hardinfo2' instead."; # added 2025-04-17 hardinfo = throw "'hardinfo' has been removed as it was abandoned upstream. Consider using 'hardinfo2' instead."; # added 2025-04-17
hasura-graphql-engine = throw "hasura-graphql-engine has been removed because was broken and its packaging severly out of date"; # Added 2025-02-14
haven-cli = throw "'haven-cli' has been removed due to the official announcement of the project closure. Read more at https://havenprotocol.org/2024/12/12/project-closure-announcement"; # Added 2025-02-25 haven-cli = throw "'haven-cli' has been removed due to the official announcement of the project closure. Read more at https://havenprotocol.org/2024/12/12/project-closure-announcement"; # Added 2025-02-25
HentaiAtHome = hentai-at-home; # Added 2024-06-12 HentaiAtHome = hentai-at-home; # Added 2024-06-12
hll2390dw-cups = throw "The hll2390dw-cups package was dropped since it was unmaintained."; # Added 2024-06-21 hll2390dw-cups = throw "The hll2390dw-cups package was dropped since it was unmaintained."; # Added 2024-06-21

View file

@ -1825,10 +1825,6 @@ with pkgs;
dkimpy = with python3Packages; toPythonApplication dkimpy; dkimpy = with python3Packages; toPythonApplication dkimpy;
echidna = haskell.lib.compose.justStaticExecutables (
haskellPackages.callPackage ../tools/security/echidna { }
);
esbuild = callPackage ../development/tools/esbuild { }; esbuild = callPackage ../development/tools/esbuild { };
esbuild_netlify = callPackage ../development/tools/esbuild/netlify.nix { }; esbuild_netlify = callPackage ../development/tools/esbuild/netlify.nix { };
@ -4400,10 +4396,6 @@ with pkgs;
pakcs = callPackage ../development/compilers/pakcs { }; pakcs = callPackage ../development/compilers/pakcs { };
pandoc_3_6 = callPackage ../by-name/pa/pandoc/package.nix {
selectPandocCLI = (p: p.pandoc-cli_3_6);
};
paperwork = callPackage ../applications/office/paperwork/paperwork-gtk.nix { }; paperwork = callPackage ../applications/office/paperwork/paperwork-gtk.nix { };
parallel = callPackage ../tools/misc/parallel { }; parallel = callPackage ../tools/misc/parallel { };
@ -5934,9 +5926,9 @@ with pkgs;
haskell.packages.native-bignum.ghc94 haskell.packages.native-bignum.ghc94
# JS backend can't use gmp # JS backend can't use gmp
else if stdenv.hostPlatform.isGhcjs then else if stdenv.hostPlatform.isGhcjs then
haskell.packages.native-bignum.ghc96 haskell.packages.native-bignum.ghc98
else else
haskell.packages.ghc96 haskell.packages.ghc98
) )
// { // {
__recurseIntoDerivationForReleaseJobs = true; __recurseIntoDerivationForReleaseJobs = true;
@ -5959,9 +5951,9 @@ with pkgs;
haskell.compiler.native-bignum.ghc94 haskell.compiler.native-bignum.ghc94
# JS backend can't use GMP # JS backend can't use GMP
else if stdenv.targetPlatform.isGhcjs then else if stdenv.targetPlatform.isGhcjs then
haskell.compiler.native-bignum.ghc96 haskell.compiler.native-bignum.ghc98
else else
haskell.compiler.ghc96 haskell.compiler.ghc98
); );
alex = haskell.lib.compose.justStaticExecutables haskellPackages.alex; alex = haskell.lib.compose.justStaticExecutables haskellPackages.alex;
@ -6012,9 +6004,10 @@ with pkgs;
spicedb-zed = callPackage ../servers/spicedb/zed.nix { }; spicedb-zed = callPackage ../servers/spicedb/zed.nix { };
tamarin-prover = ( tamarin-prover = (
haskellPackages.callPackage ../applications/science/logic/tamarin-prover { callPackage ../applications/science/logic/tamarin-prover {
# NOTE: do not use the haskell packages 'graphviz' and 'maude' # 2025-03-07: dependency fclabels doesn't compile with GHC >= 9.8
inherit maude which; # https://github.com/sebastiaanvisser/fclabels/issues/46
haskellPackages = haskell.packages.ghc96;
graphviz = graphviz-nox; graphviz = graphviz-nox;
} }
); );
@ -11075,8 +11068,6 @@ with pkgs;
grafana = callPackage ../servers/monitoring/grafana { }; grafana = callPackage ../servers/monitoring/grafana { };
grafanaPlugins = callPackages ../servers/monitoring/grafana/plugins { }; grafanaPlugins = callPackages ../servers/monitoring/grafana/plugins { };
hasura-graphql-engine = haskell.lib.compose.justStaticExecutables haskell.packages.ghc810.graphql-engine;
hasura-cli = callPackage ../servers/hasura/cli.nix { }; hasura-cli = callPackage ../servers/hasura/cli.nix { };
inherit (callPackage ../servers/hbase { }) inherit (callPackage ../servers/hbase { })

View file

@ -135,51 +135,6 @@ in
llvmPackages = pkgs.llvmPackages_12; llvmPackages = pkgs.llvmPackages_12;
}; };
ghc90 = compiler.ghc902; ghc90 = compiler.ghc902;
ghc925 = callPackage ../development/compilers/ghc/9.2.5.nix {
bootPkgs =
if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc810
else
bb.packages.ghc8107Binary;
inherit (buildPackages.python311Packages) sphinx; # a distutils issue with 3.12
python3 = buildPackages.python311; # so that we don't have two of them
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghc926 = callPackage ../development/compilers/ghc/9.2.6.nix {
bootPkgs =
if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc810
else
bb.packages.ghc8107Binary;
inherit (buildPackages.python311Packages) sphinx; # a distutils issue with 3.12
python3 = buildPackages.python311; # so that we don't have two of them
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghc927 = callPackage ../development/compilers/ghc/9.2.7.nix {
bootPkgs =
if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc810
else
bb.packages.ghc8107Binary;
inherit (buildPackages.python311Packages) sphinx; # a distutils issue with 3.12
python3 = buildPackages.python311; # so that we don't have two of them
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghc928 = callPackage ../development/compilers/ghc/9.2.8.nix { ghc928 = callPackage ../development/compilers/ghc/9.2.8.nix {
bootPkgs = bootPkgs =
if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
@ -317,7 +272,25 @@ in
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_15; buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_15;
llvmPackages = pkgs.llvmPackages_15; llvmPackages = pkgs.llvmPackages_15;
}; };
ghc96 = compiler.ghc966; ghc967 = callPackage ../development/compilers/ghc/9.6.7.nix {
bootPkgs =
# For GHC 9.2 no armv7l bindists are available.
if stdenv.buildPlatform.isAarch32 then
bb.packages.ghc928
else if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc928
else
bb.packages.ghc924Binary;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
# Support range >= 11 && < 16
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_15;
llvmPackages = pkgs.llvmPackages_15;
};
ghc96 = compiler.ghc967;
ghc981 = callPackage ../development/compilers/ghc/9.8.1.nix { ghc981 = callPackage ../development/compilers/ghc/9.8.1.nix {
bootPkgs = bootPkgs =
# For GHC 9.6 no armv7l bindists are available. # For GHC 9.6 no armv7l bindists are available.
@ -432,7 +405,20 @@ in
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_19; buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_19;
llvmPackages = pkgs.llvmPackages_19; llvmPackages = pkgs.llvmPackages_19;
}; };
ghc912 = compiler.ghc9121; ghc9122 = callPackage ../development/compilers/ghc/9.12.2.nix {
bootPkgs =
# No suitable bindist packaged yet
bb.packages.ghc9101;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
# 2024-12-21: Support range >= 13 && < 20
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_19;
llvmPackages = pkgs.llvmPackages_19;
};
ghc912 = compiler.ghc9122;
ghcHEAD = callPackage ../development/compilers/ghc/head.nix { ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
bootPkgs = bootPkgs =
# No armv7l bindists are available. # No armv7l bindists are available.
@ -540,21 +526,6 @@ in
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.0.x.nix { }; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.0.x.nix { };
}; };
ghc90 = packages.ghc902; ghc90 = packages.ghc902;
ghc925 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc925;
ghc = bh.compiler.ghc925;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.2.x.nix { };
};
ghc926 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc926;
ghc = bh.compiler.ghc926;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.2.x.nix { };
};
ghc927 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc927;
ghc = bh.compiler.ghc927;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.2.x.nix { };
};
ghc928 = callPackage ../development/haskell-modules { ghc928 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc928; buildHaskellPackages = bh.packages.ghc928;
ghc = bh.compiler.ghc928; ghc = bh.compiler.ghc928;
@ -592,7 +563,12 @@ in
ghc = bh.compiler.ghc966; ghc = bh.compiler.ghc966;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.6.x.nix { }; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.6.x.nix { };
}; };
ghc96 = packages.ghc966; ghc967 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc967;
ghc = bh.compiler.ghc967;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.6.x.nix { };
};
ghc96 = packages.ghc967;
ghc981 = callPackage ../development/haskell-modules { ghc981 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc981; buildHaskellPackages = bh.packages.ghc981;
ghc = bh.compiler.ghc981; ghc = bh.compiler.ghc981;
@ -625,7 +601,12 @@ in
ghc = bh.compiler.ghc9121; ghc = bh.compiler.ghc9121;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.12.x.nix { }; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.12.x.nix { };
}; };
ghc912 = packages.ghc9121; ghc9122 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc9122;
ghc = bh.compiler.ghc9122;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.12.x.nix { };
};
ghc912 = packages.ghc9122;
ghcHEAD = callPackage ../development/haskell-modules { ghcHEAD = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghcHEAD; buildHaskellPackages = bh.packages.ghcHEAD;
ghc = bh.compiler.ghcHEAD; ghc = bh.compiler.ghcHEAD;

View file

@ -65,9 +65,6 @@ let
released = with compilerNames; [ released = with compilerNames; [
ghc8107 ghc8107
ghc902 ghc902
ghc925
ghc926
ghc927
ghc928 ghc928
ghc947 ghc947
ghc948 ghc948
@ -75,12 +72,14 @@ let
ghc964 ghc964
ghc965 ghc965
ghc966 ghc966
ghc967
ghc981 ghc981
ghc982 ghc982
ghc983 ghc983
ghc984 ghc984
ghc9101 ghc9101
ghc9121 # exclude ghc9121 due to severe miscompilation bug
ghc9122
]; ];
# packagePlatforms applied to `haskell.packages.*` # packagePlatforms applied to `haskell.packages.*`
@ -310,7 +309,6 @@ let
happy happy
haskell-ci haskell-ci
haskell-language-server haskell-language-server
hasura-graphql-engine
hci hci
hercules-ci-agent hercules-ci-agent
hinit hinit
@ -455,6 +453,7 @@ let
cabal2nix cabal2nix
terminfo # isn't bundled for cross terminfo # isn't bundled for cross
xhtml # isn't bundled for cross xhtml # isn't bundled for cross
postgrest
; ;
}; };
@ -467,6 +466,7 @@ let
cabal2nix cabal2nix
terminfo # isn't bundled for cross terminfo # isn't bundled for cross
xhtml # isn't bundled for cross xhtml # isn't bundled for cross
postgrest
; ;
}; };
@ -504,6 +504,16 @@ let
; ;
}; };
haskell.packages.ghc912 = {
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghc912)
ghc
hello
microlens
miso
reflex-dom
;
};
haskell.packages.ghcHEAD = { haskell.packages.ghcHEAD = {
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghcHEAD) inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghcHEAD)
ghc ghc
@ -554,16 +564,17 @@ let
# work with older compilers. # work with older compilers.
compilerNames.ghc8107 compilerNames.ghc8107
compilerNames.ghc902 compilerNames.ghc902
compilerNames.ghc925
compilerNames.ghc926
compilerNames.ghc927
compilerNames.ghc928 compilerNames.ghc928
compilerNames.ghc947 compilerNames.ghc947
compilerNames.ghc948 compilerNames.ghc948
] released; ] released;
Cabal_3_10_3_0 = released; Cabal_3_10_3_0 = lib.subtractLists [
# time < 1.13 conflicts with time == 1.14.*
compilerNames.ghc9121
compilerNames.ghc9122
] released;
Cabal_3_12_1_0 = released; Cabal_3_12_1_0 = released;
Cabal_3_14_1_0 = released; Cabal_3_14_1_1 = released;
cabal2nix = released; cabal2nix = released;
cabal2nix-unstable = released; cabal2nix-unstable = released;
funcmp = released; funcmp = released;
@ -572,12 +583,14 @@ let
compilerNames.ghc8107 compilerNames.ghc8107
# Support ceased as of 2.5.0.0 # Support ceased as of 2.5.0.0
compilerNames.ghc902 compilerNames.ghc902
# Support ceased as of 2.10.0.0
compilerNames.ghc928
] released; ] released;
hoogle = released; hoogle = released;
hlint = lib.subtractLists [ hlint = lib.subtractLists [
compilerNames.ghc902 compilerNames.ghc902
compilerNames.ghc9101 compilerNames.ghc9101
compilerNames.ghc9121 compilerNames.ghc9122
] released; ] released;
hpack = released; hpack = released;
hsdns = released; hsdns = released;
@ -596,16 +609,21 @@ let
ghc-lib-parser = released; ghc-lib-parser = released;
ghc-lib-parser-ex = released; ghc-lib-parser-ex = released;
ghc-source-gen = lib.subtractLists [ ghc-source-gen = lib.subtractLists [
compilerNames.ghc9121 compilerNames.ghc9122
] released; ] released;
ghc-tags = lib.subtractLists [ ghc-tags = lib.subtractLists [
compilerNames.ghc9121 compilerNames.ghc9122
] released; ] released;
hashable = released; hashable = released;
primitive = released; primitive = released;
semaphore-compat = [
# Compiler < 9.8 don't have the semaphore-compat core package, but
# requires unix >= 2.8.1.0 which implies GHC >= 9.6 for us.
compilerNames.ghc966
];
weeder = lib.subtractLists [ weeder = lib.subtractLists [
compilerNames.ghc9101 compilerNames.ghc9101
compilerNames.ghc9121 compilerNames.ghc9122
] released; ] released;
}) })
{ {
@ -671,16 +689,10 @@ let
jobs.pkgsMusl.haskell.compiler.ghc8107Binary jobs.pkgsMusl.haskell.compiler.ghc8107Binary
jobs.pkgsMusl.haskell.compiler.ghc8107 jobs.pkgsMusl.haskell.compiler.ghc8107
jobs.pkgsMusl.haskell.compiler.ghc902 jobs.pkgsMusl.haskell.compiler.ghc902
jobs.pkgsMusl.haskell.compiler.ghc925
jobs.pkgsMusl.haskell.compiler.ghc926
jobs.pkgsMusl.haskell.compiler.ghc927
jobs.pkgsMusl.haskell.compiler.ghc928 jobs.pkgsMusl.haskell.compiler.ghc928
jobs.pkgsMusl.haskell.compiler.ghcHEAD jobs.pkgsMusl.haskell.compiler.ghcHEAD
jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107 jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902 jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc925
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc926
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc927
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc928 jobs.pkgsMusl.haskell.compiler.native-bignum.ghc928
jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
]; ];

View file

@ -365,6 +365,7 @@ let
"ghc96" "ghc96"
"ghc98" "ghc98"
"ghc910" "ghc910"
"ghc912"
] ]
(compilerName: { (compilerName: {
inherit (packagePlatforms pkgs.haskell.packages.${compilerName}) inherit (packagePlatforms pkgs.haskell.packages.${compilerName})