mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-09-29 15:43:00 +00:00
haskell-language-server: reformat code a bit & document better
This commit is contained in:
parent
51ea6bf33c
commit
811db8c616
@ -1,9 +1,18 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, supportedGhcVersions ? [ "94" ]
|
|
||||||
, dynamic ? true
|
|
||||||
, haskellPackages
|
, haskellPackages
|
||||||
, haskell
|
, haskell
|
||||||
|
|
||||||
|
# Which GHC versions this hls can support.
|
||||||
|
# These are looked up in nixpkgs as `pkgs.haskell.packages."ghc${version}`.
|
||||||
|
# Run
|
||||||
|
# $ nix-instantiate --eval -E 'with import <nixpkgs> {}; builtins.attrNames pkgs.haskell.packages'
|
||||||
|
# to list for your nixpkgs version.
|
||||||
|
, supportedGhcVersions ? [ "94" ]
|
||||||
|
|
||||||
|
# Whether to build hls with the dynamic run-time system.
|
||||||
|
# See https://haskell-language-server.readthedocs.io/en/latest/troubleshooting.html#static-binaries for more information.
|
||||||
|
, dynamic ? true
|
||||||
}:
|
}:
|
||||||
#
|
#
|
||||||
# The recommended way to override this package is
|
# The recommended way to override this package is
|
||||||
@ -13,9 +22,15 @@
|
|||||||
# for example. Read more about this in the haskell-language-server section of the nixpkgs manual.
|
# for example. Read more about this in the haskell-language-server section of the nixpkgs manual.
|
||||||
#
|
#
|
||||||
let
|
let
|
||||||
inherit (lib) concatStringsSep concatMapStringsSep take splitString pipe optionals;
|
inherit (haskell.lib.compose)
|
||||||
inherit (haskell.lib.compose) justStaticExecutables overrideCabal enableCabalFlag disableCabalFlag;
|
justStaticExecutables
|
||||||
|
overrideCabal
|
||||||
|
enableCabalFlag
|
||||||
|
disableCabalFlag
|
||||||
|
;
|
||||||
|
|
||||||
getPackages = version: haskell.packages."ghc${version}";
|
getPackages = version: haskell.packages."ghc${version}";
|
||||||
|
|
||||||
tunedHls = hsPkgs:
|
tunedHls = hsPkgs:
|
||||||
lib.pipe hsPkgs.haskell-language-server ([
|
lib.pipe hsPkgs.haskell-language-server ([
|
||||||
(haskell.lib.compose.overrideCabal (old: {
|
(haskell.lib.compose.overrideCabal (old: {
|
||||||
@ -27,32 +42,40 @@ let
|
|||||||
'';
|
'';
|
||||||
}))
|
}))
|
||||||
((if dynamic then enableCabalFlag else disableCabalFlag) "dynamic")
|
((if dynamic then enableCabalFlag else disableCabalFlag) "dynamic")
|
||||||
] ++ optionals (!dynamic) [
|
]
|
||||||
|
++ lib.optionals (!dynamic) [
|
||||||
justStaticExecutables
|
justStaticExecutables
|
||||||
]);
|
]);
|
||||||
|
|
||||||
targets = version:
|
targets = version:
|
||||||
let packages = getPackages version;
|
let packages = getPackages version;
|
||||||
in [
|
in [ "haskell-language-server-${packages.ghc.version}" ];
|
||||||
"haskell-language-server-${packages.ghc.version}"
|
|
||||||
];
|
|
||||||
makeSymlinks = version:
|
makeSymlinks = version:
|
||||||
concatMapStringsSep "\n" (x:
|
lib.concatMapStringsSep "\n"
|
||||||
"ln -s ${
|
(x:
|
||||||
tunedHls (getPackages version)
|
"ln -s ${
|
||||||
}/bin/haskell-language-server $out/bin/${x}") (targets version);
|
tunedHls (getPackages version)
|
||||||
in assert supportedGhcVersions != []; stdenv.mkDerivation {
|
}/bin/haskell-language-server $out/bin/${x}")
|
||||||
|
(targets version);
|
||||||
|
|
||||||
|
in
|
||||||
|
assert supportedGhcVersions != []; stdenv.mkDerivation
|
||||||
|
{
|
||||||
pname = "haskell-language-server";
|
pname = "haskell-language-server";
|
||||||
version = haskellPackages.haskell-language-server.version;
|
version = haskellPackages.haskell-language-server.version;
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
ln -s ${tunedHls (getPackages (builtins.head supportedGhcVersions))}/bin/haskell-language-server-wrapper $out/bin/haskell-language-server-wrapper
|
ln -s ${tunedHls (getPackages (builtins.head supportedGhcVersions))}/bin/haskell-language-server-wrapper $out/bin/haskell-language-server-wrapper
|
||||||
${concatMapStringsSep "\n" makeSymlinks supportedGhcVersions}
|
${lib.concatMapStringsSep "\n" makeSymlinks supportedGhcVersions}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = haskellPackages.haskell-language-server.meta // {
|
meta = haskellPackages.haskell-language-server.meta // {
|
||||||
maintainers = [ lib.maintainers.maralorn ];
|
maintainers = [ lib.maintainers.maralorn ];
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
This package provides the executables ${
|
This package provides the executables ${
|
||||||
concatMapStringsSep ", " (x: concatStringsSep ", " (targets x))
|
lib.concatMapStringsSep ", " (x: lib.concatStringsSep ", " (targets x))
|
||||||
supportedGhcVersions
|
supportedGhcVersions
|
||||||
} and haskell-language-server-wrapper.
|
} and haskell-language-server-wrapper.
|
||||||
You can choose for which ghc versions to install hls with pkgs.haskell-language-server.override { supportedGhcVersions = [ "90" "92" ]; }.
|
You can choose for which ghc versions to install hls with pkgs.haskell-language-server.override { supportedGhcVersions = [ "90" "92" ]; }.
|
||||||
|
Loading…
Reference in New Issue
Block a user