Merge pull request #100716 from NixOS/haskell-updates

Update Haskell package set to LTS 16.18 (plus other fixes)
gstqt5
Peter Simons 2020-10-16 22:34:52 +02:00 committed by GitHub
commit 50e986ba96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1534 additions and 627 deletions

View File

@ -359,6 +359,39 @@ services.hoogle = {
};
```
### How to install haskell-language-server
In short: Install `pkgs.haskell-language-server` and use the
`haskell-language-server-wrapper` command to run it. See the [hls
README](https://github.com/haskell/haskell-language-server) on how to configure
your text editor to use hls and how to test your setup.
Hls needs to be compiled with the ghc version of the project you use it on.
`pkgs.haskell-language-server` provides `haskell-language-server-wrapper`,
`haskell-language-server`, `haskell-language-server-x.x` and
`haskell-language-server-x.x.x` binaries, where `x.x.x` is the ghc version for
which it is compiled. By default it includes binaries for all ghc versions
that are provided in the binary caches. You can override that list with e.g.
```nix
pkgs.haskell-language-server.override { supportedGhcVersions = [ "884" "901" ]; }
```
When you run `haskell-language-server-wrapper` it will detect the ghc version
used by the project you are working on (by asking e.g. cabal or stack) and pick
the appropriate above mentioned binary from your path.
Be careful when installing hls globally and using a pinned nixpkgs for a Haskell
project in a nix-shell. If the nixpkgs versions deviate to much (e.g. use
different `glibc` versions) hls might fail. It is recommended to then install hls
in the nix-shell from the nixpkgs version pinned in there.
If you know, that you only use one ghc version, e.g. in a project specific
nix-shell You can either use an override as given above or simply install
`pkgs.haskellPackages.haskell-language-server` instead of the top-level
attribute `pkgs.haskell-language-server`.
### How to build a Haskell project using Stack
[Stack](http://haskellstack.org) is a popular build tool for Haskell projects.

View File

@ -77,6 +77,15 @@ self: super: {
hinotify = if pkgs.stdenv.isLinux then self.hinotify else self.fsnotify;
};
# Backport fix for bash: compgen: command not found
# which happens in nix-shell when a non-interactive bash is on PATH
# PR to master: https://github.com/pcapriotti/optparse-applicative/pull/408
optparse-applicative = appendPatch super.optparse-applicative (pkgs.fetchpatch {
name = "optparse-applicative-0.15.1-hercules-ci-compgen.diff";
url = "https://github.com/hercules-ci/optparse-applicative/compare/0.15.1...hercules-ci:0.15.1-nixpkgs-compgen.diff";
sha256 = "1bcp6b7gvc8pqbn1n1ybhizkkl5if7hk9ipgl746vk08v0d3xxql";
});
# Fix test trying to access /home directory
shell-conduit = overrideCabal super.shell-conduit (drv: {
postPatch = "sed -i s/home/tmp/ test/Spec.hs";
@ -137,6 +146,14 @@ self: super: {
then addBuildDepend super.halive pkgs.darwin.apple_sdk.frameworks.AppKit
else super.halive;
# Test suite fails due golden tests checking text representation
# of normalized dhall expressions, and newer dhall versions format
# differently.
hpack-dhall =
if pkgs.lib.versionOlder "0.5.2" super.hpack-dhall.version
then throw "Drop dontCheck override for hpack-dhall > 0.5.2"
else dontCheck super.hpack-dhall;
barbly = addBuildDepend super.barbly pkgs.darwin.apple_sdk.frameworks.AppKit;
# Hakyll's tests are broken on Darwin (3 failures); and they require util-linux
@ -1376,12 +1393,6 @@ self: super: {
# https://github.com/jgm/commonmark-hs/issues/55
commonmark-extensions = dontCheck super.commonmark-extensions;
# 2020-10-11: reflex-dom-pandoc and neuron require skylighting >= 9, which we
# cant support, because there is no pandoc release compatible with this.
reflex-dom-pandoc = doJailbreak super.reflex-dom-pandoc;
neuron = doJailbreak super.neuron;
# Testsuite trying to run `which haskeline-examples-Test`
haskeline_0_8_1_0 = dontCheck super.haskeline_0_8_1_0;
@ -1453,25 +1464,24 @@ self: super: {
cryptonite = doDistribute self.cryptonite_0_27;
# We want the latest version of Pandoc.
skylighting = doDistribute super.skylighting_0_10_0_2;
skylighting-core = doDistribute super.skylighting-core_0_10_0_2;
hslua = doDistribute self.hslua_1_1_2;
jira-wiki-markup = doDistribute self.jira-wiki-markup_1_3_2;
pandoc = doDistribute self.pandoc_2_10_1;
pandoc-citeproc = doDistribute self.pandoc-citeproc_0_17_0_2;
pandoc-types = doDistribute self.pandoc-types_1_21;
pandoc = doDistribute self.pandoc_2_11_0_2;
# jailbreaking pandoc-citeproc because it has not bumped upper bound on pandoc
pandoc-citeproc = doJailbreak (doDistribute self.pandoc-citeproc_0_17_0_2);
pandoc-types = doDistribute self.pandoc-types_1_22;
rfc5051 = doDistribute self.rfc5051_0_2;
# Upstream forgot to change the Cabal version bounds in the test suite.
# See: https://github.com/jaspervdj/stylish-haskell/pull/297
# Will be fixed whenever they next bump the version number
stylish-haskell = appendPatch super.stylish-haskell (pkgs.fetchpatch {
url = "https://github.com/jaspervdj/stylish-haskell/commit/9550aa1cd177aa6fe271d075177109d66a79e67f.patch";
sha256 = "1ffnbd2s4fx0ylnnlcyyag119yxb32p5r20b38l39lsa0jwv229f";
});
# The test suite attempts to read `/etc/resolv.conf`, which doesn't work in the sandbox.
domain-auth = dontCheck super.domain-auth;
# INSERT NEW OVERRIDES ABOVE THIS LINE
# stack-2.5.1 needs a more current version of pantry to compile
pantry = self.pantry_0_5_1_3;
# haskell-language-server needs a more current version of pantry to compile
} // (let
inherit (self) hls-ghcide hls-brittany;
hlsScopeOverride = self: super: {

View File

@ -129,4 +129,7 @@ self: super: {
executableHaskellDepends = drv.executableToolDepends or [] ++ [ self.repline ];
}));
# Break out of "Cabal < 3.2" constraint.
stylish-haskell = doJailbreak super.stylish-haskell;
}

View File

@ -72,7 +72,10 @@ default-package-overrides:
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
# not yet available in Nixpkgs
- gi-gdkx11 < 4
# LTS Haskell 16.17
# haskell-language-server 0.5.0.0 doesn't accept newer versions
- fourmolu ==0.2.*
- refinery ==0.2.*
# LTS Haskell 16.18
- abstract-deque ==0.3
- abstract-par ==0.3.3
- AC-Angle ==1.0
@ -378,14 +381,14 @@ default-package-overrides:
- bytestring-mmap ==0.2.2
- bytestring-strict-builder ==0.4.5.3
- bytestring-to-vector ==0.3.0.1
- bytestring-tree-builder ==0.2.7.4
- bytestring-tree-builder ==0.2.7.5
- bz2 ==1.0.0.1
- bzlib-conduit ==0.3.0.2
- c2hs ==0.28.6
- cabal-appimage ==0.3.0.0
- cabal-debian ==5.0.3
- cabal-doctest ==1.0.8
- cabal-rpm ==2.0.6
- cabal-rpm ==2.0.7
- cache ==0.1.3.0
- cacophony ==0.10.1
- calendar-recycling ==0.0.0.1
@ -803,7 +806,7 @@ default-package-overrides:
- flac-picture ==0.1.2
- flags-applicative ==0.1.0.2
- flat ==0.4.4
- flat-mcmc ==1.5.1
- flat-mcmc ==1.5.2
- FloatingHex ==0.4
- floatshow ==0.2.4
- flow ==1.0.21
@ -1011,7 +1014,7 @@ default-package-overrides:
- hasql-pool ==0.5.2
- hasql-transaction ==1.0.0.1
- hasty-hamiltonian ==1.3.3
- HaTeX ==3.22.2.0
- HaTeX ==3.22.3.0
- HaXml ==1.25.5
- haxr ==3000.11.4.1
- HCodecs ==0.5.2
@ -1092,7 +1095,7 @@ default-package-overrides:
- hslua-module-doclayout ==0.1.0
- hslua-module-system ==0.2.2
- hslua-module-text ==0.2.1
- HsOpenSSL ==0.11.4.19
- HsOpenSSL ==0.11.4.20
- hsp ==0.10.0
- hspec ==2.7.4
- hspec-attoparsec ==0.1.0.2
@ -1138,7 +1141,7 @@ default-package-overrides:
- http-client-tls ==0.3.5.3
- http-common ==0.8.2.1
- http-conduit ==2.3.7.3
- http-date ==0.0.9
- http-date ==0.0.10
- http-directory ==0.1.8
- http-download ==0.2.0.0
- httpd-shed ==0.4.1.1
@ -1153,7 +1156,7 @@ default-package-overrides:
- hunit-dejafu ==2.0.0.4
- hvect ==0.4.0.0
- hvega ==0.9.1.0
- hw-balancedparens ==0.4.1.0
- hw-balancedparens ==0.4.1.1
- hw-bits ==0.7.2.1
- hw-conduit ==0.2.1.0
- hw-conduit-merges ==0.2.1.0
@ -1244,7 +1247,7 @@ default-package-overrides:
- ipynb ==0.1.0.1
- ipython-kernel ==0.10.2.1
- irc ==0.6.1.0
- irc-client ==1.1.1.1
- irc-client ==1.1.2.0
- irc-conduit ==0.3.0.4
- irc-ctcp ==0.1.3.0
- isbn ==1.0.0.0
@ -1954,7 +1957,6 @@ default-package-overrides:
- serialise ==0.2.3.0
- servant ==0.16.2
- servant-auth ==0.3.2.0
- servant-auth-docs ==0.2.10.0
- servant-auth-server ==0.4.5.1
- servant-auth-swagger ==0.2.10.0
- servant-blaze ==0.9
@ -2010,7 +2012,7 @@ default-package-overrides:
- signal ==0.1.0.4
- silently ==1.2.5.1
- simple-affine-space ==0.1.1
- simple-cabal ==0.1.2
- simple-cabal ==0.1.3
- simple-cmd ==0.2.2
- simple-cmd-args ==0.1.6
- simple-log ==0.9.12
@ -2162,7 +2164,7 @@ default-package-overrides:
- tasty ==1.2.3
- tasty-ant-xml ==1.1.6
- tasty-dejafu ==2.0.0.6
- tasty-discover ==4.2.1
- tasty-discover ==4.2.2
- tasty-expected-failure ==0.11.1.2
- tasty-golden ==2.3.3.2
- tasty-hedgehog ==1.0.0.2
@ -2224,8 +2226,8 @@ default-package-overrides:
- th-desugar ==1.10
- th-env ==0.1.0.2
- these ==1.1.1.1
- these-lens ==1.0.0.1
- these-optics ==1
- these-lens ==1.0.1.1
- these-optics ==1.0.1.1
- th-expand-syns ==0.4.6.0
- th-extras ==0.0.0.4
- th-lift ==0.8.2
@ -2309,7 +2311,7 @@ default-package-overrides:
- type-map ==0.1.6.0
- type-natural ==0.8.3.1
- typenums ==0.1.2.1
- type-of-html ==1.5.1.0
- type-of-html ==1.5.2.0
- type-of-html-static ==0.1.0.2
- type-operators ==0.2.0.0
- typerep-map ==0.3.3.0
@ -3906,6 +3908,7 @@ broken-packages:
- cmv
- cnc-spec-compiler
- co-log
- co-log-polysemy-formatting
- co-log-sys
- Coadjute
- coalpit
@ -4235,7 +4238,6 @@ broken-packages:
- curve25519
- curves
- custom-prelude
- cut-the-crap
- CV
- cv-combinators
- cypher
@ -5690,6 +5692,7 @@ broken-packages:
- hakyll-filestore
- hakyll-images
- hakyll-ogmarkup
- hakyll-process
- hakyll-R
- hakyll-sass
- hakyll-series
@ -6358,7 +6361,6 @@ broken-packages:
- hp2any-graph
- hp2any-manager
- hpack-convert
- hpack-dhall
- hpaco
- hpaco-lib
- hpage
@ -7498,6 +7500,7 @@ broken-packages:
- lol-typing
- loli
- longboi
- longshot
- lookup-tables
- loop-effin
- loop-while
@ -7935,6 +7938,7 @@ broken-packages:
- mu-grpc-server
- mu-kafka
- mu-protobuf
- mu-servant-server
- MuCheck
- MuCheck-Hspec
- MuCheck-HUnit

View File

@ -645,6 +645,7 @@ self: super: builtins.intersectAttrs super {
# Tests require internet
http-download = dontCheck super.http-download;
pantry = dontCheck super.pantry;
pantry_0_5_1_3 = dontCheck super.pantry_0_5_1_3;
# gtk2hs-buildtools is listed in setupHaskellDepends, but we
# need it during the build itself, too.
@ -731,7 +732,7 @@ self: super: builtins.intersectAttrs super {
primitive = dontCheck super.primitive;
cut-the-crap =
let path = pkgs.stdenv.lib.makeBinPath [ pkgs.ffmpeg_3 ];
let path = pkgs.stdenv.lib.makeBinPath [ pkgs.ffmpeg_3 pkgs.youtube-dl ];
in overrideCabal (addBuildTool super.cut-the-crap pkgs.makeWrapper) (_drv: {
postInstall = ''
wrapProgram $out/bin/cut-the-crap \

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
{ lib, supportedGhcVersions ? [ "865" "884" "8102" ], stdenv, haskellPackages
, haskell }:
#
# The recommended way to override this package is
#
# pkgs.haskell-language-server.override { supportedGhcVersions = [ "901" ]; }
#
# for example. Read more about this in the haskell-language-server section of the nixpkgs manual.
#
let
inherit (lib) concatStringsSep concatMapStringsSep take splitString;
getPackages = version: haskell.packages."ghc${version}";
getMajorVersion = packages:
concatStringsSep "." (take 2 (splitString "." packages.ghc.version));
tunedHls = hsPkgs:
haskell.lib.justStaticExecutables
(haskell.lib.overrideCabal hsPkgs.haskell-language-server (old: {
postInstall = ''
remove-references-to -t ${hsPkgs.ghc} $out/bin/haskell-language-server
remove-references-to -t ${hsPkgs.shake.data} $out/bin/haskell-language-server
remove-references-to -t ${hsPkgs.js-jquery.data} $out/bin/haskell-language-server
remove-references-to -t ${hsPkgs.js-dgtable.data} $out/bin/haskell-language-server
remove-references-to -t ${hsPkgs.js-flot.data} $out/bin/haskell-language-server
'';
}));
targets = version:
let packages = getPackages version;
in [
"haskell-language-server-${packages.ghc.version}"
"haskell-language-server-${getMajorVersion packages}"
];
makeSymlinks = version:
concatMapStringsSep "\n" (x:
"ln -s ${
tunedHls (getPackages version)
}/bin/haskell-language-server $out/bin/${x}") (targets version);
pkg = tunedHls haskellPackages;
in stdenv.mkDerivation {
pname = "haskell-language-server";
version = haskellPackages.haskell-language-server.version;
buildCommand = ''
mkdir -p $out/bin
ln -s ${pkg}/bin/haskell-language-server $out/bin/haskell-language-server
ln -s ${pkg}/bin/haskell-language-server-wrapper $out/bin/haskell-language-server-wrapper
${concatMapStringsSep "\n" makeSymlinks supportedGhcVersions}
'';
meta = haskellPackages.haskell-language-server.meta // {
maintainers = [ lib.maintainers.maralorn ];
longDescription = ''
This package provides haskell-language-server, haskell-language-server-wrapper, ${
concatMapStringsSep ", " (x: concatStringsSep ", " (targets x))
supportedGhcVersions
}.
You can override the list supportedGhcVersions.
'';
};
}

View File

@ -4360,6 +4360,8 @@ in
hash-slinger = callPackage ../tools/security/hash-slinger { };
haskell-language-server = callPackage ../development/tools/haskell/haskell-language-server/withWrapper.nix { };
hasmail = callPackage ../applications/networking/mailreaders/hasmail { };
hal-flash = callPackage ../os-specific/linux/hal-flash { };