|
237 | 237 | };
|
238 | 238 |
|
239 | 239 | mkDevShell = hpkgs: cabalProject: with pkgs; mkShell {
|
| 240 | + name = "haskell-language-server-dev-ghc${hpkgs.ghc.version}"; |
240 | 241 | # For theses tools packages, we use ghcDefault
|
241 | 242 | # This removes a rebuild with a different GHC version
|
242 | 243 | # Theses programs are tools, used as binary, independently of the
|
|
298 | 299 | let simpleShell = mkDevShell hpkgs cabalProject;
|
299 | 300 | in
|
300 | 301 | hpkgs.shellFor {
|
| 302 | + name = "haskell-language-server-dev-nix-ghc${hpkgs.ghc.version}"; |
301 | 303 | inherit (simpleShell) shellHook buildInputs;
|
302 | 304 |
|
303 | 305 | doBenchmark = true;
|
|
313 | 315 | # Copied from https://github.com/NixOS/nixpkgs/blob/210784b7c8f3d926b7db73bdad085f4dc5d79418/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix#L16
|
314 | 316 | mkExe = hpkgs:
|
315 | 317 | with pkgs.haskell.lib;
|
316 |
| - justStaticExecutables (overrideCabal hpkgs.haskell-language-server |
| 318 | + (justStaticExecutables (overrideCabal hpkgs.haskell-language-server |
317 | 319 | (_: {
|
318 | 320 | postInstall = ''
|
319 | 321 | remove-references-to -t ${hpkgs.ghc} $out/bin/haskell-language-server
|
|
322 | 324 | remove-references-to -t ${hpkgs.js-dgtable.data} $out/bin/haskell-language-server
|
323 | 325 | remove-references-to -t ${hpkgs.js-flot.data} $out/bin/haskell-language-server
|
324 | 326 | '';
|
325 |
| - })); |
| 327 | + }))).overrideAttrs(old: { |
| 328 | + pname = old.pname + "-ghc${hpkgs.ghc.version}"; |
| 329 | + }); |
326 | 330 | in with pkgs; rec {
|
327 | 331 |
|
328 | 332 | devShells = {
|
|
339 | 343 | haskell-language-server-921-dev-nix = mkDevShellWithNixDeps ghc921 "cabal-ghc921.project";
|
340 | 344 | };
|
341 | 345 |
|
342 |
| - packages = { |
| 346 | + allPackages = { |
343 | 347 | haskell-language-server = mkExe ghcDefault;
|
344 | 348 | haskell-language-server-884 = mkExe ghc884;
|
345 | 349 | haskell-language-server-8107 = mkExe ghc8107;
|
346 | 350 | haskell-language-server-901 = mkExe ghc901;
|
347 | 351 | haskell-language-server-921 = mkExe ghc921;
|
| 352 | + }; |
| 353 | + |
| 354 | + packages = allPackages // { |
| 355 | + # See https://github.com/NixOS/nix/issues/5591 |
| 356 | + # nix flake cannot build a list/set of derivation in one command. |
| 357 | + # Using a linkFarmFromDrvs, I'm creating a unique entry point to |
| 358 | + # build all HLS versions. |
| 359 | + # This is used in CI to test and populate cache for packages |
| 360 | + # distributed using nix. |
| 361 | + all-haskell-language-server = linkFarmFromDrvs "all-haskell-language-server" (lib.unique (builtins.attrValues allPackages)); |
| 362 | + |
| 363 | + # Same for all shells |
| 364 | + all-dev-shells = linkFarmFromDrvs "all-dev-shells" (builtins.map (shell: shell.inputDerivation) (lib.unique (builtins.attrValues devShells))); |
348 | 365 |
|
349 |
| - # docs |
350 | 366 | docs = docs;
|
351 | 367 | };
|
352 | 368 |
|
|
0 commit comments