|
30 | 30 | overlay = final: prev:
|
31 | 31 | with prev;
|
32 | 32 | let
|
33 |
| - haskellOverrides = { |
34 |
| - overrides = hself: hsuper: { |
35 |
| - # we override mkDerivation here to apply the following |
36 |
| - # tweak to each haskell package: |
37 |
| - # if the package is broken, then we disable its check and relax the cabal bounds; |
38 |
| - # otherwise, we leave it unchanged. |
39 |
| - # hopefully, this could fix packages marked as broken by nix due to check failures |
40 |
| - # or the build failure because of tight cabal bounds |
41 |
| - mkDerivation = args: |
42 |
| - let |
43 |
| - broken = args.broken or false; |
44 |
| - check = args.doCheck or true; |
45 |
| - jailbreak = args.jailbreak or false; |
46 |
| - in hsuper.mkDerivation (args // { |
47 |
| - jailbreak = if broken then true else jailbreak; |
48 |
| - doCheck = if broken then false else check; |
49 |
| - }); |
50 |
| - }; |
| 33 | + haskellOverrides = hself: hsuper: { |
| 34 | + # we override mkDerivation here to apply the following |
| 35 | + # tweak to each haskell package: |
| 36 | + # if the package is broken, then we disable its check and relax the cabal bounds; |
| 37 | + # otherwise, we leave it unchanged. |
| 38 | + # hopefully, this could fix packages marked as broken by nix due to check failures |
| 39 | + # or the build failure because of tight cabal bounds |
| 40 | + mkDerivation = args: |
| 41 | + let |
| 42 | + broken = args.broken or false; |
| 43 | + check = args.doCheck or true; |
| 44 | + jailbreak = args.jailbreak or false; |
| 45 | + in hsuper.mkDerivation (args // { |
| 46 | + jailbreak = if broken then true else jailbreak; |
| 47 | + doCheck = if broken then false else check; |
| 48 | + }); |
51 | 49 | };
|
52 | 50 | gitignoreSource = (import gitignore { inherit lib; }).gitignoreSource;
|
53 | 51 |
|
|
91 | 89 | builtins.mapAttrs (_: dir: gitignoreSource dir) sourceDirs;
|
92 | 90 |
|
93 | 91 | extended = hpkgs:
|
94 |
| - (hpkgs.override haskellOverrides).extend (hself: hsuper: |
| 92 | + (hpkgs.override (old: { |
| 93 | + overrides = lib.composeExtensions (old.overrides or (_: _: { })) |
| 94 | + haskellOverrides; |
| 95 | + })).extend (hself: hsuper: |
95 | 96 | # disable all checks for our packages
|
96 | 97 | builtins.mapAttrs (_: drv: haskell.lib.dontCheck drv)
|
97 | 98 | (lib.composeExtensions
|
|
135 | 136 | hooks = {
|
136 | 137 | stylish-haskell.enable = true;
|
137 | 138 | # use stylish-haskell with our target ghc
|
138 |
| - stylish-haskell.entry = "${hpkgs.stylish-haskell}/bin/stylish-haskell --inplace"; |
| 139 | + stylish-haskell.entry = pkgs.lib.mkForce "${hpkgs.stylish-haskell}/bin/stylish-haskell --inplace"; |
139 | 140 | stylish-haskell.excludes = [
|
140 | 141 | # Ignored files
|
141 | 142 | "^Setup.hs$"
|
|
156 | 157 | };
|
157 | 158 | };
|
158 | 159 |
|
| 160 | + ghc901Config = (import ./configuration-ghc-901.nix) { inherit pkgs; }; |
| 161 | + |
159 | 162 | # GHC versions
|
160 | 163 | ghcDefault = pkgs.hlsHpkgs ("ghc"
|
161 | 164 | + pkgs.lib.replaceStrings [ "." ] [ "" ]
|
162 | 165 | pkgs.haskellPackages.ghc.version);
|
163 | 166 | ghc884 = pkgs.hlsHpkgs "ghc884";
|
164 | 167 | ghc8104 = pkgs.hlsHpkgs "ghc8104";
|
165 | 168 | ghc8105 = pkgs.hlsHpkgs "ghc8105";
|
166 |
| - ghc901 = pkgs.hlsHpkgs "ghc901"; |
| 169 | + ghc901 = ghc901Config.tweakHpkgs (pkgs.hlsHpkgs "ghc901"); |
167 | 170 |
|
168 | 171 | # Create a development shell of hls project
|
169 | 172 | # See https://github.com/NixOS/nixpkgs/blob/5d4a430472cafada97888cc80672fab255231f57/pkgs/development/haskell-modules/make-package-set.nix#L319
|
|
173 | 176 | doBenchmark = true;
|
174 | 177 | packages = p:
|
175 | 178 | with builtins;
|
176 |
| - map (name: p.${name}) (attrNames hlsSources); |
| 179 | + map (name: p.${name}) (attrNames |
| 180 | + (if hpkgs.ghc.version == "9.0.1" then |
| 181 | + removeAttrs hlsSources ghc901Config.disabledPlugins |
| 182 | + else |
| 183 | + hlsSources)); |
177 | 184 | buildInputs = [ gmp zlib ncurses capstone tracy (gen-hls-changelogs hpkgs) ]
|
178 | 185 | ++ (with hpkgs; [
|
179 | 186 | cabal-install
|
180 | 187 | hlint
|
181 |
| - ormolu |
182 |
| - stylish-haskell |
| 188 | + # ormolu |
| 189 | + # stylish-haskell |
183 | 190 | opentelemetry-extra
|
184 | 191 | ]);
|
185 | 192 |
|
|
188 | 195 | export LD_LIBRARY_PATH=${gmp}/lib:${zlib}/lib:${ncurses}/lib:${capstone}/lib
|
189 | 196 | export DYLD_LIBRARY_PATH=${gmp}/lib:${zlib}/lib:${ncurses}/lib:${capstone}/lib
|
190 | 197 | export PATH=$PATH:$HOME/.local/bin
|
191 |
| - ${(pre-commit-check hpkgs).shellHook} |
| 198 | + ${if hpkgs.ghc.version != "9.0.1" then (pre-commit-check hpkgs).shellHook else ""} |
192 | 199 | '';
|
193 | 200 | };
|
194 | 201 | # Create a hls executable
|
|
213 | 220 | haskell-language-server-884-dev = mkDevShell ghc884;
|
214 | 221 | haskell-language-server-8104-dev = mkDevShell ghc8104;
|
215 | 222 | haskell-language-server-8105-dev = mkDevShell ghc8105;
|
216 |
| - haskell-language-server-901-dev = builtins.throw "Nix expression for developing HLS in GHC 9.0.1 is not yet available"; # mkDevShell ghc901; |
| 223 | + haskell-language-server-901-dev = mkDevShell ghc901; |
217 | 224 |
|
218 | 225 | # hls package
|
219 | 226 | haskell-language-server = mkExe ghcDefault;
|
220 | 227 | haskell-language-server-884 = mkExe ghc884;
|
221 | 228 | haskell-language-server-8104 = mkExe ghc8104;
|
222 | 229 | haskell-language-server-8105 = mkExe ghc8105;
|
223 |
| - haskell-language-server-901 = builtins.throw "Nix expression for building HLS in GHC 9.0.1 is not yet available"; # mkExe ghc901; |
| 230 | + haskell-language-server-901 = mkExe ghc901; |
224 | 231 | };
|
225 | 232 |
|
226 | 233 | defaultPackage = packages.haskell-language-server;
|
|
0 commit comments