File tree Expand file tree Collapse file tree 4 files changed +77
-6
lines changed
plugins/lsp/language-servers
tests/test-sources/plugins/lsp Expand file tree Collapse file tree 4 files changed +77
-6
lines changed Original file line number Diff line number Diff line change 55
55
lib . nixvim . mkMaybeUnpackagedOption "plugins.lsp.servers.${ name } .package" pkgs name
56
56
package ;
57
57
58
+ packageFallback = mkOption {
59
+ type = types . bool ;
60
+ default = false ;
61
+ description = ''
62
+ When enabled, the language server package will be added to the end of the `PATH` _(suffix)_ instead of the beginning _(prefix)_.
63
+
64
+ This can be useful if you want local versions of the language server (e.g. from a devshell) to override the nixvim version.
65
+ '' ;
66
+ } ;
67
+
58
68
cmd = mkOption {
59
69
type = with types ; nullOr ( listOf str ) ;
60
70
default =
148
158
} ;
149
159
150
160
config = lib . mkIf enabled {
151
- extraPackages = [ cfg . package ] ;
161
+ extraPackages = lib . optional ( ! cfg . packageFallback ) cfg . package ;
162
+ extraPackagesAfter = lib . optional cfg . packageFallback cfg . package ;
152
163
153
164
plugins . lsp . enabledServers = [
154
165
{
Original file line number Diff line number Diff line change 7
7
let
8
8
cfg = config . plugins . lsp . servers . hls ;
9
9
inherit ( lib ) types ;
10
+
11
+ ghcPackage = lib . optional ( cfg . installGhc == true ) cfg . ghcPackage ;
10
12
in
11
13
{
12
14
options . plugins . lsp . servers . hls = {
32
34
'' ;
33
35
} ;
34
36
35
- extraPackages = lib . optional ( cfg . installGhc == true ) cfg . ghcPackage ;
37
+ extraPackages = lib . optionals ( ! cfg . packageFallback ) ghcPackage ;
38
+ extraPackagesAfter = lib . optionals cfg . packageFallback ghcPackage ;
36
39
} ;
37
40
}
Original file line number Diff line number Diff line change 9
9
inherit ( lib ) mkPackageOption types ;
10
10
inherit ( lib . nixvim ) mkNullOrOption' ;
11
11
12
+ extraPackages =
13
+ lib . optional ( cfg . installCargo == true ) cfg . cargoPackage
14
+ ++ lib . optional ( cfg . installRustc == true ) cfg . rustcPackage
15
+ ++ lib . optional ( cfg . installRustfmt == true ) cfg . rustfmtPackage ;
16
+
12
17
in
13
18
{
14
19
options . plugins . lsp . servers . rust_analyzer = {
72
77
}
73
78
] ;
74
79
75
- extraPackages =
76
- lib . optional ( cfg . installCargo == true ) cfg . cargoPackage
77
- ++ lib . optional ( cfg . installRustc == true ) cfg . rustcPackage
78
- ++ lib . optional ( cfg . installRustfmt == true ) cfg . rustfmtPackage ;
80
+ extraPackages = lib . optionals ( ! cfg . packageFallback ) extraPackages ;
81
+ extraPackagesAfter = lib . optionals cfg . packageFallback extraPackages ;
79
82
} ;
80
83
}
Original file line number Diff line number Diff line change 265
265
}
266
266
] ;
267
267
} ;
268
+
269
+ package-fallback =
270
+ { config , ... } :
271
+ {
272
+ test . buildNixvim = false ;
273
+
274
+ plugins . lsp = {
275
+ enable = true ;
276
+ servers = {
277
+ nil_ls = {
278
+ enable = true ;
279
+
280
+ packageFallback = true ;
281
+ } ;
282
+ rust_analyzer = {
283
+ enable = true ;
284
+
285
+ installCargo = true ;
286
+ installRustc = true ;
287
+
288
+ packageFallback = true ;
289
+ } ;
290
+ hls = {
291
+ enable = true ;
292
+
293
+ installGhc = true ;
294
+ packageFallback = true ;
295
+ } ;
296
+ } ;
297
+ } ;
298
+
299
+ assertions =
300
+ let
301
+ assertAfter = name : pkg : [
302
+ {
303
+ assertion = lib . all ( x : x != pkg ) config . extraPackages ;
304
+ message = "Expected `${ name } ` not to be in extraPackages" ;
305
+ }
306
+ {
307
+ assertion = lib . any ( x : x == pkg ) config . extraPackagesAfter ;
308
+ message = "Expected `${ name } ` to be in extraPackagesAfter" ;
309
+ }
310
+ ] ;
311
+ in
312
+ with config . plugins . lsp . servers ;
313
+ (
314
+ assertAfter "nil" nil_ls . package
315
+ ++ assertAfter "rust-analyzer" rust_analyzer . package
316
+ ++ assertAfter "cargo" rust_analyzer . cargoPackage
317
+ ++ assertAfter "rustc" rust_analyzer . rustcPackage
318
+ ++ assertAfter "haskell-language-server" hls . package
319
+ ++ assertAfter "ghc" hls . ghcPackage
320
+ ) ;
321
+ } ;
268
322
}
You can’t perform that action at this time.
0 commit comments