mirror of
https://github.com/infinisil/all-hies.git
synced 2024-11-22 13:02:26 +03:00
115 lines
4.2 KiB
Markdown
115 lines
4.2 KiB
Markdown
# Deprecated
|
|
|
|
:warning: This project is deprecated. Refer to https://github.com/haskell/haskell-language-server instead, which is available from nixpkgs directly :warning:
|
|
|
|
# Haskell IDE Engine for Nix
|
|
|
|
This project provides cached Nix builds for [Haskell IDE Engine](https://github.com/haskell/haskell-ide-engine) for GHC 8.6.5 and 8.8.3.
|
|
|
|
## Installation
|
|
|
|
Installation is done with your projects nix-shell environment. Both [haskell.nix](https://input-output-hk.github.io/haskell.nix/) and the nixpkgs Haskell infrastructure are supported. If you don't have a nix-shell environment for your project yet, I recommend using haskell.nix.
|
|
|
|
If you just want to get started, see the [templates](./templates) for fully working example projects.
|
|
|
|
### haskell.nix Projects
|
|
|
|
In short, to install HIE for your haskell.nix project, apply the all-hies nixpkgs overlay and add `{ hie = "unstable"; }` to the `tools` argument of [`shellFor`](https://input-output-hk.github.io/haskell.nix/reference/library/#shellfor). If you want to use the prebuilt binaries, use the `all-hies` cachix. Read the rest of this section for more details.
|
|
|
|
Applying the overlay can be done as follows in a recent haskell.nix version
|
|
```nix
|
|
let
|
|
# Pin all-hies
|
|
all-hies = fetchTarball {
|
|
# Insert the desired all-hies commit here
|
|
url = "https://github.com/infinisil/all-hies/tarball/000000000000000000000000000000000000000";
|
|
# Insert the correct hash after the first evaluation
|
|
sha256 = "0000000000000000000000000000000000000000000000000000";
|
|
};
|
|
|
|
# Assuming nixpkgs and haskellNix are defined here
|
|
|
|
# Import nixpkgs with both haskell.nix's overlays and the all-hies one
|
|
pkgs = import nixpkgs (haskellNix.nixpkgsArgs // {
|
|
overlays = haskellNix.nixpkgsArgs.overlays ++ [
|
|
(import all-hies {}).overlay
|
|
];
|
|
});
|
|
|
|
/* ... */
|
|
in /* ... */
|
|
```
|
|
|
|
Adding HIE to the environment is done like this in your `shellFor` call
|
|
```nix
|
|
shellFor {
|
|
packages = p: [ p.my-package ];
|
|
tools = {
|
|
hie = "unstable";
|
|
};
|
|
}
|
|
```
|
|
|
|
Configuring the `all-hies` cachix can be done with [these instructions](https://all-hies.cachix.org/), or if you have cachix installed already:
|
|
```shell
|
|
$ cachix use all-hies
|
|
```
|
|
|
|
Note that for haskell.nix in general, `cachix use iohk` saves a lot of building time if you use the same nixpkgs as IOHK's CI.
|
|
|
|
See the [haskell.nix stack template](./templates/haskell.nix-stack) or [haskell.nix cabal template](./templates/haskell.nix-cabal) for a fully working example including a working stack/cabal version and a hoogle database.
|
|
|
|
### nixpkgs Haskell infrastructure
|
|
|
|
In short, to install HIE for your project using nixpkgs Haskell infrastructure, apply the all-hies overlay and add the `hie` Haskell package to the `nativeBuildInputs` argument of `shellFor`. If you want to use the prebuilt binaries, use the `all-hies` cachix. Read the rest of this section for more details.
|
|
|
|
Applying the overlay can be done as follows
|
|
```nix
|
|
let
|
|
# Pin all-hies
|
|
all-hies = fetchTarball {
|
|
# Insert the desired all-hies commit here
|
|
url = "https://github.com/infinisil/all-hies/tarball/000000000000000000000000000000000000000";
|
|
# Insert the correct hash after the first evaluation
|
|
sha256 = "0000000000000000000000000000000000000000000000000000";
|
|
};
|
|
|
|
# Assuming nixpkgs is defined here
|
|
|
|
# Import nixpkgs with the all-hies overlay
|
|
pkgs = import nixpkgs {
|
|
# Pass no config for purity
|
|
config = {};
|
|
overlays = [
|
|
(import all-hies {}).overlay
|
|
];
|
|
};
|
|
|
|
/* ... */
|
|
in /* ... */
|
|
```
|
|
|
|
Adding HIE to the environment is done like this in your `shellFor` call:
|
|
```nix
|
|
shellFor {
|
|
packages = p: [ p.my-package ];
|
|
nativeBuildInputs = [
|
|
haskellPackages.hie
|
|
];
|
|
}
|
|
```
|
|
|
|
If you don't use `shellFor`, you can change your Haskell environment derivation like this instead:
|
|
```nix
|
|
envWithHIE = env.overrideAttrs (old: {
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ haskellPackages.hie ];
|
|
})
|
|
```
|
|
|
|
Configuring the `all-hies` cachix can be done with [these instructions](https://all-hies.cachix.org/), or if you have cachix installed already:
|
|
```shell
|
|
$ cachix use all-hies
|
|
```
|
|
|
|
See the [nixpkgs infra template](./templates/nixpkgs-cabal) for a fully working example including a working cabal version and a hoogle database.
|