Skip to content

Commit 04ba213

Browse files
committed
add support for haskell-language-server 0.3.0.0
1 parent efc6d92 commit 04ba213

File tree

4 files changed

+152
-0
lines changed

4 files changed

+152
-0
lines changed

default.nix

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
, haskellOverlaysPre ? []
1515
, haskellOverlaysPost ? haskellOverlays
1616
, hideDeprecated ? false # The moral equivalent of "-Wcompat -Werror" for using reflex-platform.
17+
, hlsSupport ? false
1718
}:
1819
let iosSupport = system == "x86_64-darwin";
1920
androidSupport = lib.elem system [ "x86_64-linux" ];
@@ -396,6 +397,10 @@ in let this = rec {
396397
pkgconfig
397398
closurecompiler
398399
;
400+
} // lib.optionalAttrs hlsSupport {
401+
haskell-language-server = nixpkgs.haskell.lib.justStaticExecutables (nativeHaskellPackages.override {
402+
overrides = nixpkgs.haskell.overlays.haskell-language-server;
403+
}).haskell-language-server;
399404
};
400405

401406
workOn = haskellPackages: package: (overrideCabal package (drv: {

haskell-overlays/default.nix

+7
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@ rec {
151151
inherit nixpkgs;
152152
};
153153

154+
haskell-language-server = import ./haskell-language-server {
155+
inherit haskellLib;
156+
inherit fetchFromGitHub;
157+
inherit nixpkgs;
158+
inherit thunkSet;
159+
};
160+
154161
wasm = import ./wasm;
155162

156163
user-custom-pre = foldExtensions haskellOverlaysPre;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{ haskellLib
2+
, fetchFromGitHub
3+
, nixpkgs
4+
, thunkSet
5+
}:
6+
with haskellLib;
7+
let
8+
9+
localDeps = thunkSet ./dep;
10+
hlsSrc = localDeps.haskell-language-server;
11+
12+
hieSrc = hlsSrc + "/submodules/hie";
13+
hiePluginApiSrc = hlsSrc + "/hie-plugin-api";
14+
hieCompatSrc = hlsSrc + "/hie-compat";
15+
ghcideSrc = hlsSrc + "/ghcide";
16+
ghcModSrc = hlsSrc + "/submodules/ghc-mod";
17+
ghcProjectTypesSrc = ghcModSrc + "/ghc-project-types";
18+
ghcModCoreSrc = ghcModSrc + "/core";
19+
HaReSrc = hlsSrc + "/submodules/HaRe";
20+
cabalHelperSrc = hlsSrc + "/submodules/cabal-helper";
21+
hlsClassPluginSrc = hlsSrc + "/plugins/hls-class-plugin";
22+
hlsEvalPluginSrc = hlsSrc + "/plugins/hls-eval-plugin";
23+
hlsExplicitImportsPluginSrc = hlsSrc + "/plugins/hls-explicit-imports-plugin";
24+
hlsHlintPluginSrc = hlsSrc + "/plugins/hls-hlint-plugin";
25+
hlsPluginApiSrc = hlsSrc + "/hls-plugin-api";
26+
hlsRetriePluginSrc = hlsSrc + "/plugins/hls-retrie-plugin";
27+
hlsTacticsPluginSrc = hlsSrc + "/plugins/tactics";
28+
shakeBenchSrc = hlsSrc + "/shake-bench";
29+
30+
in self: super: {
31+
_dep = super._dep or {} // localDeps;
32+
33+
haskell-language-server = justStaticExecutables (dontCheck (self.callCabal2nix "haskell-language-server" hlsSrc {}));
34+
35+
# Source dependencies of haskell-language-server
36+
cabal-helper = dontCheck (self.callCabal2nix "cabal-helper" cabalHelperSrc {});
37+
ghcide = dontCheck (self.callCabal2nix "ghcide" ghcideSrc {});
38+
ghc-mod-core = dontCheck (self.callCabal2nix "ghc-mod-core" ghcModCoreSrc {});
39+
ghc-mod = dontCheck (self.callCabal2nix "ghc-mod" ghcModSrc {});
40+
ghc-project-types = dontCheck (self.callCabal2nix "ghc-project-types" ghcProjectTypesSrc {});
41+
HaRe = dontCheck (self.callCabal2nix "HaRe" HaReSrc {});
42+
haskell-ide-engine = dontCheck (self.callCabal2nix "haskell-ide-engine" hieSrc {});
43+
hie-compat = dontCheck (self.callCabal2nix "hie-compat" hieCompatSrc {});
44+
hie-plugin-api = dontCheck (self.callCabal2nix "hie-ide-engine" hiePluginApiSrc {});
45+
hls-class-plugin = dontCheck (self.callCabal2nix "hls-class-plugin" hlsClassPluginSrc {});
46+
hls-eval-plugin = dontCheck (self.callCabal2nix "hls-eval-plugin" hlsEvalPluginSrc {});
47+
hls-explicit-imports-plugin = dontCheck (self.callCabal2nix "hls-explicit-imports-plugin" hlsExplicitImportsPluginSrc {});
48+
hls-hlint-plugin = dontCheck (self.callCabal2nix "hls-hlint-plugin" hlsHlintPluginSrc {});
49+
hls-plugin-api = dontCheck (self.callCabal2nix "hls-plugin-api" hlsPluginApiSrc {});
50+
hls-retrie-plugin = dontCheck (self.callCabal2nix "hls-retrie-plugin" hlsRetriePluginSrc {});
51+
hls-tactics-plugin = dontCheck (self.callCabal2nix "hls-tactics-plugin" hlsTacticsPluginSrc {});
52+
shake-bench = dontCheck (self.callCabal2nix "shake-bench" shakeBenchSrc {});
53+
54+
# Hackage dependencies of haskell-language-server
55+
fourmolu = dontCheck (self.callHackage "fourmolu" "0.3.0.0" {});
56+
ormolu = dontCheck (self.callHackage "ormolu" "0.1.4.1" {});
57+
with-utf8 = dontCheck (self.callHackage "with-utf8" "1.0.2.1" {});
58+
stylish-haskell = dontCheck (self.callHackage "stylish-haskell" "0.12.2.0" {});
59+
hie-bios = dontCheck (self.callHackage "hie-bios" "0.7.1" {});
60+
brittany = dontCheck (self.callCabal2nix "brittany" (fetchGit {url = "https://github.com/lspitzner/brittany.git"; ref = "0.13.1.0";}) {});
61+
62+
# Hackage dependencies of haskell-language-server that are broken with the default version
63+
floskell = dontCheck (self.callHackage "floskell" "0.10.4" {});
64+
65+
# Hackage dependencies of ghcide
66+
ghc-check = dontCheck (self.callHackage "ghc-check" "0.5.0.3" {});
67+
implicit-hie-cradle = dontCheck (self.callCabal2nix "implicit-hie-cradle" (fetchGit {url = "https://github.com/Avi-D-coder/implicit-hie-cradle.git"; ref = "b42e38bdde93e7e6298bd83cfdf750414e15ec5e";}) {}); # 0.3.0.2 is not on hackage yet
68+
# implicit-hie-cradle = dontCheck (self.callHackage "implicit-hie-cradle" "0.3.0.2" {});
69+
opentelemetry = dontCheck (self.callHackage "opentelemetry" "0.6.1" {});
70+
lsp-test = dontCheck (self.callHackage "lsp-test" "0.11.0.5" {});
71+
heapsize = dontCheck (self.callCabal2nix "heapsize" (fetchGit {url = "https://github.com/pepeiborra/heapsize.git"; ref = "v0.3.0.1";}) {});
72+
shake = dontCheck (self.callHackage "shake" "0.19.2" {});
73+
74+
# opentelemetry
75+
ghc-trace-events = dontCheck (self.callHackage "ghc-trace-events" "0.1.2.1" {});
76+
77+
# Hackage dependencies of implicit-hie-cradle
78+
implicit-hie = dontCheck (self.callHackage "implicit-hie" "0.1.2.5" {});
79+
80+
# Hackage dependencies of floskell that are broken with the default version
81+
monad-dijkstra = dontCheck (self.callHackage "monad-dijkstra" "0.1.1.2" {});
82+
83+
# Hackage dependencies of fourmolu that are broken with the default version
84+
HsYAML-aeson = dontCheck (self.callHackage "HsYAML-aeson" "0.2.0.0" {});
85+
aeson = dontCheck (self.callHackage "aeson" "1.5.2.0" {});
86+
ghc-lib-parser = dontCheck (self.callHackage "ghc-lib-parser" "8.10.2.20200916" {});
87+
ghc-lib = dontCheck (self.callHackage "ghc-lib" "8.10.2.20200916" {});
88+
89+
# Hackage dependencies of hls-hlint-plugin
90+
ghc-lib-parser-ex = dontCheck (self.callHackage "ghc-lib-parser-ex" "8.10.0.16" {});
91+
92+
# Hackage dependencies of hls-retrie-plugin
93+
retrie = dontCheck (self.callHackage "retrie" "0.1.1.1" {});
94+
95+
# Hackage dependencies of retrie
96+
optparse-applicative = dontCheck (self.callHackage "optparse-applicative" "0.15.1.0" {});
97+
ghc-exactprint = dontCheck (self.callHackage "ghc-exactprint" "0.6.2" {});
98+
99+
# Hackage dependencies of aeson
100+
these = dontCheck (self.callHackage "these" "1.1.1.1" {});
101+
102+
# Hackage dependencies of ormolu
103+
ansi-terminal = dontCheck (self.callHackage "ansi-terminal" "0.10.3" {});
104+
ansi-wl-pprint = dontCheck (self.callHackage "ansi-wl-pprint" "0.6.9" {});
105+
Diff = dontCheck (self.callHackage "Diff" "0.4.0" {});
106+
107+
test-framework = dontCheck (self.callHackage "test-framework" "0.8.2.0" {});
108+
109+
# Hackage dependencies of heapsize
110+
hashable = dontCheck (self.callHackage "hashable" "1.3.0.0" {});
111+
112+
# Hackage dependencies of aeson
113+
primitive = dontCheck (self.callHackage "primitive" "0.7.1.0" {});
114+
115+
# Hackage dependencies of hls-plugin-api
116+
haskell-lsp = dontCheck (self.callHackage "haskell-lsp" "0.22.0.0" {});
117+
haskell-lsp-types = dontCheck (self.callHackage "haskell-lsp-types" "0.22.0.0" {});
118+
regex-tdfa = dontCheck (self.callHackage "regex-tdfa" "1.3.1.0" {});
119+
regex-base = dontCheck (self.callHackage "regex-base" "0.94.0.0" {});
120+
regex-posix = dontCheck (self.callHackage "regex-posix" "0.96.0.0" {});
121+
122+
tree-diff = dontCheck (self.callHackage "tree-diff" "0.1" {});
123+
parser-combinators = dontCheck (self.callHackage "parser-combinators" "1.2.1" {});
124+
125+
# Hackage dependencies of hls-hlint-plugin
126+
hlint = dontCheck (self.callHackage "hlint" "3.2.3" {});
127+
128+
# Hackage dependencies of hlint
129+
extra = dontCheck (self.callHackage "extra" "1.7.8" {});
130+
131+
# Hackage dependencies of hls-tactics-plugin
132+
refinery = dontCheck (self.callHackage "refinery" "0.3.0.0" {});
133+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"owner": "haskell",
3+
"repo": "haskell-language-server",
4+
"rev": "0.8.0",
5+
"sha256": "0p6fqs07lajbi2g1wf4w3j5lvwknnk58n12vlg48cs4iz25gp588",
6+
"fetchSubmodules": true
7+
}

0 commit comments

Comments
 (0)