diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 2d599b24e738..e99d653d832b 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -2038,13 +2038,13 @@ self: super: { # 2021-08-18: streamly-posix was released with hspec 2.8.2, but it works with older versions too. streamly-posix = doJailbreak super.streamly-posix; - # 2021-09-13: hls 1.3 needs a newer lsp than stackage-lts. (lsp >= 1.2.0.1) + # 2021-09-13: hls 1.6 needs a newer lsp than stackage-lts. (lsp >= 1.2.0.1) # (hls is nearly the only consumer, but consists of 18 packages, so we bump lsp globally.) - lsp = doDistribute self.lsp_1_2_0_1; - lsp-types = doDistribute self.lsp-types_1_3_0_1; + lsp = doDistribute self.lsp_1_4_0_0; + lsp-types = doDistribute self.lsp-types_1_4_0_1; # Not running the "example" test because it requires a binary from lsps test # suite which is not part of the output of lsp. - lsp-test = doDistribute (overrideCabal (old: { testTarget = "tests func-test"; }) self.lsp-test_0_14_0_1); + lsp-test = doDistribute (overrideCabal (old: { testTarget = "tests func-test"; }) self.lsp-test_0_14_0_2); # 2021-09-14: Tests are flaky. hls-splice-plugin = dontCheck super.hls-splice-plugin; diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix index 819b8655f5e2..c628fe95f7c5 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix @@ -150,23 +150,14 @@ self: super: { # Fixes a bug triggered on GHC 9.0.1 text-short = self.text-short_0_1_5; - # 2021-09-18: The following plugins don‘t work yet on ghc9. - haskell-language-server = appendConfigureFlags [ - "-f-tactic" - "-f-splice" - "-f-refineimports" - "-f-class" + fourmolu = doJailbreak self.fourmolu_0_4_0_0; - "-f-fourmolu" + # 2022-02-05: The following plugins don‘t work yet on ghc9. + # Compare: https://haskell-language-server.readthedocs.io/en/latest/supported-versions.html + haskell-language-server = appendConfigureFlags [ "-f-brittany" "-f-stylishhaskell" ] (super.haskell-language-server.override { - hls-tactics-plugin = null; # No upstream support, generic-lens-core fail - hls-splice-plugin = null; # No upstream support in hls 1.4.0, should be fixed in 1.5 - hls-refine-imports-plugin = null; # same issue es splice-plugin - hls-class-plugin = null; # No upstream support - - hls-fourmolu-plugin = null; # No upstream support, needs new fourmolu release hls-stylish-haskell-plugin = null; # No upstream support hls-brittany-plugin = null; # Dependencies don't build with 9.0.1 }); diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix index b48b79b8bbc3..49bfd64324a9 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix @@ -138,7 +138,7 @@ self: super: { quickcheck-instances = super.quickcheck-instances_0_3_27; regex-posix = doJailbreak super.regex-posix; resolv = doJailbreak super.resolv; - retrie = doDistribute self.retrie_1_2_0_1; + retrie = doDistribute (dontCheck self.retrie_1_2_0_1); semialign = super.semialign_1_2_0_1; singleton-bool = doJailbreak super.singleton-bool; scientific = doJailbreak super.scientific; @@ -241,4 +241,37 @@ self: super: { # need bytestring >= 0.11 which is only bundled with GHC >= 9.2 regex-rure = doDistribute (markUnbroken super.regex-rure); jacinda = doDistribute super.jacinda; + some = doJailbreak super.some; + fourmolu = super.fourmolu_0_5_0_1; + implicit-hie-cradle = doJailbreak super.implicit-hie-cradle; + lucid = doJailbreak super.lucid; + hashtables = doJailbreak super.hashtables; + primitive-extras = super.primitive-extras_0_10_1_4; + hiedb = doJailbreak super.hiedb; + + # 2022-02-05: The following plugins don‘t work yet on ghc9.2. + # Compare: https://haskell-language-server.readthedocs.io/en/latest/supported-versions.html + haskell-language-server = appendConfigureFlags [ + "-f-alternateNumberFormat" + "-f-class" + "-f-eval" + "-f-haddockComments" + "-f-hlint" + "-f-retrie" + "-f-splice" + "-f-tactics" + "-f-brittany" + "-f-stylish-haskell" + ] (super.haskell-language-server.override { + hls-alternate-number-format-plugin = null; + hls-class-plugin = null; + hls-eval-plugin = null; + hls-haddock-comments-plugin = null; + hls-hlint-plugin = null; + hls-retrie-plugin = null; + hls-splice-plugin = null; + hls-tactics-plugin = null; + hls-brittany-plugin = null; + hls-stylish-haskell-plugin = null; + }); } diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml index 72c6cebb7bb4..56a6cb41cbaf 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml @@ -82,8 +82,6 @@ default-package-overrides: - reflex-dom-pandoc < 1.0.0.0 # 2021-09-07: pin to our current GHC version - ghc-api-compat == 8.10.7 - # 2021-09-14: Pin hiedb to version needed by ghcide - - hiedb == 0.4.0.* # 2021-10-13: weeder 2.3.0 require GHC == 9.0.*; remove pin when GHC version changes - weeder < 2.3.0 # 2021-10-10: taskwarrior 0.4 requires aeson > 2.0.1.0 @@ -169,10 +167,7 @@ extra-packages: - brick == 0.64.* # 2021-12-03: matterhorn depends on brick < 0.65 - path == 0.9.0 # 2021-12-03: path version building with stackage genvalidity and GHC 9.0.2 - ormolu == 0.3.* # 2021-12-03: for HLS with GHC 9.0.2 - # 2022-01-08 hls-plugin-api 1.2.0.2 needs lsp < 1.3, but newer than stackage - - lsp < 1.3 - - lsp-types < 1.4 - - lsp-test < 0.14.0.2 + - fourmolu == 0.4.* # 2022-02-05: for HLS with GHC 9.0.2 package-maintainers: abbradar: diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index 58a8aaa7fd43..2e753d3de807 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -804,90 +804,11 @@ self: super: builtins.intersectAttrs super { '' + drv.postInstall or ""; }) super.hlint; - hls-brittany-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-brittany-plugin; - hls-class-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-class-plugin; - hls-ormolu-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-ormolu-plugin; - hls-fourmolu-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-fourmolu-plugin; - hls-module-name-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-module-name-plugin; - hls-rename-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - '' + (drv.preCheck or ""); - }) super.hls-rename-plugin; - hls-splice-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-splice-plugin; - hls-floskell-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-floskell-plugin; - hls-pragmas-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-pragmas-plugin; - hls-hlint-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-hlint-plugin; hiedb = overrideCabal (drv: { preCheck = '' export PATH=$PWD/dist/build/hiedb:$PATH ''; }) super.hiedb; - hls-call-hierarchy-plugin = overrideCabal (drv: { - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-call-hierarchy-plugin; - # Tests have file permissions expections that don‘t work with the nix store. - hls-stylish-haskell-plugin = dontCheck super.hls-stylish-haskell-plugin; - hls-haddock-comments-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-haddock-comments-plugin; - hls-eval-plugin = overrideCabal (drv: { - testToolDepends = [ pkgs.git ]; - preCheck = '' - export HOME=$TMPDIR/home - ''; - }) super.hls-eval-plugin; taglib = overrideCabal (drv: { librarySystemDepends = [ @@ -1052,4 +973,33 @@ self: super: builtins.intersectAttrs super { install -Dm644 test/examples/*.jac -t "$docDir/examples" ''; }) super.jacinda; + +# haskell-language-server plugins all use the same test harness so we give them what we want in this loop. +} // pkgs.lib.mapAttrs + (_: overrideCabal (drv: { + testToolDepends = (drv.testToolDepends or [ ]) ++ [ pkgs.git ]; + preCheck = '' + export HOME=$TMPDIR/home + '' + (drv.preCheck or ""); + })) +{ + inherit (super) + hls-alternate-number-format-plugin + hls-brittany-plugin + hls-call-hierarchy-plugin + hls-class-plugin + hls-eval-plugin + hls-floskell-plugin + hls-fourmolu-plugin + hls-haddock-comments-plugin + hls-module-name-plugin + hls-ormolu-plugin + hls-pragmas-plugin + hls-qualify-imported-names-plugin + hls-rename-plugin + hls-selection-range-plugin + hls-splice-plugin; + # Tests have file permissions expections that don‘t work with the nix store. + hls-stylish-haskell-plugin = dontCheck super.hls-stylish-haskell-plugin; + hls-hlint-plugin = dontCheck super.hls-hlint-plugin; } diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix index a09aa177f047..cb57b7404f8e 100644 --- a/pkgs/development/haskell-modules/hackage-packages.nix +++ b/pkgs/development/haskell-modules/hackage-packages.nix @@ -98739,6 +98739,40 @@ self: { license = lib.licenses.bsd3; }) {}; + "fourmolu_0_4_0_0" = callPackage + ({ mkDerivation, aeson, ansi-terminal, base, bytestring, Cabal + , containers, Diff, directory, dlist, exceptions, filepath + , ghc-lib-parser, gitrev, hspec, hspec-discover, HsYAML + , HsYAML-aeson, mtl, optparse-applicative, path, path-io, syb + , temporary, text + }: + mkDerivation { + pname = "fourmolu"; + version = "0.4.0.0"; + sha256 = "1mq0h6nsl7ssfwh6zqhyja7w212vn8msmlm5iwwimca279hzwywb"; + revision = "1"; + editedCabalFile = "03bwhqj547brmgk191gy3k9xayi6fqqk2f5sbz3ail1bk7b73xnq"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson ansi-terminal base bytestring Cabal containers Diff directory + dlist exceptions filepath ghc-lib-parser HsYAML HsYAML-aeson mtl + syb text + ]; + executableHaskellDepends = [ + base directory filepath ghc-lib-parser gitrev optparse-applicative + text + ]; + testHaskellDepends = [ + base containers directory filepath hspec path path-io temporary + text + ]; + testToolDepends = [ hspec-discover ]; + description = "A formatter for Haskell source code"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + }) {}; + "fourmolu_0_5_0_1" = callPackage ({ mkDerivation, aeson, ansi-terminal, array, base, bytestring , Cabal, containers, Diff, directory, dlist, exceptions, filepath @@ -134292,31 +134326,6 @@ self: { }) {}; "hiedb" = callPackage - ({ mkDerivation, algebraic-graphs, ansi-terminal, array, base - , bytestring, containers, directory, extra, filepath, ghc - , ghc-paths, hie-compat, hspec, lucid, mtl, optparse-applicative - , process, sqlite-simple, temporary, terminal-size, text - }: - mkDerivation { - pname = "hiedb"; - version = "0.4.0.0"; - sha256 = "1frcl9mxmn97qc97l3kw21ksapyndn6jq7yfxxrr0fvzn7jji7wv"; - isLibrary = true; - isExecutable = true; - libraryHaskellDepends = [ - algebraic-graphs ansi-terminal array base bytestring containers - directory extra filepath ghc hie-compat lucid mtl - optparse-applicative sqlite-simple terminal-size text - ]; - executableHaskellDepends = [ base ghc-paths ]; - testHaskellDepends = [ - base directory filepath ghc ghc-paths hspec process temporary - ]; - description = "Generates a references DB from .hie files"; - license = lib.licenses.bsd3; - }) {}; - - "hiedb_0_4_1_0" = callPackage ({ mkDerivation, algebraic-graphs, ansi-terminal, array, base , bytestring, containers, directory, extra, filepath, ghc , ghc-paths, hie-compat, hspec, lucid, mtl, optparse-applicative @@ -134339,7 +134348,6 @@ self: { ]; description = "Generates a references DB from .hie files"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; }) {}; "hieraclus" = callPackage @@ -176741,39 +176749,6 @@ self: { license = lib.licenses.mit; }) {}; - "lsp_1_2_0_1" = callPackage - ({ mkDerivation, aeson, async, attoparsec, base, bytestring - , containers, data-default, dependent-map, exceptions, filepath - , hashable, hslogger, hspec, hspec-discover, lens, lsp-types, mtl - , network-uri, QuickCheck, quickcheck-instances, random - , rope-utf16-splay, scientific, sorted-list, stm, text, time - , transformers, unliftio-core, unordered-containers, uuid - }: - mkDerivation { - pname = "lsp"; - version = "1.2.0.1"; - sha256 = "1bdgbxakdyhkrddj58f0al2wrx1mckp6hia7hk2wqjix20my8v49"; - revision = "1"; - editedCabalFile = "193y4b3l6agm83ng2c0ngvd0j9a71q237g9i5v57p502lhzfaag2"; - isLibrary = true; - isExecutable = true; - libraryHaskellDepends = [ - aeson async attoparsec base bytestring containers data-default - dependent-map exceptions hashable hslogger lens lsp-types mtl - network-uri random scientific sorted-list stm text time - transformers unliftio-core unordered-containers uuid - ]; - testHaskellDepends = [ - aeson base containers filepath hspec lens network-uri QuickCheck - quickcheck-instances rope-utf16-splay sorted-list text - unordered-containers - ]; - testToolDepends = [ hspec-discover ]; - description = "Haskell library for the Microsoft Language Server Protocol"; - license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - }) {}; - "lsp_1_4_0_0" = callPackage ({ mkDerivation, aeson, async, attoparsec, base, bytestring , containers, data-default, exceptions, filepath, hashable @@ -176832,34 +176807,6 @@ self: { license = lib.licenses.bsd3; }) {}; - "lsp-test_0_14_0_1" = callPackage - ({ mkDerivation, aeson, aeson-pretty, ansi-terminal, async, base - , bytestring, conduit, conduit-parse, containers, data-default - , Diff, directory, extra, filepath, Glob, hspec, lens, lsp - , lsp-types, mtl, parser-combinators, process, some, text, time - , transformers, unix, unliftio, unordered-containers - }: - mkDerivation { - pname = "lsp-test"; - version = "0.14.0.1"; - sha256 = "0fr1812dnzv9hljb77khspaz666wqr6m1gj963v0z2j6xgvw2ipy"; - libraryHaskellDepends = [ - aeson aeson-pretty ansi-terminal async base bytestring conduit - conduit-parse containers data-default Diff directory filepath Glob - lens lsp-types mtl parser-combinators process some text time - transformers unix unordered-containers - ]; - testHaskellDepends = [ - aeson async base data-default directory filepath hspec lens lsp mtl - parser-combinators process text unliftio unordered-containers - ]; - testToolDepends = [ lsp ]; - benchmarkHaskellDepends = [ base extra lsp process ]; - description = "Functional test framework for LSP servers"; - license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - }) {}; - "lsp-test_0_14_0_2" = callPackage ({ mkDerivation, aeson, aeson-pretty, ansi-terminal, async, base , bytestring, conduit, conduit-parse, containers, data-default @@ -176911,30 +176858,6 @@ self: { license = lib.licenses.mit; }) {}; - "lsp-types_1_3_0_1" = callPackage - ({ mkDerivation, aeson, base, binary, bytestring, containers - , data-default, deepseq, dependent-sum, dependent-sum-template - , Diff, directory, dlist, filepath, hashable, hslogger, lens, mtl - , network-uri, rope-utf16-splay, scientific, some, template-haskell - , temporary, text, unordered-containers - }: - mkDerivation { - pname = "lsp-types"; - version = "1.3.0.1"; - sha256 = "05zgd99y7xnxnydisq5x24n1af2isar172p247hb5q0mp12hdd3z"; - revision = "1"; - editedCabalFile = "031b69fxi8m4fcwwgqb7cf4k806ikkmjqnn3wv6bn3sny1hn5gg7"; - libraryHaskellDepends = [ - aeson base binary bytestring containers data-default deepseq - dependent-sum dependent-sum-template Diff directory dlist filepath - hashable hslogger lens mtl network-uri rope-utf16-splay scientific - some template-haskell temporary text unordered-containers - ]; - description = "Haskell library for the Microsoft Language Server Protocol, data types"; - license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - }) {}; - "lsp-types_1_4_0_1" = callPackage ({ mkDerivation, aeson, base, binary, bytestring, containers , data-default, deepseq, Diff, directory, dlist, filepath, hashable diff --git a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix index 2b5f6c4da80e..99dacde2ea61 100644 --- a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix +++ b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix @@ -1,4 +1,4 @@ -{ lib, supportedGhcVersions ? [ "884" "8107" "902" ], stdenv, haskellPackages +{ lib, supportedGhcVersions ? [ "884" "8107" "902" "921" ], stdenv, haskellPackages , haskell }: # # The recommended way to override this package is diff --git a/pkgs/top-level/release-haskell.nix b/pkgs/top-level/release-haskell.nix index f006d5b2f111..82828a3d611e 100644 --- a/pkgs/top-level/release-haskell.nix +++ b/pkgs/top-level/release-haskell.nix @@ -311,11 +311,7 @@ let cabal2nix = released; cabal2nix-unstable = released; funcmp = released; - haskell-language-server = [ - compilerNames.ghc884 - compilerNames.ghc8107 - compilerNames.ghc902 - ]; + haskell-language-server = released; hoogle = released; hlint = released; hsdns = released;