summary refs log tree commit diff
path: root/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix')
-rw-r--r--pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix36
1 files changed, 23 insertions, 13 deletions
diff --git a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix
index 2b5f6c4da80..8c8f016510f 100644
--- a/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix
+++ b/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix
@@ -1,5 +1,11 @@
-{ lib, supportedGhcVersions ? [ "884" "8107" "902" ], stdenv, haskellPackages
-, haskell }:
+{ lib
+, stdenv
+, supportedGhcVersions ? [ "884" "8107" "902" ]
+    ++ lib.optionals (!stdenv.hostPlatform.isAarch64) [ "921" ]
+, dynamic ? false
+, haskellPackages
+, haskell
+}:
 #
 # The recommended way to override this package is
 #
@@ -8,19 +14,23 @@
 # for example. Read more about this in the haskell-language-server section of the nixpkgs manual.
 #
 let
-  inherit (lib) concatStringsSep concatMapStringsSep take splitString;
+  inherit (lib) concatStringsSep concatMapStringsSep take splitString pipe optionals;
+  inherit (haskell.lib.compose) justStaticExecutables overrideCabal enableCabalFlag disableCabalFlag;
   getPackages = version: haskell.packages."ghc${version}";
   tunedHls = hsPkgs:
-    haskell.lib.compose.justStaticExecutables
-    (haskell.lib.compose.overrideCabal (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
-      '';
-    }) hsPkgs.haskell-language-server);
+    lib.pipe hsPkgs.haskell-language-server ([
+      (haskell.lib.compose.overrideCabal (old: {
+        enableSharedExecutables = dynamic;
+        ${if !dynamic then "postInstall" else null} = ''
+          ${old.postInstall or ""}
+
+          remove-references-to -t ${hsPkgs.ghc} $out/bin/haskell-language-server
+        '';
+      }))
+      ((if dynamic then enableCabalFlag else disableCabalFlag) "dynamic")
+    ] ++ optionals (!dynamic) [
+      justStaticExecutables
+    ]);
   targets = version:
     let packages = getPackages version;
     in [