mirror of
https://github.com/infinisil/all-hies.git
synced 2024-11-22 04:43:27 +03:00
Project revamp (#64)
* Remove update command Will be replaced with haskell.nix * Project revamp using haskell.nix - Only unstable HIE - Only GHC 8.6.5 and 8.8.3 (or more in the future), but on Linux for both glibc 2.27 (NixOS 19.09) and glibc 2.30 (NixOS 20.03/unstable) - Using haskell.nix for the builds. This makes evaluation slower, but makes things simpler overall. - No global installation intended anymore, instead you add HIE to your projects shell.nix file (to be documented in future commits) Co-authored-by: galagora <45048741+galagora@users.noreply.github.com> * Remove old files not needed anymore with the revamp * Add new haskell.nix-generated files * Add haskell.nix template * Add nixpkgs infra template * Build, push and test using GitHub Actions This builds and pushes all necessary configurations using GitHub Actions automatically. Also tests the templates * Update Readme for revamp * Add template documentation * Add warning for unsupported versions * Add haskell.nix + stack template * Minor Readme changes * Remove check-cache script * Don't CI on pushes to haskell.nix * Use same haskell.nix version for stack/cabal + cleanups Co-authored-by: galagora <45048741+galagora@users.noreply.github.com>
This commit is contained in:
parent
4b6aab017c
commit
b8fb659620
@ -1,10 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*.{sh,nix,hs}]
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8
|
||||
|
||||
|
180
.github/workflows/builds.yaml
vendored
Normal file
180
.github/workflows/builds.yaml
vendored
Normal file
@ -0,0 +1,180 @@
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
jobs:
|
||||
materialize-check:
|
||||
name: Check materialization files for GHC ${{ matrix.ghc }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
ghc: [ "8.6.5", "8.8.3" ]
|
||||
glibc: [ "2.30" ]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: cachix/install-nix-action@v10
|
||||
- name: Make sure materializations are up-to-date
|
||||
run: |
|
||||
materializationId=$(nix-instantiate --read-write-mode --eval sources.nix -A materializationId | tr -d '"')
|
||||
if ! diff "$materializationId" "generated/${{ matrix.ghc }}/materialization-id"; then
|
||||
echo "The materialization files for ${{ matrix.ghc }} are outdated"
|
||||
echo "Run"
|
||||
echo " \$(nix-build build.nix -A materialize --argstr ghcVersion ${{ matrix.ghc }} --argstr glibcName glibc-${{ matrix.glibc }})"
|
||||
echo "to update them"
|
||||
exit 1
|
||||
fi
|
||||
echo "Materialization files up-to-date" >&2
|
||||
|
||||
build:
|
||||
name: HIE Build for ${{ matrix.os }}, GHC ${{ matrix.ghc }}, glibc ${{ matrix.glibc }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: materialize-check
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest ]
|
||||
ghc: [ "8.6.5", "8.8.3" ]
|
||||
glibc: [ "2.30" ]
|
||||
include:
|
||||
# Only linux needs matching glibc versions
|
||||
- os: ubuntu-latest
|
||||
ghc: "8.6.5"
|
||||
glibc: "2.27"
|
||||
- os: ubuntu-latest
|
||||
ghc: "8.8.3"
|
||||
glibc: "2.27"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: cachix/install-nix-action@v10
|
||||
- uses: cachix/cachix-action@09c0620ab018415cbf1e6792e1f415cf892879b5
|
||||
with:
|
||||
name: all-hies
|
||||
extraPullNames: iohk
|
||||
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
|
||||
- name: Instantiate HIE
|
||||
run: |
|
||||
nix-instantiate build.nix \
|
||||
-A combined \
|
||||
--argstr ghcVersion ${{ matrix.ghc }} \
|
||||
--argstr glibcName glibc-${{ matrix.glibc }} \
|
||||
--add-root $PWD/drv --indirect
|
||||
- name: Build HIE
|
||||
run: |
|
||||
path=$(nix-store --query --outputs drv)
|
||||
url=$(sed -E <<< "$path" \
|
||||
-e 's|-.*|.narinfo|' \
|
||||
-e 's|/nix/store|https://all-hies.cachix.org|')
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}\n" "$url")
|
||||
case "$code" in
|
||||
200)
|
||||
echo "Derivation already in cache, not building it"
|
||||
;;
|
||||
*)
|
||||
echo "Derivation not in cache, building it"
|
||||
# Since we have a lot of derivations to build, do as many of them
|
||||
# in parallel, but all of them with a single core
|
||||
nix-store --realise drv --max-jobs auto --cores 1
|
||||
;;
|
||||
esac
|
||||
|
||||
template_haskell-nix-stack:
|
||||
name: Haskell.nix stack template for ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest ]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: templates/haskell.nix-stack
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: cachix/install-nix-action@v10
|
||||
- uses: cachix/cachix-action@09c0620ab018415cbf1e6792e1f415cf892879b5
|
||||
with:
|
||||
name: all-hies
|
||||
extraPullNames: iohk
|
||||
- name: Entering nix-shell
|
||||
run: |
|
||||
nix-shell --run "echo Successfully entered nix-shell"
|
||||
- name: Call HIE
|
||||
run: |
|
||||
nix-shell --run "hie 2>&1 | tee /dev/stderr | grep 'Main.hs: OK'"
|
||||
- name: Search hoogle
|
||||
run: |
|
||||
nix-shell --run "hoogle fromMaybe | grep Data.Maybe"
|
||||
- name: Build and run with cabal
|
||||
run: |
|
||||
nix-shell --run "stack run"
|
||||
- name: Build and run with Nix
|
||||
run: |
|
||||
nix-build
|
||||
./result/bin/all-hies-template
|
||||
|
||||
template_haskell-nix-cabal:
|
||||
name: Haskell.nix cabal template for ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest ]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: templates/haskell.nix-cabal
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: cachix/install-nix-action@v10
|
||||
- uses: cachix/cachix-action@09c0620ab018415cbf1e6792e1f415cf892879b5
|
||||
with:
|
||||
name: all-hies
|
||||
extraPullNames: iohk
|
||||
- name: Entering nix-shell
|
||||
run: |
|
||||
nix-shell --run "echo Successfully entered nix-shell"
|
||||
- name: Call HIE
|
||||
run: |
|
||||
nix-shell --run "hie 2>&1 | tee /dev/stderr | grep 'Main.hs: OK'"
|
||||
- name: Search hoogle
|
||||
run: |
|
||||
nix-shell --run "hoogle fromMaybe | grep Data.Maybe"
|
||||
- name: Build and run with cabal
|
||||
run: |
|
||||
nix-shell --run "cabal run"
|
||||
- name: Build and run with Nix
|
||||
run: |
|
||||
nix-build
|
||||
./result/bin/all-hies-template
|
||||
|
||||
template_nixpkgs-cabal:
|
||||
name: Nixpkgs cabal template for ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest ]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: templates/nixpkgs-cabal
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: cachix/install-nix-action@v10
|
||||
- uses: cachix/cachix-action@09c0620ab018415cbf1e6792e1f415cf892879b5
|
||||
with:
|
||||
name: all-hies
|
||||
- name: Entering nix-shell
|
||||
run: |
|
||||
nix-shell --run "echo Successfully entered nix-shell"
|
||||
- name: Call HIE
|
||||
run: |
|
||||
nix-shell --run "hie 2>&1 | tee /dev/stderr | grep 'Main.hs: OK'"
|
||||
- name: Search hoogle
|
||||
run: |
|
||||
nix-shell --run "hoogle fromMaybe | grep Data.Maybe"
|
||||
- name: Build and run with cabal
|
||||
run: |
|
||||
nix-shell --run "cabal run"
|
||||
- name: Build and run with Nix
|
||||
run: |
|
||||
nix-build
|
||||
./result/bin/all-hies-template
|
67
Design.org
67
Design.org
@ -1,67 +0,0 @@
|
||||
Assumptions:
|
||||
- The stack build does not depend on which nixpkgs version it uses, it only needs a matching ghc version
|
||||
|
||||
~/.cache/all-hies/ layout:
|
||||
|
||||
- haskell-ide-engine: HIE git repository
|
||||
- nixpkgs: nixpkgs git repository
|
||||
- history-nixpkgs-unstable: nixpkgs-unstable channel history from https://channels.nix.gsc.io/
|
||||
- per-ghcMinor: Files for specific minor GHC versions
|
||||
- <major><minor>: File with the list of base libraries for that ghc version
|
||||
- per-nixpkgs: Files for specific nixpkgs versions
|
||||
- ghcVersions: Which GHC versions a nixpkgs version has
|
||||
- <nixpkgsrev>: List of GHC versions nixpkgs revision <nixpkgsrev> has
|
||||
- sha256: The sha256 of the nixpkgs version tarball
|
||||
- <nixpkgsrev>: sha256
|
||||
- per-hie: Files for specific hie versions
|
||||
- <hie-rev>: Files for hie version <hie-rev>
|
||||
- <ghcVersion-stack2nix>.nix: File generated by stack2nix for <hie-rev> and its stack file for <ghcVersion>
|
||||
|
||||
./ (repository) layout:
|
||||
- generated: Files that can be deleted without worry, they'll be regenerated, if possible from the caches in ~/.cache/all-hies
|
||||
- stack2nix: Files generated by stack2nix
|
||||
- revision: HIE revision (tag if possible) for the generated files
|
||||
- <ghcVersion>.nix: stack2nix generated expression for HIE's <ghcVersion> stack file
|
||||
- nixpkgsHashes
|
||||
- <nixpkgsrev>: File containing the sha256 hash for nixpkgs version <nixpkgsrev>. This is to allow the Nix builds to download these versions.
|
||||
- ghcBaseLibraries:
|
||||
- <ghcVersion>: List of base libraries for that ghc version, used by Nix to set all of those to ~null~. Hack around https://github.com/input-output-hk/stack2nix/issues/134
|
||||
- nixpkgsForGhc
|
||||
- <ghcVersion>: File containing the nixpkgs rev to use for that GHC version. This way we can pin nixpkgs versions and don't need to recompile a lot when we change nixpkgs (because we never change a nixpkgs for a ghc version). This is checked in because generating this isn't deterministic.
|
||||
- overrides:
|
||||
- <ghcVersion>.nix: Haskell overrides for a specific GHC version, in order to make the build succeed. (Note: So far it doesn't seem that HIE version-specific overrides are needed, because of stack2nix).
|
||||
|
||||
|
||||
Process:
|
||||
- Update/initialize hie repo
|
||||
- Update/initialize nixpkgs repo
|
||||
- Remove ./generated
|
||||
- Get latest release (latest tag) and revision
|
||||
- Write tag to ./generated/stack2nix/revision
|
||||
- Checking out that hie version
|
||||
- For each stack file for a ghc version
|
||||
- Find a suitable nixpkgs revision for that ghc version
|
||||
- If ./nixpkgsForGhc/<ghcVersion> present, use that version
|
||||
- else
|
||||
- fetch nixpkgs-unstable history (or use cached version if <15 minutes ago)
|
||||
- for each channel nixpkgs revision (from newest to oldest)
|
||||
- Get ghc versions
|
||||
- If $CACHE/per-nixpkgs/ghcVersions/<revision> exists use that
|
||||
- Otherwise
|
||||
- Check out that nixpkgs version
|
||||
- Run nix evaluation to determine available compilers
|
||||
- Save result in $CACHE/per-nixpkgs/ghcVersions/<revision>
|
||||
- If it has the ghc version we need
|
||||
- Save that revision in ./nixpkgsForGhc/<ghcVersion>
|
||||
- revision found, exit channel history loop
|
||||
- Otherwise continue
|
||||
- If no fitting ghc version was found, log error
|
||||
- Calculate the sha256 for that nixpkgs version and cache it in $CACHE/per-nixpkgs/sha256/<revision>
|
||||
- Copy to ./generated/nixpkgsHashes
|
||||
- Generate the base libraries for that version into ./generated/ghcBaseLibraries
|
||||
- Check out the revision and run a nix built ghc binary to determine the list
|
||||
- Cache it into $CACHE/per-nixpkgs/per-ghcMinor/$major$minor
|
||||
- If ./generated/stack2nix/<ghcVersion> doesn't exist yet
|
||||
- Checking out that nixpkgs revision
|
||||
- Invoke stack2nix to generate $CACHE/per-hie/<rev>/<ghcVersion>.nix if it doesn't exist yet
|
||||
- Copy $CACHE/per-hie/<rev>/<ghcVersion>.nix to ./generated/stack2nix/<ghcVersion>.nix
|
103
Readme.md
Normal file
103
Readme.md
Normal file
@ -0,0 +1,103 @@
|
||||
# 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
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
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.
|
134
Readme.org
134
Readme.org
@ -1,134 +0,0 @@
|
||||
* Cached Haskell IDE Engine Nix builds for all GHC versions
|
||||
|
||||
This repository provides cached Nix builds for the latest stable [[https://github.com/haskell/haskell-ide-engine][Haskell IDE Engine]] (HIE) for all supported GHC versions. It is intended to be a successor to [[https://github.com/domenkozar/hie-nix][hie-nix]], which only provides a changing subset of versions. This project solves the problem of having mismatched HIE and project GHC versions, which is almost impossible to avoid if you use a globally installed HIE and have many projects.
|
||||
|
||||
For unstable versions see [[#unstable-versions][this section]].
|
||||
|
||||
** Installation
|
||||
|
||||
*** Cached builds
|
||||
|
||||
If you wish to use prebuilt binaries, available on both Linux and macOS, configure the ~all-hies~ cache with [[https://all-hies.cachix.org/][these instructions]], or if you have cachix installed already:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
cachix use all-hies
|
||||
#+END_SRC
|
||||
|
||||
Note: Due to an issue with cachix you might have to restart the nix daemon for this to take effect, refer to [[https://github.com/cachix/cachix/issues/188][this issue]].
|
||||
|
||||
After configuring the cache, proceed to the install instructions below.
|
||||
|
||||
*** Building without cached builds
|
||||
|
||||
On Linux and some versions of macOS, building HIE yourself is also possible and is in fact the default if you don't configure cachix as specified above. The build has a lot of dependencies however, so be prepared to wait a while for it to finish.
|
||||
|
||||
The only known macOS version to succeed in building all HIE versions is High Sierra, which was used to build the caches. MacOS Mojave specifically doesn't work for some HIE versions.
|
||||
|
||||
*** Declarative installation (NixOS, home-manager or similar)
|
||||
|
||||
This section describes installation with NixOS, but this is easily adaptable to [[https://github.com/rycee/home-manager][home-manager]] or other declarative installation methods by using the appropriate file and options. E.g. with home-manager, use =~/.config/nixpkgs/home.nix= instead of ~/etc/nixos/configuration.nix~ and assign to ~home.packages~ instead of ~environment.systemPackages~.
|
||||
|
||||
To install stable HIE for a specific set of GHC versions, use the following in your ~/etc/nixos/configuration.nix~. This will install ~hie~ and ~hie-wrapper~ binaries which are both HIE versions that select the correct version out of the given ones for your projects. Note that ~hie~ is just a symlink to ~hie-wrapper~.
|
||||
#+BEGIN_SRC nix
|
||||
let
|
||||
all-hies = import (fetchTarball "https://github.com/infinisil/all-hies/tarball/master") {};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
# Install stable HIE for GHC 8.6.4, 8.6.3 and 8.4.3
|
||||
(all-hies.selection { selector = p: { inherit (p) ghc864 ghc863 ghc843; }; })
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
|
||||
To install *all* stable HIE versions for all supported GHC versions use the following. Warning: Requires ~30GB (or <10GB with compression) of space!
|
||||
#+BEGIN_SRC nix
|
||||
let
|
||||
all-hies = import (fetchTarball "https://github.com/infinisil/all-hies/tarball/master") {};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
# Install all stable HIE versions
|
||||
(all-hies.selection { selector = p: p; })
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
|
||||
*** ~nix-env~ installation
|
||||
|
||||
To install stable HIE for a specific set of GHC versions use the following. This will install ~hie~ and ~hie-wrapper~ binaries which are both HIE versions that select the correct version out of the given ones for your projects. Note that ~hie~ is just a symlink to ~hie-wrapper~.
|
||||
#+BEGIN_SRC bash
|
||||
nix-env -iA selection --arg selector 'p: { inherit (p) ghc864 ghc863 ghc843; }' -f https://github.com/infinisil/all-hies/tarball/master
|
||||
#+END_SRC
|
||||
|
||||
To install *all* stable HIE versions for all supported GHC versions use the following. Warning: Requires ~30GB (or <10GB with compression) of space!
|
||||
#+BEGIN_SRC bash
|
||||
nix-env -iA selection --arg selector 'p: p' -f https://github.com/infinisil/all-hies/tarball/master
|
||||
#+END_SRC
|
||||
|
||||
*** Unstable versions
|
||||
|
||||
Sometimes unstable HIE versions are also provided but *without build caches*, so refer to the section on [[#building-without-cached-builds][building without cached builds]]. If no unstable version is provided the installation described here will be the same as the stable version.
|
||||
|
||||
If you just want to get a HIE version for a GHC that stable doesn't support yet, use the ~unstableFallback~ attribute, which uses stable if it's available for that GHC version, but falls back to unstable if not. For unstable versions only, use the ~unstable~ attribute. Both ~unstable~ and ~unstableFallback~ provide the ~selection~ function just like the standard stable set, so the installation is very similar:
|
||||
|
||||
**** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
let
|
||||
all-hies = import (fetchTarball "https://github.com/infinisil/all-hies/tarball/master") {};
|
||||
in {
|
||||
environment.systemPackages = [
|
||||
# Install stable HIE for GHC versions 8.6.4 and 8.6.5 if available and fall back to unstable otherwise
|
||||
(all-hies.unstableFallback.selection { selector = p: { inherit (p) ghc864 ghc865; }; })
|
||||
|
||||
# Install unstable HIE for GHC versions 8.4.4 and 8.6.5
|
||||
(all-hies.unstable.selection { selector = p: { inherit (p) ghc844 ghc865; }; })
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
|
||||
**** ~nix-env~
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
# Install stable HIE for GHC versions 8.6.4 and 8.6.5 if available and fall back to unstable otherwise
|
||||
nix-env -iA unstableFallback.selection --arg selector 'p: { inherit (p) ghc864 ghc865; }' -f https://github.com/infinisil/all-hies/tarball/master
|
||||
|
||||
# Install unstable HIE for GHC versions 8.4.4 and 8.6.5
|
||||
nix-env -iA unstable.selection --arg selector 'p: { inherit (p) ghc844 ghc865; }' -f https://github.com/infinisil/all-hies/tarball/master
|
||||
#+END_SRC
|
||||
|
||||
** Updating this repository
|
||||
|
||||
This section is only for all-hies developers and not intended for end users.
|
||||
|
||||
To have the updater available, run
|
||||
#+BEGIN_SRC bash
|
||||
alias update="$(nix-build --no-out-link update.nix)/bin/update"
|
||||
#+END_SRC
|
||||
|
||||
Then you can use it as follows to generate the stable/unstable set (or any other set)
|
||||
#+BEGIN_SRC bash
|
||||
update --name stable --revision 0.10.0.0
|
||||
update --name unstable --revision master
|
||||
update --name bios --revision hie-bios --hie-repo https://github.com/mpickering/haskell-ide-engine
|
||||
#+END_SRC
|
||||
|
||||
Then to build stable/unstable package sets on high-end machines with 32GB RAM or more, you can use
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
nix-build -A versions --max-jobs auto --cores 1
|
||||
nix-build -A unstable.versions --max-jobs auto --cores 1
|
||||
#+END_SRC
|
||||
|
||||
However if you don't have that much RAM, this leads to a lot of thrashing due to the many different dependencies between GHC versions. Use something like the following to prevent this (note that this uses the ~jq~ command from the ~jq~ package):
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
nix-instantiate --eval -E 'builtins.attrNames (import ./. {}).versions' --json | jq -r '.[]' \
|
||||
| xargs -I{} -P1 nix-build -A versions.{} --max-jobs auto --cores 1
|
||||
nix-instantiate --eval -E 'builtins.attrNames (import ./. {}).unstable.versions' --json | jq -r '.[]' \
|
||||
| xargs -I{} -P1 nix-build -A unstable.versions.{} --max-jobs auto --cores 1
|
||||
#+END_SRC
|
||||
|
||||
Both the ~update~ and ~nix-build~'s take a long time, but both do a lot of intermediate caching and are idempotent, so they can be interrupted and resumed at any time without losing too much progress. If builds fail for some reason, the ~overrides~ directory can be used to add GHC-specific overrides.
|
||||
|
||||
|
@ -1,28 +0,0 @@
|
||||
cabal-version: 2.4
|
||||
name: all-hies
|
||||
version: 0.1.0.0
|
||||
author: Silvan Mosberger
|
||||
maintainer: infinisil@icloud.com
|
||||
|
||||
executable update
|
||||
hs-source-dirs: src
|
||||
main-is: Main.hs
|
||||
other-modules: Cache
|
||||
Options
|
||||
build-depends: base ^>=4.12.0.0
|
||||
, haskeline
|
||||
, process
|
||||
, regex-applicative
|
||||
, directory
|
||||
, filepath
|
||||
, stack2nix
|
||||
, http-client
|
||||
, http-client-tls
|
||||
, time
|
||||
, aeson
|
||||
, mtl
|
||||
, bytestring
|
||||
, Cabal
|
||||
, temporary
|
||||
, optparse-applicative
|
||||
default-language: Haskell2010
|
68
build.nix
Normal file
68
build.nix
Normal file
@ -0,0 +1,68 @@
|
||||
{ ghcVersion, glibcName }:
|
||||
let
|
||||
sources = import ./sources.nix;
|
||||
pkgs = sources.glibcSpecificPkgs.${glibcName};
|
||||
inherit (pkgs) lib;
|
||||
|
||||
versionList = builtins.match "([0-9]+)\\.([0-9]+)\\.([0-9]+)" ghcVersion;
|
||||
version = rec {
|
||||
major = lib.elemAt versionList 0;
|
||||
minor = lib.elemAt versionList 1;
|
||||
patch = lib.elemAt versionList 2;
|
||||
dotVersion = "${major}.${minor}.${patch}";
|
||||
tightVersion = "${major}${minor}${patch}";
|
||||
};
|
||||
|
||||
supportedVersions = [ "8.6.5" "8.8.3" ];
|
||||
unsupportedWarning = if lib.elem ghcVersion supportedVersions then lib.id else lib.warn "all-hies: GHC version ${ghcVersion} is not supported, no caches are available and the build will probably fail";
|
||||
|
||||
stackArgs = {
|
||||
src = sources.hie.src;
|
||||
stackYaml = "stack-${version.dotVersion}.yaml";
|
||||
# TODO: Remove GHC from closure
|
||||
modules = [{
|
||||
reinstallableLibGhc = true;
|
||||
doHaddock = false;
|
||||
packages.ghc.flags.ghci = true;
|
||||
packages.ghci.flags.ghci = true;
|
||||
packages.haskell-ide-engine.configureFlags = [ "--enable-executable-dynamic" ];
|
||||
}];
|
||||
};
|
||||
|
||||
generatedDir = ./generated + "/${version.dotVersion}";
|
||||
hashFile = generatedDir + "/stack-sha256";
|
||||
materializedDir = generatedDir + "/materialized";
|
||||
|
||||
materializedStackArgs = stackArgs // lib.optionalAttrs (builtins.pathExists generatedDir) {
|
||||
stack-sha256 = lib.fileContents hashFile;
|
||||
materialized = materializedDir;
|
||||
};
|
||||
|
||||
combined =
|
||||
let
|
||||
haskellSet = pkgs.haskell-nix.stackProject materializedStackArgs;
|
||||
inherit (haskellSet.haskell-ide-engine.components.exes) hie;
|
||||
inherit (haskellSet.hie-bios.components.exes) hie-bios;
|
||||
in (pkgs.buildEnv {
|
||||
name = "haskell-ide-engine-${version.dotVersion}-${sources.hie.version}";
|
||||
paths = [ hie hie-bios ];
|
||||
pathsToLink = [ "/bin" ];
|
||||
inherit (hie) meta;
|
||||
}).overrideAttrs (old: {
|
||||
allowSubstitutes = true;
|
||||
});
|
||||
|
||||
materialize =
|
||||
let
|
||||
haskellSet = pkgs.haskell-nix.stackProject stackArgs;
|
||||
in pkgs.writeShellScript "materialize-${version.dotVersion}" ''
|
||||
set -x
|
||||
mkdir -p ${toString generatedDir}
|
||||
nix-hash --base32 --type sha256 ${haskellSet.stack-nix} > ${toString hashFile}
|
||||
${pkgs.coreutils}/bin/cp -r --no-preserve=mode -T ${haskellSet.stack-nix} ${toString materializedDir}
|
||||
cp ${sources.materializationId} ${toString generatedDir}/materialization-id
|
||||
'';
|
||||
|
||||
in unsupportedWarning {
|
||||
inherit combined materialize;
|
||||
}
|
205
check-cache.sh
205
check-cache.sh
@ -1,205 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script is here for both future reference on how to check that a cache
|
||||
# serves a path, and to make sure cachix's 10GB limit doesn't mean it deletes
|
||||
# paths still needed.
|
||||
|
||||
# In addition, you could use these paths here to fetch the derivations directly,
|
||||
# completely circumventing the slow Nix evaluation, at the cost of
|
||||
# reproducibility. Only seems useful for one-off testing or so.
|
||||
|
||||
storepaths=(
|
||||
# 1.1
|
||||
## x86_64-linux
|
||||
/nix/store/dgs02431fz60zkmkvpx8grbb2i4ahd3c-haskell-ide-engine-ghc842-1.1
|
||||
/nix/store/5qvfgjzyxly990l7skzgbf3c8qix8073-haskell-ide-engine-ghc843-1.1
|
||||
/nix/store/6hhh5aiyxijz6ym3yck1d04i1lx49rnr-haskell-ide-engine-ghc844-1.1
|
||||
/nix/store/nzn6pzq5r58v25y9pb8b9jrqh9p02z43-haskell-ide-engine-ghc864-1.1
|
||||
/nix/store/qwrwp6zrmw2slvfqzx5dl4wziq8jcjgh-haskell-ide-engine-ghc865-1.1
|
||||
/nix/store/z3ibpz4qhyz62cka5pncv1dff3vv353n-haskell-ide-engine-ghc881-1.1
|
||||
/nix/store/n1gibsl3c6jpd46i5016l31ac68m1rq9-haskell-ide-engine-ghc882-1.1
|
||||
## x86_64-darwin
|
||||
/nix/store/z09kdrng69gx0n6644l3y1173901sdmp-haskell-ide-engine-ghc842-1.1
|
||||
/nix/store/5ygzlmn3hzih5ml336d0bhy23ffyczzk-haskell-ide-engine-ghc843-1.1
|
||||
/nix/store/rb14ylqqmiy0mhl59pp6cc6vql6ipk3j-haskell-ide-engine-ghc844-1.1
|
||||
/nix/store/hayssh03rw586d4clk0xs0w7i3klk2x5-haskell-ide-engine-ghc864-1.1
|
||||
/nix/store/d6kmba464kac15yn9qys0s66r9fns7mq-haskell-ide-engine-ghc865-1.1
|
||||
/nix/store/ks0vn6a7161qqjfgcv1c3hm0a0dnvfac-haskell-ide-engine-ghc881-1.1
|
||||
/nix/store/nrhyw66d132bpfm5lhks0hiw8djbkr5a-haskell-ide-engine-ghc882-1.1
|
||||
|
||||
# 1.0.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/sk086bkr8f4yjg0715c8k9lx907r9j5h-haskell-ide-engine-ghc842-1.0.0.0
|
||||
/nix/store/shvam04y1xxma6vs3scx8rvxy3nab0jj-haskell-ide-engine-ghc843-1.0.0.0
|
||||
/nix/store/sdzx9hbslsdk0z5k21x7259v6mihx07h-haskell-ide-engine-ghc844-1.0.0.0
|
||||
/nix/store/jcqafgk3h8h60hv4z3x7kp5fyh2h90vb-haskell-ide-engine-ghc861-1.0.0.0
|
||||
/nix/store/ihfvldzicc05g7mdx9y4jix6wxldcyb3-haskell-ide-engine-ghc862-1.0.0.0
|
||||
/nix/store/ik2sn2bqgn0wh2k1sgi92ag3dmbshawd-haskell-ide-engine-ghc863-1.0.0.0
|
||||
/nix/store/b6hjjms6lzfpnwqiflaqa29pf971ii5q-haskell-ide-engine-ghc864-1.0.0.0
|
||||
/nix/store/gbyjamvg0vz00izjl9cddgynpz34g13d-haskell-ide-engine-ghc865-1.0.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/hs35i7a8akw92s33535pn7s9ll03h92m-haskell-ide-engine-ghc842-1.0.0.0
|
||||
/nix/store/kr44by4jhhmsjgdzzlgvsb1pm4b3pi53-haskell-ide-engine-ghc843-1.0.0.0
|
||||
/nix/store/xr80fkvi9a6d1kcz15z9193909d5z45f-haskell-ide-engine-ghc844-1.0.0.0
|
||||
/nix/store/0lmy07adcb22gy63cwllrr1hbwxmpz1j-haskell-ide-engine-ghc861-1.0.0.0
|
||||
/nix/store/vrj0l16jg5x8l7scphzpw74845ync6b7-haskell-ide-engine-ghc862-1.0.0.0
|
||||
/nix/store/l7g6f9facx5k0sdfwiqzaqd9s9y5jqsg-haskell-ide-engine-ghc863-1.0.0.0
|
||||
/nix/store/0z54skjwfd5malhf9d3m83ksx6wq5kvb-haskell-ide-engine-ghc864-1.0.0.0
|
||||
/nix/store/k8i38lkf56y0zj423g96132b2c2md9dr-haskell-ide-engine-ghc865-1.0.0.0
|
||||
|
||||
# 0.14.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/fv5g10aimim5dpiczm2lfihaag02vhxl-haskell-ide-engine-ghc842-0.14.0.0
|
||||
/nix/store/jsqg0bzzwwhhvdmqmp7i4w8lgb3m16d4-haskell-ide-engine-ghc843-0.14.0.0
|
||||
/nix/store/k6xpscrdj6mljxs0lfc7z53h02d2pssy-haskell-ide-engine-ghc844-0.14.0.0
|
||||
/nix/store/ghkyvmv9hii7j0mxrhw65k1rf8714zjv-haskell-ide-engine-ghc861-0.14.0.0
|
||||
/nix/store/6jdnw7nmh70qdn68pkxribbqfx3hgb29-haskell-ide-engine-ghc862-0.14.0.0
|
||||
/nix/store/yfdwlzwvgz9mw6ahyfi9kzy73bfw28wg-haskell-ide-engine-ghc863-0.14.0.0
|
||||
/nix/store/k719sij8skn4r8l128hqg324gpw13bsv-haskell-ide-engine-ghc864-0.14.0.0
|
||||
/nix/store/6wsy89l4jnsy4qp4ywsyg572ily295zl-haskell-ide-engine-ghc865-0.14.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/96swblwrifddpri0pphq60l3wmw5glx3-haskell-ide-engine-ghc842-0.14.0.0
|
||||
/nix/store/vjn9z839m1qgs1hx25w1m19mqarcrga6-haskell-ide-engine-ghc843-0.14.0.0
|
||||
/nix/store/1ynzvm8a5ah0yaanjyycxgxsi8ha6fm8-haskell-ide-engine-ghc844-0.14.0.0
|
||||
/nix/store/ywiqwi0zk8f90xfngn2fy5v0j8mcg4k7-haskell-ide-engine-ghc861-0.14.0.0
|
||||
/nix/store/k5bl1k6sxqzllxaq91y12k7issyx352n-haskell-ide-engine-ghc862-0.14.0.0
|
||||
/nix/store/m2r5avlqd8jqwhadgnxh3mx9144c85sc-haskell-ide-engine-ghc863-0.14.0.0
|
||||
/nix/store/kx888gg01y3j2r5ydfzqadb0v3mv1vyf-haskell-ide-engine-ghc864-0.14.0.0
|
||||
/nix/store/6l9ciqyf5hrw7jrskwvfy60jayklrwdr-haskell-ide-engine-ghc865-0.14.0.0
|
||||
|
||||
# 0.13.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/7xcbnma9w0678wjy8mqzmx8vr06ywr1q-haskell-ide-engine-ghc822-0.13.0.0
|
||||
/nix/store/qqcjlnl0qcs06vk691nz9mq38kwb1b0m-haskell-ide-engine-ghc842-0.13.0.0
|
||||
/nix/store/1bsinl1ipd4xd9a28mm870b585pr695j-haskell-ide-engine-ghc843-0.13.0.0
|
||||
/nix/store/nrjf5k71rc7gbm24nzz3pm8dlhi9ffgj-haskell-ide-engine-ghc844-0.13.0.0
|
||||
/nix/store/0fmpy958r9zzc9yarhjyq4j9sql4igh3-haskell-ide-engine-ghc861-0.13.0.0
|
||||
/nix/store/72iwb479zlf1wir2zhy47w7j6ba24x8a-haskell-ide-engine-ghc862-0.13.0.0
|
||||
/nix/store/wimhij1snfmz9bjjblspg6l3zjfbkpn1-haskell-ide-engine-ghc863-0.13.0.0
|
||||
/nix/store/b54jxmrzs5y4mir3n5wz5n4xgvz6jzd3-haskell-ide-engine-ghc864-0.13.0.0
|
||||
/nix/store/zz008pivvzzkmbwczax59kx9ik1vfcxh-haskell-ide-engine-ghc865-0.13.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/dwnjj266g3m2xyxxyjqj97r02bsmy1kw-haskell-ide-engine-ghc822-0.13.0.0
|
||||
/nix/store/kpzxvzljbrpk8jk8kjc5am6vkvyp7sfr-haskell-ide-engine-ghc842-0.13.0.0
|
||||
/nix/store/nvk48cyynyi482ihfhf6xi7nah3w0skl-haskell-ide-engine-ghc843-0.13.0.0
|
||||
/nix/store/n1xy8781mlidx9wdn95sb7mic025n05y-haskell-ide-engine-ghc844-0.13.0.0
|
||||
/nix/store/rksnq99m26ydi890jxgi2jh65b5ygvay-haskell-ide-engine-ghc861-0.13.0.0
|
||||
/nix/store/y9bp4bpv2bp4m7cfv386c8kcfwx2qxmv-haskell-ide-engine-ghc862-0.13.0.0
|
||||
/nix/store/03ixnk46zlvbvgagf7fnmwrra0351a6m-haskell-ide-engine-ghc863-0.13.0.0
|
||||
/nix/store/596vx7bif80rkz633mg2zn91k0szrr60-haskell-ide-engine-ghc864-0.13.0.0
|
||||
/nix/store/fnx9bhik3vrdxdfzqap9l4aph0a2cljc-haskell-ide-engine-ghc865-0.13.0.0
|
||||
|
||||
# 0.12.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/vm2g0gka3wc9m2766s9f8xzrlliby5yi-haskell-ide-engine-ghc822-0.12.0.0
|
||||
/nix/store/17ypzfshwxqb638bhxfbk6f6xzanzzsz-haskell-ide-engine-ghc842-0.12.0.0
|
||||
/nix/store/6r4jbflxzx31n3bfy25blmy5prg0x1xr-haskell-ide-engine-ghc843-0.12.0.0
|
||||
/nix/store/5ma13xjx2pvr97w1fmkz1hjy1pr0vzv7-haskell-ide-engine-ghc844-0.12.0.0
|
||||
/nix/store/hqzbnrhagm1m0zkss5jf3sndfzipjk01-haskell-ide-engine-ghc861-0.12.0.0
|
||||
/nix/store/6mdd6caab3qlnhbjr3c7jxki4dwkab9q-haskell-ide-engine-ghc862-0.12.0.0
|
||||
/nix/store/55izx4ic9jh22pp2h75gsy75fwfnxl5c-haskell-ide-engine-ghc863-0.12.0.0
|
||||
/nix/store/df49pvrydr12i8mk4l98vdhfvd0grbak-haskell-ide-engine-ghc864-0.12.0.0
|
||||
/nix/store/qfpgpi3mcw8w0m6vdfn77bli5pdw8c1d-haskell-ide-engine-ghc865-0.12.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/2srmzjnzy2sjlrcd18mmmbjjlpmdwvjz-haskell-ide-engine-ghc822-0.12.0.0
|
||||
/nix/store/58z40kd2wpqcm0i0npjbhy0rmy5x7xx2-haskell-ide-engine-ghc842-0.12.0.0
|
||||
/nix/store/znlx4pq3gy4aish8bkm48pdix6a246y1-haskell-ide-engine-ghc843-0.12.0.0
|
||||
/nix/store/zp8k0ili5k7amn3rl6rvsxsi6spcyqkc-haskell-ide-engine-ghc844-0.12.0.0
|
||||
/nix/store/6kwk290gcvqydq5hlb4z1d79v9p1pzb2-haskell-ide-engine-ghc861-0.12.0.0
|
||||
/nix/store/i3jwdmq0wyymsnbp7abwjxmy5kmyjjd5-haskell-ide-engine-ghc862-0.12.0.0
|
||||
/nix/store/zhc4kvmcblsssflfiyr9f7p98prs38s4-haskell-ide-engine-ghc863-0.12.0.0
|
||||
/nix/store/pshm49bih77bmnmyqhvav90vbbhiqan2-haskell-ide-engine-ghc864-0.12.0.0
|
||||
/nix/store/n1dg6asggdi4v0k49pnwvfvzqazxcszc-haskell-ide-engine-ghc865-0.12.0.0
|
||||
|
||||
# 0.11.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/bi1c5s6ql98hwbfnyr1hf5vy5g4qkyv9-haskell-ide-engine-ghc822-0.11.0.0
|
||||
/nix/store/6yfa5vh4x3nc6a6skmsw311fbdr2sbgs-haskell-ide-engine-ghc842-0.11.0.0
|
||||
/nix/store/4q1077xr3pxv218a61vzlk82g6mxaihd-haskell-ide-engine-ghc843-0.11.0.0
|
||||
/nix/store/kvb4vqnbdh8gpj3y75ysixzwf165qib3-haskell-ide-engine-ghc844-0.11.0.0
|
||||
/nix/store/fkrvvxxsqqyipj3832vfff75pv4ms5bd-haskell-ide-engine-ghc861-0.11.0.0
|
||||
/nix/store/nacxmfd764v9g82gc345j1rapn2rhjnz-haskell-ide-engine-ghc862-0.11.0.0
|
||||
/nix/store/q1pbpprnsqs1frjnlsjfzjvv4bi08vzj-haskell-ide-engine-ghc863-0.11.0.0
|
||||
/nix/store/gw6pp5m05nvg7gshakaj4gcpq1fvg2w0-haskell-ide-engine-ghc864-0.11.0.0
|
||||
/nix/store/h7hgxf86zfgh1dxv6jlybzlp96590q9j-haskell-ide-engine-ghc865-0.11.0.0
|
||||
# x86_64-darwin
|
||||
/nix/store/fqscw5v1fpza5wzw4fiw8810vy2581xg-haskell-ide-engine-ghc822-0.11.0.0
|
||||
/nix/store/2r41givhaabpsrlf4djsbfb90p7nc63v-haskell-ide-engine-ghc842-0.11.0.0
|
||||
/nix/store/fzkwrlvagpxss3b2xnbvmijmzl32xy8g-haskell-ide-engine-ghc843-0.11.0.0
|
||||
/nix/store/cs29ppwf6q92lj5pwzz6989mq6g3smpv-haskell-ide-engine-ghc844-0.11.0.0
|
||||
/nix/store/zqypv7cdjsm8wip289zg8x2c69df2svr-haskell-ide-engine-ghc861-0.11.0.0
|
||||
/nix/store/ph1npnw2301xgi1v8cf660q7fx048w10-haskell-ide-engine-ghc862-0.11.0.0
|
||||
/nix/store/zsmrfr9s9h8hkkwkiinpn81khip2zpdp-haskell-ide-engine-ghc863-0.11.0.0
|
||||
/nix/store/10zbnxkfzxx5aza2b9yf1pdbj74lj44k-haskell-ide-engine-ghc864-0.11.0.0
|
||||
/nix/store/s3mx14v0is47w6s1f59qds3cajzs1z1i-haskell-ide-engine-ghc865-0.11.0.0
|
||||
|
||||
# 0.10.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/bqn4lhr3sy7l0js8i48cn8asdxch0fyg-haskell-ide-engine-ghc822-0.10.0.0
|
||||
/nix/store/1zk8ak6xbj80xb1cwpfhvgfsqr6qc5nb-haskell-ide-engine-ghc842-0.10.0.0
|
||||
/nix/store/xixdvl0zaxwxv7vg5yh5n1c3mfziylmy-haskell-ide-engine-ghc843-0.10.0.0
|
||||
/nix/store/2vkknszx8a79zli4r7m1km0g5q839ljy-haskell-ide-engine-ghc844-0.10.0.0
|
||||
/nix/store/5byn4lv9vs4sx8wbj4in33i6mrlhp10k-haskell-ide-engine-ghc861-0.10.0.0
|
||||
/nix/store/624qszlz61jvmdr1nvmz7kf2akdjrn3d-haskell-ide-engine-ghc862-0.10.0.0
|
||||
/nix/store/ix0cl548sg5kv5dw8baq429javdy2hb3-haskell-ide-engine-ghc863-0.10.0.0
|
||||
/nix/store/w5xzzmmdm1kdfm195cq4blzv5dl69z6f-haskell-ide-engine-ghc864-0.10.0.0
|
||||
/nix/store/aqb38lri5cw7bv1g8bh6md2z5kn3yq4f-haskell-ide-engine-ghc865-0.10.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/zg0swixk3v280xr3bxvly9csrf353xc8-haskell-ide-engine-ghc822-0.10.0.0
|
||||
/nix/store/rxyizclnkfz7v5wmcffhppkfwbgxs8w2-haskell-ide-engine-ghc842-0.10.0.0
|
||||
/nix/store/3hbzcabibrc67zjy6fxipzs9wbs6y164-haskell-ide-engine-ghc843-0.10.0.0
|
||||
/nix/store/90z9h7ij4yhqi7bgr3jac4lnx70g6w1j-haskell-ide-engine-ghc844-0.10.0.0
|
||||
/nix/store/0035fzz1923ybdq4wq9dqslv4mgxxxlb-haskell-ide-engine-ghc861-0.10.0.0
|
||||
/nix/store/r529lppz0hcm0jf2qw5gb788d1piifhf-haskell-ide-engine-ghc862-0.10.0.0
|
||||
/nix/store/939ipf6rw9hdq7j8zp31n3m0q97y462z-haskell-ide-engine-ghc863-0.10.0.0
|
||||
/nix/store/sd86wdkix55i6zri12rl6inwbpsr1nmy-haskell-ide-engine-ghc864-0.10.0.0
|
||||
/nix/store/cjkd4zxwg4p4zf1hps6hna47diddjd2b-haskell-ide-engine-ghc865-0.10.0.0
|
||||
|
||||
# 0.9.0.0
|
||||
## x86_64-linux
|
||||
/nix/store/826simd2sxai2ixp79sagig45fcqlbzx-haskell-ide-engine-ghc821-0.9.0.0
|
||||
/nix/store/4l7cmyd7yz7f7fh9c7ncxp7a0ibkiyhk-haskell-ide-engine-ghc822-0.9.0.0
|
||||
/nix/store/pfs0zmr1gj8m83cj811dxpqi38rngaby-haskell-ide-engine-ghc842-0.9.0.0
|
||||
/nix/store/xbg2gz5h5grgksdj11fa5bn4g76pa205-haskell-ide-engine-ghc843-0.9.0.0
|
||||
/nix/store/hpip464r63fgbm13gc2rvw4dgy5wx7jq-haskell-ide-engine-ghc844-0.9.0.0
|
||||
/nix/store/93gs7s6fvvzjq5s65grm7ajnchc104mq-haskell-ide-engine-ghc861-0.9.0.0
|
||||
/nix/store/fm6q1p4qahvpzwpzywhpmgpwdlqmalf5-haskell-ide-engine-ghc862-0.9.0.0
|
||||
/nix/store/718j08f3sfrcznmg4jm468wi52ki8da9-haskell-ide-engine-ghc863-0.9.0.0
|
||||
/nix/store/ykfwddgjmg8vaf7i83lbfpzmlc6ga0d0-haskell-ide-engine-ghc864-0.9.0.0
|
||||
## x86_64-darwin
|
||||
/nix/store/zjg7w8drvgajwg45kcwsrcgbfbyggjda-haskell-ide-engine-ghc821-0.9.0.0
|
||||
/nix/store/9wds6q9cwl001z4ygdr2hh70y1db30j6-haskell-ide-engine-ghc822-0.9.0.0
|
||||
/nix/store/srbrsjasysqvmva9sjzi5msf56jb9jih-haskell-ide-engine-ghc842-0.9.0.0
|
||||
/nix/store/ijks8qwcpdnh4g8r09iz1jhlcviavnba-haskell-ide-engine-ghc843-0.9.0.0
|
||||
/nix/store/js2qmcbkvc4nbjzj831lh3l8xb2rrlfv-haskell-ide-engine-ghc844-0.9.0.0
|
||||
/nix/store/knmzrcwglv38h83awjczfxvr260i0mvz-haskell-ide-engine-ghc861-0.9.0.0
|
||||
/nix/store/k0w4r4x6hghm4rniwpc00jv0w6grf44d-haskell-ide-engine-ghc862-0.9.0.0
|
||||
/nix/store/h9q4ikqjwj2wzjgbhcxh8qkmlcd764kj-haskell-ide-engine-ghc863-0.9.0.0
|
||||
/nix/store/5lwkwpgd9mdbrj2k267kjjslc5jmp2f4-haskell-ide-engine-ghc864-0.9.0.0
|
||||
)
|
||||
|
||||
misslog=$(mktemp)
|
||||
|
||||
for path in ${storepaths[*]}; do
|
||||
url=$(sed -r <<< $path \
|
||||
-e 's|-.*|.narinfo|' \
|
||||
-e 's|/nix/store|https://all-hies.cachix.org|')
|
||||
{
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}\n" "$url")
|
||||
case "$code" in
|
||||
200)
|
||||
echo "HIT $path"
|
||||
;;
|
||||
*)
|
||||
echo -e "\e[01;31mMISS($code)\e[0m $path"
|
||||
echo "" >> $misslog
|
||||
;;
|
||||
esac
|
||||
} &
|
||||
done
|
||||
|
||||
wait
|
||||
|
||||
misses=$(wc -l < "$misslog")
|
||||
rm "$misslog"
|
||||
exit "$misses"
|
214
default.nix
214
default.nix
@ -1,202 +1,18 @@
|
||||
# nixpkgs used only for library functions, not for dependencies
|
||||
{ pkgs ? import ./nixpkgs.nix
|
||||
, lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
{}:
|
||||
let
|
||||
legacyError = throw ''
|
||||
all-hies has undergone major changes and now needs to be used on a per-project basis.
|
||||
See https://github.com/Infinisil/all-hies/blob/master/Readme.md for more info.
|
||||
The last version that doesn't have these changes is 4b6aab017cdf96a90641dc287437685675d598da.
|
||||
'';
|
||||
in {
|
||||
overlay = import ./overlay.nix;
|
||||
|
||||
# A la lib.composeExtensions, but with any number of extensions
|
||||
composeMultiple = extensions:
|
||||
if extensions == [] then self: super: {}
|
||||
else lib.composeExtensions
|
||||
(lib.head extensions)
|
||||
(composeMultiple (lib.tail extensions));
|
||||
|
||||
# Speeds up Haskell builds
|
||||
speedierBuilds = self: super: {
|
||||
mkDerivation = args: super.mkDerivation (args // {
|
||||
enableLibraryProfiling = false;
|
||||
});
|
||||
};
|
||||
|
||||
ghcSpecific = buildName: ghcVersion: rec {
|
||||
|
||||
# Reformats the ghc version into the format "8.6.4"
|
||||
versionString = lib.concatStringsSep "."
|
||||
(builtins.match "ghc(.)(.)(.)" ghcVersion);
|
||||
|
||||
# The more recent the version, the higher the priority
|
||||
# But higher priorities are lower on the number scale (WHY?), so we need the -
|
||||
versionPriority = - lib.toInt (lib.head (builtins.match "ghc(.*)" ghcVersion));
|
||||
|
||||
# Evaluates to a nixpkgs that has the given ghc version in it
|
||||
pkgs = let
|
||||
rev = builtins.readFile (./nixpkgsForGhc + "/${ghcVersion}");
|
||||
sha256 = builtins.readFile (./generated + "/${buildName}/nixpkgsHashes/${rev}");
|
||||
in import (fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/tarball/${rev}";
|
||||
inherit sha256;
|
||||
}) { config = {}; overlays = []; };
|
||||
|
||||
# Returns a Haskell overlay that sets all ghc base libraries to null
|
||||
# (minus a select few)
|
||||
baseLibraryNuller = self: super: let
|
||||
libs = lib.splitString " "
|
||||
(builtins.readFile (./generated + "/${buildName}/ghcBaseLibraries/${ghcVersion}"));
|
||||
libNames = map (lib: (builtins.parseDrvName lib).name) libs;
|
||||
# It seems that some versions require Cabal and some don't
|
||||
filtered = lib.filter (name: ! lib.elem name [ "ghc" "Cabal" ]) libNames;
|
||||
in lib.genAttrs filtered (name: null);
|
||||
|
||||
# Custom overrides for specific ghc versions, declared in ./overrides
|
||||
customOverrides =
|
||||
let path = ./overrides + "/${ghcVersion}.nix";
|
||||
in if builtins.pathExists path then import path
|
||||
else self: super: {};
|
||||
};
|
||||
|
||||
|
||||
# Build for a specific GHC version
|
||||
hieBuild = buildName: ghcVersion: let
|
||||
forGhc = ghcSpecific buildName ghcVersion;
|
||||
hlib = forGhc.pkgs.haskell.lib;
|
||||
revision = builtins.readFile (./generated + "/${buildName}/stack2nix/revision");
|
||||
|
||||
hieOverride = self: super: {
|
||||
haskell-ide-engine = (hlib.overrideCabal super.haskell-ide-engine (old: {
|
||||
# Embed the ghc version into the name
|
||||
pname = "${old.pname}-${ghcVersion}";
|
||||
version = revision;
|
||||
|
||||
# Link Haskell libraries dynamically, improves startup time for projects
|
||||
# using TH by a lot (40x faster in one of my tests), but also Increases
|
||||
# closure size by about 50% (=~ 1.2GB) per HIE version
|
||||
# Can be disabled again for GHC versions that have a fix for
|
||||
# https://gitlab.haskell.org/ghc/ghc/issues/15524
|
||||
enableSharedExecutables = true;
|
||||
isLibrary = false;
|
||||
doHaddock = false;
|
||||
})).overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs or [] ++ [ pkgs.makeWrapper ];
|
||||
# Make sure hie-x.x.x binary exists
|
||||
# And make sure hie-wrapper finds this version
|
||||
postInstall = old.postInstall or "" + ''
|
||||
ln -s hie $out/bin/hie-${forGhc.versionString}
|
||||
wrapProgram $out/bin/hie-wrapper \
|
||||
--suffix PATH : $out/bin
|
||||
'';
|
||||
|
||||
# Assign a priority for allowing multiple versions to be installed at once
|
||||
meta = old.meta // {
|
||||
priority = forGhc.versionPriority;
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
overrideFun = old: {
|
||||
overrides = composeMultiple [
|
||||
(old.overrides or (self: super: {}))
|
||||
speedierBuilds
|
||||
hieOverride
|
||||
forGhc.baseLibraryNuller
|
||||
forGhc.customOverrides
|
||||
];
|
||||
};
|
||||
|
||||
expr = import (./generated + "/${buildName}/stack2nix/${ghcVersion}.nix") {
|
||||
pkgs = forGhc.pkgs;
|
||||
};
|
||||
|
||||
hpkgs = expr.override overrideFun;
|
||||
build = hpkgs.haskell-ide-engine // {
|
||||
inherit (hpkgs) hie-bios;
|
||||
};
|
||||
|
||||
in build;
|
||||
|
||||
# A set of all ghc versions for all hie versions, like
|
||||
# { stable = { ghc864 = <derivation ..>; ... }; unstable = ...; }
|
||||
# Each of which contain binaries hie and hie-$major.$minor.$patch for their
|
||||
# GHC version, along with a hie-wrapper binary that knows about this version
|
||||
allVersions = lib.mapAttrs (buildName: _:
|
||||
let ghcVersionFiles = lib.filterAttrs (file: _: file != "revision")
|
||||
(builtins.readDir (./generated + "/${buildName}/stack2nix"));
|
||||
in lib.mapAttrs' (ghcVersionFile: _:
|
||||
|
||||
let ghcVersion = lib.removeSuffix ".nix" ghcVersionFile;
|
||||
in lib.nameValuePair ghcVersion (hieBuild buildName ghcVersion)
|
||||
|
||||
) ghcVersionFiles) (builtins.readDir ./generated);
|
||||
|
||||
# Combine a set of HIE versions (given as { <ghcVersion> = <derivation>; })
|
||||
# into a single derivation with the following binaries:
|
||||
# - hie-*.*.*: The GHC specific HIE versions, such as ghc-8.6.4
|
||||
# - hie-wrapper: A HIE version that selects the appropriate version
|
||||
# automatically out of the given ones
|
||||
# - hie: Same as hie-wrapper, provided for easy editor integration
|
||||
combined = versions: pkgs.buildEnv {
|
||||
name = "haskell-ide-engine-combined";
|
||||
paths = lib.attrValues versions ++ [ (lib.last (lib.attrValues versions)).hie-bios ];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
pathsToLink = [ "/bin" ];
|
||||
extraPrefix = "/libexec";
|
||||
postBuild = ''
|
||||
# Remove hie/hie-wrapper in /libexec/bin because those are both just PATH
|
||||
# wrapped versions. Move the actual hie-wrapper to $out/bin
|
||||
rm $out/libexec/bin/{hie,hie-wrapper}
|
||||
mkdir -p $out/bin
|
||||
mv $out/libexec/bin/.hie-wrapper-wrapped $out/bin/hie-wrapper
|
||||
mv $out/libexec/bin/hie-bios $out/bin/hie-bios
|
||||
|
||||
# Now /libexec/bin only contains binaries hie-*.*.*. Link all of them to
|
||||
# $out/bin such that users installing this directly can access these
|
||||
# specific versions too in $PATH
|
||||
for bin in $out/libexec/bin/*; do
|
||||
ln -s ../libexec/bin/$(basename $bin) $out/bin/$(basename $bin)
|
||||
done
|
||||
|
||||
# Because we don't want hie-wrapper to fall back to hie binaries later in
|
||||
# PATH (because if this derivation is installed, a later hie might be
|
||||
# hie-wrapper itself, leading to infinite process recursion), we provide
|
||||
# our own hie binary instead, which will only be called if it couldn't
|
||||
# find any appropriate hie-*.*.* binary, in which case the user needs to
|
||||
# adjust their all-hies installation to make that one available.
|
||||
cat > $out/libexec/bin/hie << EOF
|
||||
#!${pkgs.runtimeShell}
|
||||
echo "hie-wrapper couldn't find a HIE binary with a matching GHC" \\
|
||||
"version in your all-hies installation" >&2
|
||||
exit 1
|
||||
EOF
|
||||
chmod +x $out/libexec/bin/hie
|
||||
|
||||
# Wrap hie-wrapper with PATH prefixed with /libexec/bin, such
|
||||
# that it can find all those binaries. Not --suffix because
|
||||
# hie-wrapper needs to find our hie binary first and foremost as per
|
||||
# above comment, also makes it more reproducible. Not --set because hie
|
||||
# needs to find binaries for cabal/ghc and such.
|
||||
wrapProgram $out/bin/hie-wrapper \
|
||||
--prefix PATH : $out/libexec/bin
|
||||
|
||||
# Make hie-wrapper available as hie as well, in order to minimize the need
|
||||
# for customizing editors, and to override a potential hie binary from
|
||||
# another derivation in the same environment.
|
||||
ln -s hie-wrapper $out/bin/hie
|
||||
'';
|
||||
};
|
||||
|
||||
# Generates a set with the utility functions from a set of versions
|
||||
mkSet = versions: {
|
||||
inherit combined versions;
|
||||
selection = { selector }: combined (selector versions);
|
||||
latest = lib.last (lib.attrValues versions);
|
||||
};
|
||||
|
||||
in mkSet allVersions.stable
|
||||
// lib.mapAttrs (_: mkSet) (builtins.removeAttrs allVersions ["stable"])
|
||||
// {
|
||||
bios = throw "all-hies: All versions now have hie-bios support, no need to use the bios attribute anymore";
|
||||
|
||||
# Stable, but fall back to unstable if stable doesn't have a certain GHC
|
||||
# version
|
||||
unstableFallback = mkSet (allVersions.unstable // allVersions.stable);
|
||||
combined = legacyError;
|
||||
versions = legacyError;
|
||||
selection = legacyError;
|
||||
latest = legacyError;
|
||||
unstable = legacyError;
|
||||
bios = legacyError;
|
||||
unstableFallback = legacyError;
|
||||
}
|
||||
|
3
generated/8.6.5/materialization-id
generated
Normal file
3
generated/8.6.5/materialization-id
generated
Normal file
@ -0,0 +1,3 @@
|
||||
These materialization files were generated with
|
||||
haskell.nix af5998fe8d6b201d2a9be09993f1b9fae74e0082
|
||||
haskell-ide-engine fe630a1e31232013549518909e511924e19af4af
|
0
generated/8.6.5/materialized/.stack-to-nix.cache
generated
Normal file
0
generated/8.6.5/materialized/.stack-to-nix.cache
generated
Normal file
64
generated/8.6.5/materialized/default.nix
generated
Normal file
64
generated/8.6.5/materialized/default.nix
generated
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
extras = hackage:
|
||||
{
|
||||
packages = {
|
||||
"aeson" = (((hackage.aeson)."1.4.6.0").revisions).default;
|
||||
"aeson-pretty" = (((hackage.aeson-pretty)."0.8.8").revisions).default;
|
||||
"ansi-terminal" = (((hackage.ansi-terminal)."0.10.2").revisions).default;
|
||||
"ansi-wl-pprint" = (((hackage.ansi-wl-pprint)."0.6.9").revisions).default;
|
||||
"base-compat" = (((hackage.base-compat)."0.11.1").revisions).default;
|
||||
"brittany" = (((hackage.brittany)."0.12.1.1").revisions).default;
|
||||
"bytestring-trie" = (((hackage.bytestring-trie)."0.2.5.0").revisions).default;
|
||||
"Cabal" = (((hackage.Cabal)."3.0.2.0").revisions).default;
|
||||
"cabal-helper" = (((hackage.cabal-helper)."1.1.0.0").revisions).default;
|
||||
"cabal-plan" = (((hackage.cabal-plan)."0.6.2.0").revisions).default;
|
||||
"clock" = (((hackage.clock)."0.7.2").revisions).default;
|
||||
"constrained-dynamic" = (((hackage.constrained-dynamic)."0.1.0.0").revisions).default;
|
||||
"extra" = (((hackage.extra)."1.6.21").revisions).default;
|
||||
"floskell" = (((hackage.floskell)."0.10.2").revisions).default;
|
||||
"ghc-exactprint" = (((hackage.ghc-exactprint)."0.6.2").revisions).default;
|
||||
"ghc-lib-parser" = (((hackage.ghc-lib-parser)."8.8.2.20200205").revisions).default;
|
||||
"ghc-lib-parser-ex" = (((hackage.ghc-lib-parser-ex)."8.8.5.3").revisions).default;
|
||||
"haskell-lsp" = (((hackage.haskell-lsp)."0.20.0.0").revisions).default;
|
||||
"haskell-lsp-types" = (((hackage.haskell-lsp-types)."0.20.0.0").revisions).default;
|
||||
"haskell-src-exts" = (((hackage.haskell-src-exts)."1.22.0").revisions).default;
|
||||
"hie-bios" = (((hackage.hie-bios)."0.5.0").revisions).default;
|
||||
"hlint" = (((hackage.hlint)."2.2.11").revisions).default;
|
||||
"hoogle" = (((hackage.hoogle)."5.0.17.15").revisions).default;
|
||||
"indexed-profunctors" = (((hackage.indexed-profunctors)."0.1").revisions).default;
|
||||
"lens" = (((hackage.lens)."4.18").revisions).default;
|
||||
"lsp-test" = (((hackage.lsp-test)."0.10.1.0").revisions).default;
|
||||
"monad-dijkstra" = (((hackage.monad-dijkstra)."0.1.1.2").revisions).default;
|
||||
"optics-core" = (((hackage.optics-core)."0.2").revisions).default;
|
||||
"optparse-applicative" = (((hackage.optparse-applicative)."0.15.1.0").revisions).default;
|
||||
"ormolu" = (((hackage.ormolu)."0.0.3.1").revisions).default;
|
||||
"parser-combinators" = (((hackage.parser-combinators)."1.2.1").revisions).default;
|
||||
"resourcet" = (((hackage.resourcet)."1.2.3").revisions).default;
|
||||
"semialign" = (((hackage.semialign)."1.1").revisions).default;
|
||||
"temporary" = (((hackage.temporary)."1.2.1.1").revisions).default;
|
||||
"topograph" = (((hackage.topograph)."1").revisions).default;
|
||||
"type-equality" = (((hackage.type-equality)."1").revisions).default;
|
||||
"unliftio" = (((hackage.unliftio)."0.2.12.1").revisions).default;
|
||||
"unliftio-core" = (((hackage.unliftio-core)."0.2.0.1").revisions).default;
|
||||
"haddock-api" = (((hackage.haddock-api)."2.22.0").revisions).r1;
|
||||
"hsimport" = (((hackage.hsimport)."0.11.0").revisions).r2;
|
||||
haskell-ide-engine = ./haskell-ide-engine.nix;
|
||||
hie-plugin-api = ./hie-plugin-api.nix;
|
||||
};
|
||||
};
|
||||
resolver = "lts-14.22";
|
||||
modules = [
|
||||
({ lib, ... }:
|
||||
{
|
||||
packages = {
|
||||
"haskell-ide-engine" = {
|
||||
flags = { "pedantic" = lib.mkOverride 900 true; };
|
||||
};
|
||||
"hie-plugin-api" = {
|
||||
flags = { "pedantic" = lib.mkOverride 900 true; };
|
||||
};
|
||||
};
|
||||
})
|
||||
{ packages = {}; }
|
||||
];
|
||||
}
|
358
generated/8.6.5/materialized/haskell-ide-engine.nix
generated
Normal file
358
generated/8.6.5/materialized/haskell-ide-engine.nix
generated
Normal file
@ -0,0 +1,358 @@
|
||||
{ system
|
||||
, compiler
|
||||
, flags
|
||||
, pkgs
|
||||
, hsPkgs
|
||||
, pkgconfPkgs
|
||||
, errorHandler
|
||||
, config
|
||||
, ... }:
|
||||
{
|
||||
flags = { pedantic = false; };
|
||||
package = {
|
||||
specVersion = "2.0";
|
||||
identifier = { name = "haskell-ide-engine"; version = "1.4"; };
|
||||
license = "BSD-3-Clause";
|
||||
copyright = "2015 - 2019, TBD";
|
||||
maintainer = "alan.zimm@gmail.com (for now)";
|
||||
author = "Many, TBD when we release";
|
||||
homepage = "http://github.com/githubuser/haskell-ide-engine#readme";
|
||||
url = "";
|
||||
synopsis = "Provide a common engine to power any Haskell IDE";
|
||||
description = "Please see README.md";
|
||||
buildType = "Simple";
|
||||
isLocal = true;
|
||||
detailLevel = "FullDetails";
|
||||
licenseFiles = [ "LICENSE" ];
|
||||
dataDir = "";
|
||||
dataFiles = [];
|
||||
extraSrcFiles = [];
|
||||
extraTmpFiles = [];
|
||||
extraDocFiles = [];
|
||||
};
|
||||
components = {
|
||||
"library" = {
|
||||
depends = [
|
||||
(hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
|
||||
(hsPkgs."Diff" or (errorHandler.buildDepError "Diff"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."apply-refact" or (errorHandler.buildDepError "apply-refact"))
|
||||
(hsPkgs."async" or (errorHandler.buildDepError "async"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."brittany" or (errorHandler.buildDepError "brittany"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."floskell" or (errorHandler.buildDepError "floskell"))
|
||||
(hsPkgs."fold-debounce" or (errorHandler.buildDepError "fold-debounce"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."ghc-exactprint" or (errorHandler.buildDepError "ghc-exactprint"))
|
||||
(hsPkgs."gitrev" or (errorHandler.buildDepError "gitrev"))
|
||||
(hsPkgs."haddock-api" or (errorHandler.buildDepError "haddock-api"))
|
||||
(hsPkgs."haddock-library" or (errorHandler.buildDepError "haddock-library"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."haskell-src-exts" or (errorHandler.buildDepError "haskell-src-exts"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hoogle" or (errorHandler.buildDepError "hoogle"))
|
||||
(hsPkgs."hsimport" or (errorHandler.buildDepError "hsimport"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."lifted-async" or (errorHandler.buildDepError "lifted-async"))
|
||||
(hsPkgs."lens" or (errorHandler.buildDepError "lens"))
|
||||
(hsPkgs."monoid-subclasses" or (errorHandler.buildDepError "monoid-subclasses"))
|
||||
(hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."parsec" or (errorHandler.buildDepError "parsec"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."safe" or (errorHandler.buildDepError "safe"))
|
||||
(hsPkgs."sorted-list" or (errorHandler.buildDepError "sorted-list"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."syb" or (errorHandler.buildDepError "syb"))
|
||||
(hsPkgs."tagsoup" or (errorHandler.buildDepError "tagsoup"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
|
||||
(hsPkgs."unix-time" or (errorHandler.buildDepError "unix-time"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."vector" or (errorHandler.buildDepError "vector"))
|
||||
(hsPkgs."versions" or (errorHandler.buildDepError "versions"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."bytestring-trie" or (errorHandler.buildDepError "bytestring-trie"))
|
||||
(hsPkgs."unliftio" or (errorHandler.buildDepError "unliftio"))
|
||||
(hsPkgs."hlint" or (errorHandler.buildDepError "hlint"))
|
||||
] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).ge "8.6") (hsPkgs."ormolu" or (errorHandler.buildDepError "ormolu"));
|
||||
buildable = true;
|
||||
modules = [
|
||||
"Paths_haskell_ide_engine"
|
||||
"Haskell/Ide/Engine/Channel"
|
||||
"Haskell/Ide/Engine/CodeActions"
|
||||
"Haskell/Ide/Engine/Completions"
|
||||
"Haskell/Ide/Engine/Reactor"
|
||||
"Haskell/Ide/Engine/Options"
|
||||
"Haskell/Ide/Engine/Plugin/ApplyRefact"
|
||||
"Haskell/Ide/Engine/Plugin/Brittany"
|
||||
"Haskell/Ide/Engine/Plugin/Example2"
|
||||
"Haskell/Ide/Engine/Plugin/Floskell"
|
||||
"Haskell/Ide/Engine/Plugin/Haddock"
|
||||
"Haskell/Ide/Engine/Plugin/HfaAlign"
|
||||
"Haskell/Ide/Engine/Plugin/HsImport"
|
||||
"Haskell/Ide/Engine/Plugin/Liquid"
|
||||
"Haskell/Ide/Engine/Plugin/Ormolu"
|
||||
"Haskell/Ide/Engine/Plugin/Package"
|
||||
"Haskell/Ide/Engine/Plugin/Package/Compat"
|
||||
"Haskell/Ide/Engine/Plugin/Pragmas"
|
||||
"Haskell/Ide/Engine/Plugin/Generic"
|
||||
"Haskell/Ide/Engine/Plugin/GhcMod"
|
||||
"Haskell/Ide/Engine/Scheduler"
|
||||
"Haskell/Ide/Engine/Support/FromHaRe"
|
||||
"Haskell/Ide/Engine/Support/Hoogle"
|
||||
"Haskell/Ide/Engine/Support/Fuzzy"
|
||||
"Haskell/Ide/Engine/Support/HieExtras"
|
||||
"Haskell/Ide/Engine/Server"
|
||||
"Haskell/Ide/Engine/Types"
|
||||
"Haskell/Ide/Engine/Version"
|
||||
];
|
||||
hsSourceDirs = [ "src" ];
|
||||
};
|
||||
sublibs = {
|
||||
"hie-test-utils" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."blaze-markup" or (errorHandler.buildDepError "blaze-markup"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."hspec-core" or (errorHandler.buildDepError "hspec-core"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "TestUtils" ];
|
||||
hsSourceDirs = [ "test/utils" ];
|
||||
};
|
||||
};
|
||||
exes = {
|
||||
"hie" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "Paths_haskell_ide_engine" "RunTest" ];
|
||||
hsSourceDirs = [ "app" ];
|
||||
mainPath = [
|
||||
"MainHie.hs"
|
||||
] ++ (pkgs.lib).optional (flags.pedantic) "";
|
||||
};
|
||||
"hie-wrapper" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "Paths_haskell_ide_engine" ];
|
||||
hsSourceDirs = [ "app" ];
|
||||
mainPath = [
|
||||
"HieWrapper.hs"
|
||||
] ++ (pkgs.lib).optional (flags.pedantic) "";
|
||||
};
|
||||
};
|
||||
tests = {
|
||||
"unit-test" = {
|
||||
depends = [
|
||||
(hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."free" or (errorHandler.buildDepError "free"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hoogle" or (errorHandler.buildDepError "hoogle"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."quickcheck-instances" or (errorHandler.buildDepError "quickcheck-instances"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.cabal-helper or (pkgs.buildPackages.cabal-helper or (errorHandler.buildToolDepError "cabal-helper")))
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [
|
||||
"ApplyRefactPluginSpec"
|
||||
"CabalHelperSpec"
|
||||
"CodeActionsSpec"
|
||||
"ContextSpec"
|
||||
"DiffSpec"
|
||||
"ExtensibleStateSpec"
|
||||
"GenericPluginSpec"
|
||||
"GhcModPluginSpec"
|
||||
"HooglePluginSpec"
|
||||
"HsImportSpec"
|
||||
"JsonSpec"
|
||||
"LiquidSpec"
|
||||
"OptionsSpec"
|
||||
"PackagePluginSpec"
|
||||
"Paths_haskell_ide_engine"
|
||||
"Spec"
|
||||
];
|
||||
hsSourceDirs = [ "test/unit" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"dispatcher-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/dispatcher" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"plugin-dispatcher-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/plugin-dispatcher" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"func-test" = {
|
||||
depends = [
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."lsp-test" or (errorHandler.buildDepError "lsp-test"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."lens" or (errorHandler.buildDepError "lens"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
(hsPkgs.buildPackages.haskell-ide-engine or (pkgs.buildPackages.haskell-ide-engine or (errorHandler.buildToolDepError "haskell-ide-engine")))
|
||||
(hsPkgs.buildPackages.cabal-helper or (pkgs.buildPackages.cabal-helper or (errorHandler.buildToolDepError "cabal-helper")))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [
|
||||
"CompletionSpec"
|
||||
"CommandSpec"
|
||||
"DeferredSpec"
|
||||
"DefinitionSpec"
|
||||
"DiagnosticsSpec"
|
||||
"FormatSpec"
|
||||
"FunctionalBadProjectSpec"
|
||||
"FunctionalCodeActionsSpec"
|
||||
"FunctionalLiquidSpec"
|
||||
"FunctionalSpec"
|
||||
"HieBiosSpec"
|
||||
"HighlightSpec"
|
||||
"HoverSpec"
|
||||
"ProgressSpec"
|
||||
"ReferencesSpec"
|
||||
"RenameSpec"
|
||||
"SymbolsSpec"
|
||||
"TypeDefinitionSpec"
|
||||
"Utils"
|
||||
];
|
||||
hsSourceDirs = [ "test/functional" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"wrapper-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/wrapper" ];
|
||||
mainPath = [ "HieWrapper.hs" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
} // rec {
|
||||
src = (pkgs.lib).mkDefault ./.;
|
||||
}
|
95
generated/8.6.5/materialized/hie-plugin-api.nix
generated
Normal file
95
generated/8.6.5/materialized/hie-plugin-api.nix
generated
Normal file
@ -0,0 +1,95 @@
|
||||
{ system
|
||||
, compiler
|
||||
, flags
|
||||
, pkgs
|
||||
, hsPkgs
|
||||
, pkgconfPkgs
|
||||
, errorHandler
|
||||
, config
|
||||
, ... }:
|
||||
{
|
||||
flags = { pedantic = false; };
|
||||
package = {
|
||||
specVersion = "2.0";
|
||||
identifier = { name = "hie-plugin-api"; version = "1.4"; };
|
||||
license = "BSD-3-Clause";
|
||||
copyright = "2015 TBD";
|
||||
maintainer = "alan.zimm@gmail.com (for now)";
|
||||
author = "Many,TBD when we release";
|
||||
homepage = "";
|
||||
url = "";
|
||||
synopsis = "Haskell IDE API for plugin communication";
|
||||
description = "Please see README.md";
|
||||
buildType = "Simple";
|
||||
isLocal = true;
|
||||
detailLevel = "FullDetails";
|
||||
licenseFiles = [ "LICENSE" ];
|
||||
dataDir = "";
|
||||
dataFiles = [];
|
||||
extraSrcFiles = [];
|
||||
extraTmpFiles = [];
|
||||
extraDocFiles = [];
|
||||
};
|
||||
components = {
|
||||
"library" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."Diff" or (errorHandler.buildDepError "Diff"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."bytestring-trie" or (errorHandler.buildDepError "bytestring-trie"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."cryptohash-sha1" or (errorHandler.buildDepError "cryptohash-sha1"))
|
||||
(hsPkgs."constrained-dynamic" or (errorHandler.buildDepError "constrained-dynamic"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."fingertree" or (errorHandler.buildDepError "fingertree"))
|
||||
(hsPkgs."free" or (errorHandler.buildDepError "free"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."unliftio" or (errorHandler.buildDepError "unliftio"))
|
||||
(hsPkgs."unliftio-core" or (errorHandler.buildDepError "unliftio-core"))
|
||||
(hsPkgs."monad-control" or (errorHandler.buildDepError "monad-control"))
|
||||
(hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."sorted-list" or (errorHandler.buildDepError "sorted-list"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."syb" or (errorHandler.buildDepError "syb"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."transformers-base" or (errorHandler.buildDepError "transformers-base"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
] ++ (if system.isWindows
|
||||
then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
|
||||
else [ (hsPkgs."unix" or (errorHandler.buildDepError "unix")) ]);
|
||||
buildable = true;
|
||||
modules = [
|
||||
"Haskell/Ide/Engine/ArtifactMap"
|
||||
"Haskell/Ide/Engine/Compat"
|
||||
"Haskell/Ide/Engine/Cradle"
|
||||
"Haskell/Ide/Engine/GhcCompat"
|
||||
"Haskell/Ide/Engine/GhcUtils"
|
||||
"Haskell/Ide/Engine/Config"
|
||||
"Haskell/Ide/Engine/Context"
|
||||
"Haskell/Ide/Engine/Ghc"
|
||||
"Haskell/Ide/Engine/GhcModuleCache"
|
||||
"Haskell/Ide/Engine/Logger"
|
||||
"Haskell/Ide/Engine/ModuleCache"
|
||||
"Haskell/Ide/Engine/MonadFunctions"
|
||||
"Haskell/Ide/Engine/MonadTypes"
|
||||
"Haskell/Ide/Engine/MultiThreadState"
|
||||
"Haskell/Ide/Engine/PluginApi"
|
||||
"Haskell/Ide/Engine/PluginUtils"
|
||||
"Haskell/Ide/Engine/PluginsIdeMonads"
|
||||
"Haskell/Ide/Engine/TypeMap"
|
||||
];
|
||||
};
|
||||
};
|
||||
} // rec {
|
||||
src = (pkgs.lib).mkDefault ./hie-plugin-api;
|
||||
}
|
1
generated/8.6.5/stack-sha256
generated
Normal file
1
generated/8.6.5/stack-sha256
generated
Normal file
@ -0,0 +1 @@
|
||||
0mvalnps5xnjg5qhr3kgl791fvxy8w1c3cki07kccps2ps9fhmj5
|
3
generated/8.8.3/materialization-id
generated
Normal file
3
generated/8.8.3/materialization-id
generated
Normal file
@ -0,0 +1,3 @@
|
||||
These materialization files were generated with
|
||||
haskell.nix af5998fe8d6b201d2a9be09993f1b9fae74e0082
|
||||
haskell-ide-engine fe630a1e31232013549518909e511924e19af4af
|
0
generated/8.8.3/materialized/.stack-to-nix.cache
generated
Normal file
0
generated/8.8.3/materialized/.stack-to-nix.cache
generated
Normal file
42
generated/8.8.3/materialized/default.nix
generated
Normal file
42
generated/8.8.3/materialized/default.nix
generated
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
extras = hackage:
|
||||
{
|
||||
packages = {
|
||||
"apply-refact" = (((hackage.apply-refact)."0.7.0.0").revisions).default;
|
||||
"Cabal" = (((hackage.Cabal)."3.0.2.0").revisions).default;
|
||||
"cabal-helper" = (((hackage.cabal-helper)."1.1.0.0").revisions).default;
|
||||
"clock" = (((hackage.clock)."0.7.2").revisions).default;
|
||||
"constrained-dynamic" = (((hackage.constrained-dynamic)."0.1.0.0").revisions).default;
|
||||
"floskell" = (((hackage.floskell)."0.10.2").revisions).default;
|
||||
"ghc-lib-parser" = (((hackage.ghc-lib-parser)."8.8.2.20200205").revisions).default;
|
||||
"ghc-lib-parser-ex" = (((hackage.ghc-lib-parser-ex)."8.8.5.3").revisions).default;
|
||||
"haddock-api" = (((hackage.haddock-api)."2.23.1").revisions).default;
|
||||
"hoogle" = (((hackage.hoogle)."5.0.17.15").revisions).default;
|
||||
"hsimport" = (((hackage.hsimport)."0.11.0").revisions).default;
|
||||
"ilist" = (((hackage.ilist)."0.3.1.0").revisions).default;
|
||||
"monad-dijkstra" = (((hackage.monad-dijkstra)."0.1.1.2").revisions).default;
|
||||
"semigroups" = (((hackage.semigroups)."0.18.5").revisions).default;
|
||||
"temporary" = (((hackage.temporary)."1.2.1.1").revisions).default;
|
||||
"unliftio-core" = (((hackage.unliftio-core)."0.2.0.1").revisions).default;
|
||||
"hie-bios" = (((hackage.hie-bios)."0.5.0").revisions).default;
|
||||
"bytestring-trie" = (((hackage.bytestring-trie)."0.2.5.0").revisions).r1;
|
||||
haskell-ide-engine = ./haskell-ide-engine.nix;
|
||||
hie-plugin-api = ./hie-plugin-api.nix;
|
||||
};
|
||||
};
|
||||
resolver = "lts-15.10";
|
||||
modules = [
|
||||
({ lib, ... }:
|
||||
{
|
||||
packages = {
|
||||
"haskell-ide-engine" = {
|
||||
flags = { "pedantic" = lib.mkOverride 900 true; };
|
||||
};
|
||||
"hie-plugin-api" = {
|
||||
flags = { "pedantic" = lib.mkOverride 900 true; };
|
||||
};
|
||||
};
|
||||
})
|
||||
{ packages = {}; }
|
||||
];
|
||||
}
|
358
generated/8.8.3/materialized/haskell-ide-engine.nix
generated
Normal file
358
generated/8.8.3/materialized/haskell-ide-engine.nix
generated
Normal file
@ -0,0 +1,358 @@
|
||||
{ system
|
||||
, compiler
|
||||
, flags
|
||||
, pkgs
|
||||
, hsPkgs
|
||||
, pkgconfPkgs
|
||||
, errorHandler
|
||||
, config
|
||||
, ... }:
|
||||
{
|
||||
flags = { pedantic = false; };
|
||||
package = {
|
||||
specVersion = "2.0";
|
||||
identifier = { name = "haskell-ide-engine"; version = "1.4"; };
|
||||
license = "BSD-3-Clause";
|
||||
copyright = "2015 - 2019, TBD";
|
||||
maintainer = "alan.zimm@gmail.com (for now)";
|
||||
author = "Many, TBD when we release";
|
||||
homepage = "http://github.com/githubuser/haskell-ide-engine#readme";
|
||||
url = "";
|
||||
synopsis = "Provide a common engine to power any Haskell IDE";
|
||||
description = "Please see README.md";
|
||||
buildType = "Simple";
|
||||
isLocal = true;
|
||||
detailLevel = "FullDetails";
|
||||
licenseFiles = [ "LICENSE" ];
|
||||
dataDir = "";
|
||||
dataFiles = [];
|
||||
extraSrcFiles = [];
|
||||
extraTmpFiles = [];
|
||||
extraDocFiles = [];
|
||||
};
|
||||
components = {
|
||||
"library" = {
|
||||
depends = [
|
||||
(hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
|
||||
(hsPkgs."Diff" or (errorHandler.buildDepError "Diff"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."apply-refact" or (errorHandler.buildDepError "apply-refact"))
|
||||
(hsPkgs."async" or (errorHandler.buildDepError "async"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."brittany" or (errorHandler.buildDepError "brittany"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."Cabal" or (errorHandler.buildDepError "Cabal"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."floskell" or (errorHandler.buildDepError "floskell"))
|
||||
(hsPkgs."fold-debounce" or (errorHandler.buildDepError "fold-debounce"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."ghc-exactprint" or (errorHandler.buildDepError "ghc-exactprint"))
|
||||
(hsPkgs."gitrev" or (errorHandler.buildDepError "gitrev"))
|
||||
(hsPkgs."haddock-api" or (errorHandler.buildDepError "haddock-api"))
|
||||
(hsPkgs."haddock-library" or (errorHandler.buildDepError "haddock-library"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."haskell-src-exts" or (errorHandler.buildDepError "haskell-src-exts"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hoogle" or (errorHandler.buildDepError "hoogle"))
|
||||
(hsPkgs."hsimport" or (errorHandler.buildDepError "hsimport"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."lifted-async" or (errorHandler.buildDepError "lifted-async"))
|
||||
(hsPkgs."lens" or (errorHandler.buildDepError "lens"))
|
||||
(hsPkgs."monoid-subclasses" or (errorHandler.buildDepError "monoid-subclasses"))
|
||||
(hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."parsec" or (errorHandler.buildDepError "parsec"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."safe" or (errorHandler.buildDepError "safe"))
|
||||
(hsPkgs."sorted-list" or (errorHandler.buildDepError "sorted-list"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."syb" or (errorHandler.buildDepError "syb"))
|
||||
(hsPkgs."tagsoup" or (errorHandler.buildDepError "tagsoup"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
|
||||
(hsPkgs."unix-time" or (errorHandler.buildDepError "unix-time"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."vector" or (errorHandler.buildDepError "vector"))
|
||||
(hsPkgs."versions" or (errorHandler.buildDepError "versions"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."bytestring-trie" or (errorHandler.buildDepError "bytestring-trie"))
|
||||
(hsPkgs."unliftio" or (errorHandler.buildDepError "unliftio"))
|
||||
(hsPkgs."hlint" or (errorHandler.buildDepError "hlint"))
|
||||
] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).ge "8.6") (hsPkgs."ormolu" or (errorHandler.buildDepError "ormolu"));
|
||||
buildable = true;
|
||||
modules = [
|
||||
"Paths_haskell_ide_engine"
|
||||
"Haskell/Ide/Engine/Channel"
|
||||
"Haskell/Ide/Engine/CodeActions"
|
||||
"Haskell/Ide/Engine/Completions"
|
||||
"Haskell/Ide/Engine/Reactor"
|
||||
"Haskell/Ide/Engine/Options"
|
||||
"Haskell/Ide/Engine/Plugin/ApplyRefact"
|
||||
"Haskell/Ide/Engine/Plugin/Brittany"
|
||||
"Haskell/Ide/Engine/Plugin/Example2"
|
||||
"Haskell/Ide/Engine/Plugin/Floskell"
|
||||
"Haskell/Ide/Engine/Plugin/Haddock"
|
||||
"Haskell/Ide/Engine/Plugin/HfaAlign"
|
||||
"Haskell/Ide/Engine/Plugin/HsImport"
|
||||
"Haskell/Ide/Engine/Plugin/Liquid"
|
||||
"Haskell/Ide/Engine/Plugin/Ormolu"
|
||||
"Haskell/Ide/Engine/Plugin/Package"
|
||||
"Haskell/Ide/Engine/Plugin/Package/Compat"
|
||||
"Haskell/Ide/Engine/Plugin/Pragmas"
|
||||
"Haskell/Ide/Engine/Plugin/Generic"
|
||||
"Haskell/Ide/Engine/Plugin/GhcMod"
|
||||
"Haskell/Ide/Engine/Scheduler"
|
||||
"Haskell/Ide/Engine/Support/FromHaRe"
|
||||
"Haskell/Ide/Engine/Support/Hoogle"
|
||||
"Haskell/Ide/Engine/Support/Fuzzy"
|
||||
"Haskell/Ide/Engine/Support/HieExtras"
|
||||
"Haskell/Ide/Engine/Server"
|
||||
"Haskell/Ide/Engine/Types"
|
||||
"Haskell/Ide/Engine/Version"
|
||||
];
|
||||
hsSourceDirs = [ "src" ];
|
||||
};
|
||||
sublibs = {
|
||||
"hie-test-utils" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."blaze-markup" or (errorHandler.buildDepError "blaze-markup"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."hspec-core" or (errorHandler.buildDepError "hspec-core"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "TestUtils" ];
|
||||
hsSourceDirs = [ "test/utils" ];
|
||||
};
|
||||
};
|
||||
exes = {
|
||||
"hie" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "Paths_haskell_ide_engine" "RunTest" ];
|
||||
hsSourceDirs = [ "app" ];
|
||||
mainPath = [
|
||||
"MainHie.hs"
|
||||
] ++ (pkgs.lib).optional (flags.pedantic) "";
|
||||
};
|
||||
"hie-wrapper" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."optparse-simple" or (errorHandler.buildDepError "optparse-simple"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [ "Paths_haskell_ide_engine" ];
|
||||
hsSourceDirs = [ "app" ];
|
||||
mainPath = [
|
||||
"HieWrapper.hs"
|
||||
] ++ (pkgs.lib).optional (flags.pedantic) "";
|
||||
};
|
||||
};
|
||||
tests = {
|
||||
"unit-test" = {
|
||||
depends = [
|
||||
(hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."free" or (errorHandler.buildDepError "free"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hoogle" or (errorHandler.buildDepError "hoogle"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."quickcheck-instances" or (errorHandler.buildDepError "quickcheck-instances"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.cabal-helper or (pkgs.buildPackages.cabal-helper or (errorHandler.buildToolDepError "cabal-helper")))
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [
|
||||
"ApplyRefactPluginSpec"
|
||||
"CabalHelperSpec"
|
||||
"CodeActionsSpec"
|
||||
"ContextSpec"
|
||||
"DiffSpec"
|
||||
"ExtensibleStateSpec"
|
||||
"GenericPluginSpec"
|
||||
"GhcModPluginSpec"
|
||||
"HooglePluginSpec"
|
||||
"HsImportSpec"
|
||||
"JsonSpec"
|
||||
"LiquidSpec"
|
||||
"OptionsSpec"
|
||||
"PackagePluginSpec"
|
||||
"Paths_haskell_ide_engine"
|
||||
"Spec"
|
||||
];
|
||||
hsSourceDirs = [ "test/unit" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"dispatcher-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/dispatcher" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"plugin-dispatcher-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/plugin-dispatcher" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"func-test" = {
|
||||
depends = [
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."lsp-test" or (errorHandler.buildDepError "lsp-test"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."haskell-lsp-types" or (errorHandler.buildDepError "haskell-lsp-types"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hie-test-utils" or (errorHandler.buildDepError "hie-test-utils"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."lens" or (errorHandler.buildDepError "lens"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
];
|
||||
build-tools = [
|
||||
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover")))
|
||||
(hsPkgs.buildPackages.haskell-ide-engine or (pkgs.buildPackages.haskell-ide-engine or (errorHandler.buildToolDepError "haskell-ide-engine")))
|
||||
(hsPkgs.buildPackages.cabal-helper or (pkgs.buildPackages.cabal-helper or (errorHandler.buildToolDepError "cabal-helper")))
|
||||
];
|
||||
buildable = true;
|
||||
modules = [
|
||||
"CompletionSpec"
|
||||
"CommandSpec"
|
||||
"DeferredSpec"
|
||||
"DefinitionSpec"
|
||||
"DiagnosticsSpec"
|
||||
"FormatSpec"
|
||||
"FunctionalBadProjectSpec"
|
||||
"FunctionalCodeActionsSpec"
|
||||
"FunctionalLiquidSpec"
|
||||
"FunctionalSpec"
|
||||
"HieBiosSpec"
|
||||
"HighlightSpec"
|
||||
"HoverSpec"
|
||||
"ProgressSpec"
|
||||
"ReferencesSpec"
|
||||
"RenameSpec"
|
||||
"SymbolsSpec"
|
||||
"TypeDefinitionSpec"
|
||||
"Utils"
|
||||
];
|
||||
hsSourceDirs = [ "test/functional" ];
|
||||
mainPath = [ "Main.hs" ];
|
||||
};
|
||||
"wrapper-test" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."hspec" or (errorHandler.buildDepError "hspec"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."haskell-ide-engine" or (errorHandler.buildDepError "haskell-ide-engine"))
|
||||
(hsPkgs."hie-plugin-api" or (errorHandler.buildDepError "hie-plugin-api"))
|
||||
];
|
||||
buildable = true;
|
||||
hsSourceDirs = [ "test/wrapper" ];
|
||||
mainPath = [ "HieWrapper.hs" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
} // rec {
|
||||
src = (pkgs.lib).mkDefault ./.;
|
||||
}
|
95
generated/8.8.3/materialized/hie-plugin-api.nix
generated
Normal file
95
generated/8.8.3/materialized/hie-plugin-api.nix
generated
Normal file
@ -0,0 +1,95 @@
|
||||
{ system
|
||||
, compiler
|
||||
, flags
|
||||
, pkgs
|
||||
, hsPkgs
|
||||
, pkgconfPkgs
|
||||
, errorHandler
|
||||
, config
|
||||
, ... }:
|
||||
{
|
||||
flags = { pedantic = false; };
|
||||
package = {
|
||||
specVersion = "2.0";
|
||||
identifier = { name = "hie-plugin-api"; version = "1.4"; };
|
||||
license = "BSD-3-Clause";
|
||||
copyright = "2015 TBD";
|
||||
maintainer = "alan.zimm@gmail.com (for now)";
|
||||
author = "Many,TBD when we release";
|
||||
homepage = "";
|
||||
url = "";
|
||||
synopsis = "Haskell IDE API for plugin communication";
|
||||
description = "Please see README.md";
|
||||
buildType = "Simple";
|
||||
isLocal = true;
|
||||
detailLevel = "FullDetails";
|
||||
licenseFiles = [ "LICENSE" ];
|
||||
dataDir = "";
|
||||
dataFiles = [];
|
||||
extraSrcFiles = [];
|
||||
extraTmpFiles = [];
|
||||
extraDocFiles = [];
|
||||
};
|
||||
components = {
|
||||
"library" = {
|
||||
depends = [
|
||||
(hsPkgs."base" or (errorHandler.buildDepError "base"))
|
||||
(hsPkgs."Diff" or (errorHandler.buildDepError "Diff"))
|
||||
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
|
||||
(hsPkgs."bytestring-trie" or (errorHandler.buildDepError "bytestring-trie"))
|
||||
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
|
||||
(hsPkgs."cryptohash-sha1" or (errorHandler.buildDepError "cryptohash-sha1"))
|
||||
(hsPkgs."constrained-dynamic" or (errorHandler.buildDepError "constrained-dynamic"))
|
||||
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
|
||||
(hsPkgs."data-default" or (errorHandler.buildDepError "data-default"))
|
||||
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
|
||||
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
|
||||
(hsPkgs."fingertree" or (errorHandler.buildDepError "fingertree"))
|
||||
(hsPkgs."free" or (errorHandler.buildDepError "free"))
|
||||
(hsPkgs."ghc" or (errorHandler.buildDepError "ghc"))
|
||||
(hsPkgs."hie-bios" or (errorHandler.buildDepError "hie-bios"))
|
||||
(hsPkgs."cabal-helper" or (errorHandler.buildDepError "cabal-helper"))
|
||||
(hsPkgs."haskell-lsp" or (errorHandler.buildDepError "haskell-lsp"))
|
||||
(hsPkgs."hslogger" or (errorHandler.buildDepError "hslogger"))
|
||||
(hsPkgs."unliftio" or (errorHandler.buildDepError "unliftio"))
|
||||
(hsPkgs."unliftio-core" or (errorHandler.buildDepError "unliftio-core"))
|
||||
(hsPkgs."monad-control" or (errorHandler.buildDepError "monad-control"))
|
||||
(hsPkgs."mtl" or (errorHandler.buildDepError "mtl"))
|
||||
(hsPkgs."process" or (errorHandler.buildDepError "process"))
|
||||
(hsPkgs."sorted-list" or (errorHandler.buildDepError "sorted-list"))
|
||||
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
|
||||
(hsPkgs."syb" or (errorHandler.buildDepError "syb"))
|
||||
(hsPkgs."text" or (errorHandler.buildDepError "text"))
|
||||
(hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
|
||||
(hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers"))
|
||||
(hsPkgs."transformers-base" or (errorHandler.buildDepError "transformers-base"))
|
||||
(hsPkgs."yaml" or (errorHandler.buildDepError "yaml"))
|
||||
] ++ (if system.isWindows
|
||||
then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
|
||||
else [ (hsPkgs."unix" or (errorHandler.buildDepError "unix")) ]);
|
||||
buildable = true;
|
||||
modules = [
|
||||
"Haskell/Ide/Engine/ArtifactMap"
|
||||
"Haskell/Ide/Engine/Compat"
|
||||
"Haskell/Ide/Engine/Cradle"
|
||||
"Haskell/Ide/Engine/GhcCompat"
|
||||
"Haskell/Ide/Engine/GhcUtils"
|
||||
"Haskell/Ide/Engine/Config"
|
||||
"Haskell/Ide/Engine/Context"
|
||||
"Haskell/Ide/Engine/Ghc"
|
||||
"Haskell/Ide/Engine/GhcModuleCache"
|
||||
"Haskell/Ide/Engine/Logger"
|
||||
"Haskell/Ide/Engine/ModuleCache"
|
||||
"Haskell/Ide/Engine/MonadFunctions"
|
||||
"Haskell/Ide/Engine/MonadTypes"
|
||||
"Haskell/Ide/Engine/MultiThreadState"
|
||||
"Haskell/Ide/Engine/PluginApi"
|
||||
"Haskell/Ide/Engine/PluginUtils"
|
||||
"Haskell/Ide/Engine/PluginsIdeMonads"
|
||||
"Haskell/Ide/Engine/TypeMap"
|
||||
];
|
||||
};
|
||||
};
|
||||
} // rec {
|
||||
src = (pkgs.lib).mkDefault ./hie-plugin-api;
|
||||
}
|
1
generated/8.8.3/stack-sha256
generated
Normal file
1
generated/8.8.3/stack-sha256
generated
Normal file
@ -0,0 +1 @@
|
||||
0fd2gzgg626r718l21bmgs689wy0x9b9690mp7sdx99jp1bjpd77
|
1
generated/stable/ghcBaseLibraries/ghc842
generated
1
generated/stable/ghcBaseLibraries/ghc842
generated
@ -1 +0,0 @@
|
||||
Cabal-2.2.0.1 array-0.5.2.0 base-4.11.1.0 binary-0.8.5.1 bytestring-0.10.8.2 containers-0.5.11.0 deepseq-1.4.3.0 directory-1.3.1.5 filepath-1.4.2 ghc-8.4.4 ghc-boot-8.4.4 ghc-boot-th-8.4.4 ghc-compact-0.1.0.0 ghc-prim-0.5.2.0 ghci-8.4.4 haskeline-0.7.4.2 hpc-0.6.0.3 integer-gmp-1.0.2.0 mtl-2.2.2 parsec-3.1.13.0 pretty-1.1.3.6 process-1.6.3.0 rts-1.0 stm-2.4.5.1 template-haskell-2.13.0.0 terminfo-0.4.1.1 text-1.2.3.1 time-1.8.0.2 transformers-0.5.5.0 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc843
generated
1
generated/stable/ghcBaseLibraries/ghc843
generated
@ -1 +0,0 @@
|
||||
Cabal-2.2.0.1 array-0.5.2.0 base-4.11.1.0 binary-0.8.5.1 bytestring-0.10.8.2 containers-0.5.11.0 deepseq-1.4.3.0 directory-1.3.1.5 filepath-1.4.2 ghc-8.4.4 ghc-boot-8.4.4 ghc-boot-th-8.4.4 ghc-compact-0.1.0.0 ghc-prim-0.5.2.0 ghci-8.4.4 haskeline-0.7.4.2 hpc-0.6.0.3 integer-gmp-1.0.2.0 mtl-2.2.2 parsec-3.1.13.0 pretty-1.1.3.6 process-1.6.3.0 rts-1.0 stm-2.4.5.1 template-haskell-2.13.0.0 terminfo-0.4.1.1 text-1.2.3.1 time-1.8.0.2 transformers-0.5.5.0 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc844
generated
1
generated/stable/ghcBaseLibraries/ghc844
generated
@ -1 +0,0 @@
|
||||
Cabal-2.2.0.1 array-0.5.2.0 base-4.11.1.0 binary-0.8.5.1 bytestring-0.10.8.2 containers-0.5.11.0 deepseq-1.4.3.0 directory-1.3.1.5 filepath-1.4.2 ghc-8.4.4 ghc-boot-8.4.4 ghc-boot-th-8.4.4 ghc-compact-0.1.0.0 ghc-prim-0.5.2.0 ghci-8.4.4 haskeline-0.7.4.2 hpc-0.6.0.3 integer-gmp-1.0.2.0 mtl-2.2.2 parsec-3.1.13.0 pretty-1.1.3.6 process-1.6.3.0 rts-1.0 stm-2.4.5.1 template-haskell-2.13.0.0 terminfo-0.4.1.1 text-1.2.3.1 time-1.8.0.2 transformers-0.5.5.0 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc864
generated
1
generated/stable/ghcBaseLibraries/ghc864
generated
@ -1 +0,0 @@
|
||||
Cabal-2.4.0.1 array-0.5.2.0 base-4.12.0.0 binary-0.8.6.0 bytestring-0.10.8.2 containers-0.6.0.1 deepseq-1.4.4.0 directory-1.3.3.0 filepath-1.4.2.1 ghc-8.6.1 ghc-boot-8.6.1 ghc-boot-th-8.6.1 ghc-compact-0.1.0.0 ghc-heap-8.6.1 ghc-prim-0.5.3 ghci-8.6.1 haskeline-0.7.4.3 hpc-0.6.0.3 integer-gmp-1.0.2.0 libiserv-8.6.1 mtl-2.2.2 parsec-3.1.13.0 pretty-1.1.3.6 process-1.6.3.0 rts-1.0 stm-2.5.0.0 template-haskell-2.14.0.0 terminfo-0.4.1.2 text-1.2.3.1 time-1.8.0.2 transformers-0.5.5.0 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc865
generated
1
generated/stable/ghcBaseLibraries/ghc865
generated
@ -1 +0,0 @@
|
||||
Cabal-2.4.0.1 array-0.5.2.0 base-4.12.0.0 binary-0.8.6.0 bytestring-0.10.8.2 containers-0.6.0.1 deepseq-1.4.4.0 directory-1.3.3.0 filepath-1.4.2.1 ghc-8.6.1 ghc-boot-8.6.1 ghc-boot-th-8.6.1 ghc-compact-0.1.0.0 ghc-heap-8.6.1 ghc-prim-0.5.3 ghci-8.6.1 haskeline-0.7.4.3 hpc-0.6.0.3 integer-gmp-1.0.2.0 libiserv-8.6.1 mtl-2.2.2 parsec-3.1.13.0 pretty-1.1.3.6 process-1.6.3.0 rts-1.0 stm-2.5.0.0 template-haskell-2.14.0.0 terminfo-0.4.1.2 text-1.2.3.1 time-1.8.0.2 transformers-0.5.5.0 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc881
generated
1
generated/stable/ghcBaseLibraries/ghc881
generated
@ -1 +0,0 @@
|
||||
Cabal-3.0.0.0 array-0.5.4.0 base-4.13.0.0 binary-0.8.7.0 bytestring-0.10.9.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.3.2 filepath-1.4.2.1 ghc-8.8.1 ghc-boot-8.8.1 ghc-boot-th-8.8.1 ghc-compact-0.1.0.0 ghc-heap-8.8.1 ghc-prim-0.5.3 ghci-8.8.1 haskeline-0.7.5.0 hpc-0.6.0.3 integer-gmp-1.0.2.0 libiserv-8.8.1 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6 process-1.6.5.1 rts-1.0 stm-2.5.0.0 template-haskell-2.15.0.0 terminfo-0.4.1.4 text-1.2.4.0 time-1.9.3 transformers-0.5.6.2 unix-2.7.2.2 xhtml-3000.2.2.1
|
1
generated/stable/ghcBaseLibraries/ghc882
generated
1
generated/stable/ghcBaseLibraries/ghc882
generated
@ -1 +0,0 @@
|
||||
Cabal-3.0.0.0 array-0.5.4.0 base-4.13.0.0 binary-0.8.7.0 bytestring-0.10.9.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.3.2 filepath-1.4.2.1 ghc-8.8.1 ghc-boot-8.8.1 ghc-boot-th-8.8.1 ghc-compact-0.1.0.0 ghc-heap-8.8.1 ghc-prim-0.5.3 ghci-8.8.1 haskeline-0.7.5.0 hpc-0.6.0.3 integer-gmp-1.0.2.0 libiserv-8.8.1 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6 process-1.6.5.1 rts-1.0 stm-2.5.0.0 template-haskell-2.15.0.0 terminfo-0.4.1.4 text-1.2.4.0 time-1.9.3 transformers-0.5.6.2 unix-2.7.2.2 xhtml-3000.2.2.1
|
@ -1 +0,0 @@
|
||||
0rxjkfiq53ibz0rzggvnp341b6kgzgfr9x6q07m2my7ijlirs2da
|
@ -1 +0,0 @@
|
||||
195rzph1jfrbccky5m2wvm6d0x0v0zy6iq630wrlbl1dx7jrji37
|
@ -1 +0,0 @@
|
||||
1bs84r8mbxs9bkkbl0vsazwrc77gvfc140kn8rknh4vhqshmjb15
|
@ -1 +0,0 @@
|
||||
1b5wix9kr5s3hscpl425si0zw00zzijc9xrcph6l2myh4n5nvcm0
|
@ -1 +0,0 @@
|
||||
0j4m572dz6ak49mf3c0q4aq1z0qzm7qn08amygym27j55gh197zf
|
37581
generated/stable/stack2nix/ghc842.nix
generated
37581
generated/stable/stack2nix/ghc842.nix
generated
File diff suppressed because it is too large
Load Diff
41220
generated/stable/stack2nix/ghc843.nix
generated
41220
generated/stable/stack2nix/ghc843.nix
generated
File diff suppressed because it is too large
Load Diff
41551
generated/stable/stack2nix/ghc844.nix
generated
41551
generated/stable/stack2nix/ghc844.nix
generated
File diff suppressed because it is too large
Load Diff
40226
generated/stable/stack2nix/ghc864.nix
generated
40226
generated/stable/stack2nix/ghc864.nix
generated
File diff suppressed because it is too large
Load Diff
42529
generated/stable/stack2nix/ghc865.nix
generated
42529
generated/stable/stack2nix/ghc865.nix
generated
File diff suppressed because it is too large
Load Diff
35710
generated/stable/stack2nix/ghc881.nix
generated
35710
generated/stable/stack2nix/ghc881.nix
generated
File diff suppressed because it is too large
Load Diff
36869
generated/stable/stack2nix/ghc882.nix
generated
36869
generated/stable/stack2nix/ghc882.nix
generated
File diff suppressed because it is too large
Load Diff
1
generated/stable/stack2nix/revision
generated
1
generated/stable/stack2nix/revision
generated
@ -1 +0,0 @@
|
||||
1.1
|
1
generated/unstable
generated
1
generated/unstable
generated
@ -1 +0,0 @@
|
||||
stable
|
@ -1,4 +0,0 @@
|
||||
import (fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/tarball/acbdaa569f4ee387386ebe1b9e60b9f95b4ab21b";
|
||||
sha256 = "0xzyghyxk3hwhicgdbi8yv8b8ijy1rgdsj5wb26y5j322v96zlpz";
|
||||
}) {}
|
@ -1 +0,0 @@
|
||||
c47ac0d8bf43543d8dcef4895167dd1f7af9d968
|
@ -1 +0,0 @@
|
||||
4708d3f84bce8c6bec0d989df1b33c59beb97821
|
@ -1 +0,0 @@
|
||||
91ca88b3e6b4d57640c213e755077b2d93d0a8bd
|
@ -1 +0,0 @@
|
||||
b5c02d2028dbfe33f05a6134a7190af74d792b74
|
@ -1 +0,0 @@
|
||||
d73f16d6767e99675682f822dac3017bf9af1e83
|
@ -1 +0,0 @@
|
||||
9b3e5a3aab728e7cea2da12b6db300136604be3a
|
@ -1 +0,0 @@
|
||||
9b3e5a3aab728e7cea2da12b6db300136604be3a
|
@ -1 +0,0 @@
|
||||
106db715f9d7b2c2a87e2142ebefa77d7231214f
|
@ -1 +0,0 @@
|
||||
d73f16d6767e99675682f822dac3017bf9af1e83
|
@ -1 +0,0 @@
|
||||
650a295621b27c4ebe0fa64a63fd25323e64deb3
|
@ -1 +0,0 @@
|
||||
f77e057cda60a3f96a4010a698ff3be311bf18c6
|
@ -1 +0,0 @@
|
||||
f77e057cda60a3f96a4010a698ff3be311bf18c6
|
37
overlay.nix
Normal file
37
overlay.nix
Normal file
@ -0,0 +1,37 @@
|
||||
let
|
||||
build = import ./build.nix;
|
||||
in final: prev:
|
||||
let
|
||||
glibcName =
|
||||
if final.stdenv.hostPlatform.isDarwin
|
||||
# glibc matching doesn't matter for darwin
|
||||
then "glibc-2.30"
|
||||
else final.glibc.name;
|
||||
in {
|
||||
|
||||
haskell = prev.haskell // {
|
||||
packageOverrides = final.lib.composeExtensions prev.haskell.packageOverrides
|
||||
(hfinal: hprev: {
|
||||
hie = (build {
|
||||
inherit glibcName;
|
||||
ghcVersion = hfinal.ghc.version;
|
||||
}).combined;
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
# Only include this part if a haskell-nix overlay is there
|
||||
// prev.lib.optionalAttrs (prev ? haskell-nix) {
|
||||
|
||||
haskell-nix = prev.haskell-nix // {
|
||||
custom-tools = prev.haskell-nix.custom-tools // {
|
||||
hie.unstable = args: (build {
|
||||
inherit glibcName;
|
||||
ghcVersion = if args ? compiler-nix-name
|
||||
then final.haskell-nix.compiler.${args.compiler-nix-name}.version
|
||||
else args.ghc.version; # deprecated
|
||||
}).combined;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
self: super: {
|
||||
Cabal = null;
|
||||
hsimport = super.hsimport.overrideAttrs (old: {
|
||||
# See https://github.com/NixOS/nixpkgs/pull/42224
|
||||
# https://github.com/NixOS/nixpkgs/commit/f8a158c3466
|
||||
# Necessary because ghc842 uses an older nixpkgs version
|
||||
configureFlags = [ "--libsubdir=$abi/$libname" ];
|
||||
});
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
self: super: {
|
||||
Cabal = null;
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
self: super: {
|
||||
Cabal = null;
|
||||
}
|
35
sources.nix
Normal file
35
sources.nix
Normal file
@ -0,0 +1,35 @@
|
||||
let
|
||||
haskellNixVersion = "af5998fe8d6b201d2a9be09993f1b9fae74e0082";
|
||||
haskellNixSrc = fetchTarball {
|
||||
url = "https://github.com/input-output-hk/haskell.nix/tarball/${haskellNixVersion}";
|
||||
sha256 = "0z5w99wkkpg2disvwjnsyp45w0bhdkrhvnrpz5nbwhhp21c71mbn";
|
||||
};
|
||||
haskellNix = import haskellNixSrc {};
|
||||
|
||||
glibcSpecificPkgs = {
|
||||
"glibc-2.30" = import haskellNix.sources.nixpkgs-2003 haskellNix.nixpkgsArgs;
|
||||
"glibc-2.27" = import haskellNix.sources.nixpkgs-1909 haskellNix.nixpkgsArgs;
|
||||
};
|
||||
|
||||
pkgs = glibcSpecificPkgs."glibc-2.30";
|
||||
|
||||
hie = rec {
|
||||
# unstable-2020-05-23
|
||||
version = "fe630a1e31232013549518909e511924e19af4af";
|
||||
src = fetchTarball {
|
||||
url = "https://github.com/haskell/haskell-ide-engine/archive/${version}.tar.gz";
|
||||
sha256 = "1lbbzk9kj39h79wb8imv5s22y592cyyrk06y24glrcxh5bzghb9l";
|
||||
};
|
||||
};
|
||||
|
||||
# String gets written to the generated directory, so CI can quickly know
|
||||
# whether materialization files need to be updated
|
||||
materializationId = builtins.toFile "materialization-id" ''
|
||||
These materialization files were generated with
|
||||
haskell.nix ${haskellNixVersion}
|
||||
haskell-ide-engine ${hie.version}
|
||||
'';
|
||||
|
||||
in {
|
||||
inherit glibcSpecificPkgs pkgs hie materializationId;
|
||||
}
|
46
src/Cache.hs
46
src/Cache.hs
@ -1,46 +0,0 @@
|
||||
module Cache
|
||||
( get
|
||||
, getLocal
|
||||
, Expires(..)
|
||||
, Key
|
||||
, Value
|
||||
) where
|
||||
|
||||
import Control.Monad.IO.Class
|
||||
import qualified Data.ByteString.Lazy.Char8 as BS
|
||||
import Data.Time
|
||||
import System.Directory
|
||||
import System.FilePath
|
||||
|
||||
type Key = FilePath
|
||||
type Value = BS.ByteString
|
||||
|
||||
data Expires = ExpiresNever
|
||||
| ExpiresAfter NominalDiffTime
|
||||
|
||||
get :: MonadIO m => Expires -> Key -> m Value -> m Value
|
||||
get expires key generator = do
|
||||
path <- liftIO $ (</> key) <$> getXdgDirectory XdgCache "all-hies"
|
||||
getWithBase expires path generator
|
||||
|
||||
getLocal :: MonadIO m => Expires -> Key -> m Value -> m Value
|
||||
getLocal expires key generator = do
|
||||
path <- liftIO $ (</> key) <$> getCurrentDirectory
|
||||
getWithBase expires path generator
|
||||
|
||||
getWithBase :: MonadIO m => Expires -> FilePath -> m Value -> m Value
|
||||
getWithBase expires path generator = do
|
||||
exists <- liftIO $ doesFileExist path
|
||||
needsRefresh <- if exists then case expires of
|
||||
ExpiresNever -> return False
|
||||
ExpiresAfter seconds -> do
|
||||
now <- liftIO getCurrentTime
|
||||
modTime <- liftIO $ getModificationTime path
|
||||
return $ now `diffUTCTime` modTime > seconds
|
||||
else return True
|
||||
if needsRefresh then do
|
||||
contents <- generator
|
||||
liftIO $ createDirectoryIfMissing True (takeDirectory path)
|
||||
liftIO $ BS.writeFile path contents
|
||||
return contents
|
||||
else liftIO $ BS.readFile path
|
313
src/Main.hs
313
src/Main.hs
@ -1,313 +0,0 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ViewPatterns #-}
|
||||
|
||||
import Control.Exception (handleJust)
|
||||
import Control.Monad.Reader
|
||||
import Data.Aeson (decode)
|
||||
import qualified Data.ByteString.Lazy.Char8 as BS
|
||||
import Data.Char (isDigit, isHexDigit)
|
||||
import Data.List (intercalate, isPrefixOf, sortOn)
|
||||
import Data.Maybe
|
||||
import Data.Ord (Down(..))
|
||||
import Data.Time
|
||||
import Distribution.System (Arch (..), OS (..), Platform (..))
|
||||
import Network.HTTP.Client
|
||||
import Network.HTTP.Client.TLS
|
||||
import Stack2nix
|
||||
import System.Console.Haskeline hiding (getHistory)
|
||||
import System.Directory
|
||||
import System.Environment (getArgs, setEnv)
|
||||
import System.Exit (ExitCode (..))
|
||||
import System.FilePath
|
||||
import System.IO (hClose)
|
||||
import System.IO.Temp
|
||||
import System.Process
|
||||
import Text.Regex.Applicative
|
||||
|
||||
import qualified Cache
|
||||
import Options
|
||||
|
||||
data Env = Env
|
||||
{ cacheDir :: FilePath
|
||||
, manager :: Manager
|
||||
, opts :: Options
|
||||
}
|
||||
|
||||
|
||||
-- | Initializes the read-only environment
|
||||
getEnv :: IO Env
|
||||
getEnv = Env
|
||||
<$> getXdgDirectory XdgCache "all-hies"
|
||||
<*> newTlsManager
|
||||
<*> getOptions
|
||||
|
||||
type App = InputT (ReaderT Env IO)
|
||||
|
||||
hie :: App Repository
|
||||
hie = lift $ asks $ Repository . optRepo . opts
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
env <- getEnv
|
||||
runReaderT (runInputT haskelineSettings run) env
|
||||
where haskelineSettings = defaultSettings { historyFile = Nothing }
|
||||
|
||||
run :: App ()
|
||||
run = do
|
||||
updateRepo nixpkgs
|
||||
|
||||
repoPath nixpkgs >>= \path -> liftIO $ setEnv "NIX_PATH" ("nixpkgs=" ++ path)
|
||||
|
||||
name <- lift $ asks (optName . opts)
|
||||
rev <- lift $ asks (optRev . opts)
|
||||
regenerate ("generated" </> name) rev
|
||||
|
||||
cleanGenerated :: FilePath -> App ()
|
||||
cleanGenerated root = do
|
||||
cleanDirectory root
|
||||
liftIO $ createDirectory (root </> "nixpkgsHashes")
|
||||
liftIO $ createDirectory (root </> "ghcBaseLibraries")
|
||||
liftIO $ createDirectory (root </> "stack2nix")
|
||||
|
||||
-- | Makes sure that the given directory is existent and empty
|
||||
cleanDirectory :: FilePath -> App ()
|
||||
cleanDirectory path = liftIO $ do
|
||||
liftIO $ putStrLn $ "Cleaning directory " ++ path
|
||||
exists <- doesPathExist path
|
||||
when exists $ removeDirectoryRecursive path
|
||||
createDirectoryIfMissing True path
|
||||
|
||||
-- | Returns the newest tag in the given repository
|
||||
latestTag :: Repository -> App String
|
||||
latestTag repo = do
|
||||
-- TODO: Use git ls-remote --tags --sort=creatordate --refs instead?
|
||||
tags <- lines <$> git repo [ "tag", "--sort", "creatordate" ]
|
||||
return $ last tags
|
||||
|
||||
-- | Returns the git hash for a specified revision in the given repository
|
||||
revHash :: Repository -> String -> App (String, String)
|
||||
revHash (Repository url) rev = do
|
||||
result <- liftIO $ lines <$> readProcess "git" [ "ls-remote", url, rev ] ""
|
||||
case result of
|
||||
[] -> fail $ "No such revision: " ++ rev
|
||||
line:_ -> return (hash, ref) where
|
||||
[hash, ref] = words line
|
||||
|
||||
-- | A call to stack2nix for generating a haskell-ide-engine expression at a specified path, for a specific revision and ghc version
|
||||
callStack2nix :: String -> Version -> App BS.ByteString
|
||||
callStack2nix rev version = do
|
||||
Repository repo <- hie
|
||||
|
||||
liftIO $ putStrLn $ "Running stack2nix for hie revision " ++ rev ++ " and ghc version " ++ show version
|
||||
|
||||
liftIO $ withSystemTempFile "all-hies-stack2nix" $ \path handle -> do
|
||||
hClose handle
|
||||
handleJust (\e -> if e == ExitSuccess then Just () else Nothing) return $
|
||||
stack2nix Args
|
||||
{ argRev = Just rev
|
||||
, argOutFile = Just path
|
||||
, argStackYaml = "stack-" ++ show version ++ ".yaml"
|
||||
, argThreads = 4
|
||||
, argTest = False
|
||||
, argBench = False
|
||||
, argHaddock = False
|
||||
, argHackageSnapshot = Nothing
|
||||
, argPlatform = Platform X86_64 Linux
|
||||
, argUri = repo
|
||||
, argIndent = True
|
||||
, argVerbose = False
|
||||
}
|
||||
BS.readFile path
|
||||
|
||||
|
||||
-- | Generate the stack2nix file for the specified HIE git hash and ghc version
|
||||
genS2N :: FilePath -> String -> Version -> App BS.ByteString
|
||||
genS2N root hash version = do
|
||||
|
||||
nixpkgsRev <- findNixpkgsForGhc version
|
||||
sha <- nixpkgsSha nixpkgsRev
|
||||
liftIO $ writeFile (root </> "nixpkgsHashes" </> nixpkgsRev) sha
|
||||
|
||||
genBaseLibraries root version nixpkgsRev
|
||||
|
||||
Cache.get Cache.ExpiresNever ("per-hie" </> hash </> nixVersion version <.> ".nix") $ do
|
||||
liftIO $ putStrLn $ "Using nixpkgs revision " ++ nixpkgsRev ++ " for ghc version " ++ show version
|
||||
git nixpkgs [ "checkout", nixpkgsRev ]
|
||||
callStack2nix hash version
|
||||
|
||||
genBaseLibraries :: FilePath -> Version -> String -> App ()
|
||||
genBaseLibraries root version@(Version major minor patch) nixpkgsRev = do
|
||||
contents <- Cache.get Cache.ExpiresNever ("per-ghcMinor" </> show major ++ show minor) $ do
|
||||
git nixpkgs [ "checkout", nixpkgsRev ]
|
||||
let -- Arguments to set config and overlays to nothing so
|
||||
-- that they aren't sourced from the user's configuration
|
||||
-- files in ~/.config/nixpkgs
|
||||
purePkgs = [ "--arg", "config", "{}", "--arg", "overlays", "[]" ]
|
||||
ghcPath <- liftIO $ init <$> readProcess "nix-build"
|
||||
([ "--no-out-link", "<nixpkgs>", "-A", "haskell.compiler." ++ nixVersion version ] ++ purePkgs) ""
|
||||
libs <- liftIO $ readProcess (ghcPath </> "bin/ghc-pkg")
|
||||
[ "list", "--no-user-package-db", "--simple" ] ""
|
||||
return $ BS.pack libs
|
||||
|
||||
liftIO $ BS.writeFile (root </> "ghcBaseLibraries" </> nixVersion version) contents
|
||||
|
||||
nixpkgsSha :: String -> App String
|
||||
nixpkgsSha revision = do
|
||||
hash <- Cache.get Cache.ExpiresNever ("per-nixpkgs/sha256" </> revision) $ do
|
||||
git nixpkgs [ "checkout", revision ]
|
||||
path <- repoPath nixpkgs
|
||||
|
||||
-- tmp needs to be next to nixpkgs itself (same file system), such that hardlinking works, which makes it very efficient
|
||||
tmpCache <- lift $ (</> "tmp") <$> asks cacheDir
|
||||
liftIO $ createDirectoryIfMissing True tmpCache
|
||||
liftIO $ withTempDirectory tmpCache "all-hies-nixpkgs-sha256" $ \tmp -> do
|
||||
liftIO $ readProcess "cp" ["-Trl", path, tmp] ""
|
||||
liftIO $ removeDirectoryRecursive (tmp </> ".git")
|
||||
hash <- liftIO $ head . lines <$> readProcess "nix-hash" ["--type", "sha256", "--base32", tmp] ""
|
||||
return $ BS.pack hash
|
||||
|
||||
return $ BS.unpack hash
|
||||
|
||||
-- | Finds a suitable nixpkgs revision that has a the specified compiler available
|
||||
findNixpkgsForGhc :: Version -> App String
|
||||
findNixpkgsForGhc version = do
|
||||
contents <- Cache.getLocal Cache.ExpiresNever ("nixpkgsForGhc" </> nixVersion version) $ do
|
||||
hist <- getHistory
|
||||
revision <- go hist
|
||||
return $ BS.pack revision
|
||||
|
||||
return $ BS.unpack contents
|
||||
|
||||
where
|
||||
go :: Hist -> App String
|
||||
go [] = fail $ "Couldn't find a nixpkgs for ghc version " ++ show version
|
||||
go (h:hist) = do
|
||||
versions <- ghcVersionsForNixpkgs h
|
||||
if version `elem` versions
|
||||
then return h else go hist
|
||||
|
||||
-- | Determines the available GHC versions for a nixpkgs revision
|
||||
ghcVersionsForNixpkgs :: String -> App [Version]
|
||||
ghcVersionsForNixpkgs rev = do
|
||||
contents <- Cache.get Cache.ExpiresNever ("per-nixpkgs/ghcVersions" </> rev) $ do
|
||||
git nixpkgs [ "checkout", rev ]
|
||||
nixpkgs <- repoPath nixpkgs
|
||||
stdout <- liftIO $ readProcess "nix-instantiate" [ "--eval", "--json", "-" ]
|
||||
("builtins.attrNames (import " ++ nixpkgs ++ " {}).haskell.compiler")
|
||||
case decode (BS.pack stdout) :: Maybe [String] of
|
||||
Nothing -> fail $ "Failed to decode nix output: " ++ stdout
|
||||
Just versions' -> do
|
||||
let versions = mapMaybe (nixVersionRegex `match`) versions'
|
||||
return $ BS.pack $ unlines $ map show versions
|
||||
|
||||
return $ mapMaybe (versionRegex `match`) . lines $ BS.unpack contents
|
||||
|
||||
-- | Regenerate the specified HIE revision stack2nix files in the given path
|
||||
regenerate :: FilePath -> String -> App ()
|
||||
regenerate root revision = do
|
||||
liftIO $ putStrLn $ "Regenerating " ++ root ++ " with revision " ++ revision
|
||||
cleanGenerated root
|
||||
hieRepo <- hie
|
||||
(hash, ref) <- revHash hieRepo revision
|
||||
let revName = if "refs/heads/" `isPrefixOf` ref
|
||||
then take 10 hash else revision
|
||||
liftIO $ putStrLn $ "Regenerating for revision " ++ revName ++ " (" ++ hash ++ ")"
|
||||
liftIO $ putStrLn $ "Writing " ++ revName ++ " to " ++ root ++ "stack2nix/revision"
|
||||
liftIO $ writeFile (root </> "stack2nix/revision") revName
|
||||
files <- listRepoFiles hieRepo
|
||||
let versions = sortOn Down (mapMaybe (stackPathRegex `match`) files)
|
||||
liftIO $ putStrLn $ "HIE " ++ revName ++ " has ghc versions " ++ intercalate ", " (map show versions)
|
||||
forM_ versions $ \version -> do
|
||||
contents <- genS2N root hash version
|
||||
liftIO $ BS.writeFile (root </> "stack2nix" </> nixVersion version <.> "nix") contents
|
||||
|
||||
listRepoFiles :: Repository -> App [FilePath]
|
||||
listRepoFiles (Repository repo) = liftIO $ withSystemTempDirectory "all-hies-repo" $ \tmpDir -> do
|
||||
readProcess "git" [ "clone", repo, tmpDir ] ""
|
||||
listDirectory tmpDir
|
||||
|
||||
newtype Repository = Repository String
|
||||
|
||||
nixpkgs :: Repository
|
||||
nixpkgs = Repository "https://github.com/NixOS/nixpkgs"
|
||||
|
||||
-- | Returns the local checkout path to a repository
|
||||
repoPath :: Repository -> App FilePath
|
||||
repoPath (Repository (takeFileName -> name)) = lift $ (</> name) <$> asks cacheDir
|
||||
|
||||
-- | Runs git with the specified arguments in the given repositories local checkout
|
||||
git :: Repository -> [String] -> App String
|
||||
git repo args = do
|
||||
path <- repoPath repo
|
||||
let allArgs = "-C":path:args
|
||||
liftIO $ putStrLn $ "Running git " ++ unwords allArgs
|
||||
liftIO $ readProcess "git" allArgs ""
|
||||
|
||||
-- | Ensures that the repository repo is cloned to its path with the latest updates fetched
|
||||
updateRepo :: Repository -> App ()
|
||||
updateRepo repo@(Repository url@(takeFileName -> name)) = do
|
||||
path <- repoPath repo
|
||||
exists <- liftIO $ doesPathExist path
|
||||
if exists then do
|
||||
git repo [ "clean", "-fd" ]
|
||||
git repo [ "reset", "--hard", "HEAD" ]
|
||||
git repo [ "fetch", "origin" ]
|
||||
else do
|
||||
candidate <- (\home -> home </> "src" </> name) <$> liftIO getHomeDirectory
|
||||
initial <- (\exists -> if exists then candidate else "")
|
||||
<$> liftIO (doesDirectoryExist candidate)
|
||||
checkoutPath <- fromMaybe (error "EOF") <$> getInputLineWithInitial
|
||||
("Enter optional path to local " ++ url ++ " checkout for faster cloning: ") (initial, "")
|
||||
|
||||
liftIO $ readProcess "git" (
|
||||
[ "clone", url, path, "--recursive" ] ++
|
||||
[ arg | not (null checkoutPath), arg <- [ "--reference-if-able", checkoutPath ] ]
|
||||
) ""
|
||||
return ()
|
||||
|
||||
type Hist = [String]
|
||||
|
||||
-- | Returns the nixpkgs-unstable channel commit history recorded by "https://channels.nix.gsc.io" in newest to oldest order
|
||||
getHistory :: App Hist
|
||||
getHistory = do
|
||||
contents <- Cache.get (Cache.ExpiresAfter (15 * 60)) "history-nixpkgs-unstable" $ do
|
||||
mgr <- lift $ asks manager
|
||||
response <- liftIO $ responseBody <$> httpLbs (parseRequest_ url) mgr
|
||||
let items = reverse . ("c47ac0d8bf43543d8dcef4895167dd1f7af9d968":) . map (head . BS.words) $ BS.lines response
|
||||
return $ BS.unlines items
|
||||
|
||||
return $ map BS.unpack . BS.lines $ contents
|
||||
where
|
||||
url = "https://channels.nix.gsc.io/nixpkgs-unstable/history-v2"
|
||||
|
||||
|
||||
|
||||
-- | A GHC version
|
||||
data Version = Version Int Int Int
|
||||
deriving (Eq, Ord)
|
||||
|
||||
instance Show Version where
|
||||
show (Version major minor patch) = show major ++ "." ++ show minor ++ "." ++ show patch
|
||||
|
||||
-- | Converts a GHC version to the format used for attributes in nixpkgs, such as "ghc864"
|
||||
nixVersion :: Version -> String
|
||||
nixVersion (Version major minor patch) = "ghc" ++ show major ++ show minor ++ show patch
|
||||
|
||||
-- | Matches a nixpkgs GHC attribute name such as "ghc864" as a version type
|
||||
nixVersionRegex :: RE Char Version
|
||||
nixVersionRegex = "ghc" *> (Version <$> digit <*> digit <*> digit)
|
||||
where digit = read . (:[]) <$> psym isDigit
|
||||
|
||||
-- | Matches a GHC version string such as 8.6.4 to a version type
|
||||
versionRegex :: RE Char Version
|
||||
versionRegex = Version
|
||||
<$> (int <* sym '.')
|
||||
<*> (int <* sym '.')
|
||||
<*> int
|
||||
where int :: RE Char Int
|
||||
int = read <$> many (psym isDigit)
|
||||
|
||||
-- | Matches a stack yaml file name such as "stack-8.6.4.yaml" to a GHC version
|
||||
stackPathRegex :: RE Char Version
|
||||
stackPathRegex = "stack-" *> versionRegex <* ".yaml"
|
@ -1,43 +0,0 @@
|
||||
module Options
|
||||
( getOptions
|
||||
, Options(..)
|
||||
) where
|
||||
|
||||
import Options.Applicative
|
||||
|
||||
data Options = Options
|
||||
{ optName :: String
|
||||
, optRev :: String
|
||||
, optRepo :: String
|
||||
}
|
||||
|
||||
parser :: Parser Options
|
||||
parser = Options
|
||||
<$> strOption
|
||||
( long "name"
|
||||
<> short 'n'
|
||||
<> metavar "NAME"
|
||||
<> help "name of the HIE set to generate as, like stable or unstable"
|
||||
)
|
||||
<*> strOption
|
||||
( long "revision"
|
||||
<> short 'r'
|
||||
<> metavar "REV"
|
||||
<> help "HIE revision to use, accepts branches, git hashes, tags and more"
|
||||
)
|
||||
<*> strOption
|
||||
( long "hie-repo"
|
||||
<> metavar "URL"
|
||||
<> help "Which repository to use"
|
||||
<> value "https://github.com/haskell/haskell-ide-engine"
|
||||
)
|
||||
|
||||
options :: ParserInfo Options
|
||||
options = info (parser <**> helper)
|
||||
( fullDesc
|
||||
<> progDesc "Generate all-hies expressions"
|
||||
)
|
||||
|
||||
getOptions :: IO Options
|
||||
getOptions = customExecParser p options where
|
||||
p = prefs showHelpOnEmpty
|
7
templates/Readme.md
Normal file
7
templates/Readme.md
Normal file
@ -0,0 +1,7 @@
|
||||
# HIE template projects
|
||||
|
||||
This directory contains template projects with a fully working development environment:
|
||||
|
||||
- A haskell.nix based template for stack in [haskell.nix-stack](./haskell.nix-stack)
|
||||
- A haskell.nix based template for cabal in [haskell.nix-cabal](./haskell.nix-cabal)
|
||||
- A nixpkgs Haskell infrastructure based template for cabal in [nixpkgs-cabal](nixpkgs-cabal)
|
1
templates/haskell.nix-cabal/.envrc
Normal file
1
templates/haskell.nix-cabal/.envrc
Normal file
@ -0,0 +1 @@
|
||||
use nix
|
2
templates/haskell.nix-cabal/.gitignore
vendored
Normal file
2
templates/haskell.nix-cabal/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
result
|
||||
dist-newstyle
|
4
templates/haskell.nix-cabal/Main.hs
Normal file
4
templates/haskell.nix-cabal/Main.hs
Normal file
@ -0,0 +1,4 @@
|
||||
module Main where
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Hello!"
|
81
templates/haskell.nix-cabal/Readme.md
Normal file
81
templates/haskell.nix-cabal/Readme.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Nix-based Haskell project template using [haskell.nix](https://input-output-hk.github.io/haskell.nix/)
|
||||
|
||||
This template has support for:
|
||||
- Building the project with Nix
|
||||
- Entering a dev environment with Nix, which includes
|
||||
- GHC and cabal-install for the `cabal` command
|
||||
- All the projects Haskell dependencies
|
||||
- Haskell IDE Engine with a working Cabal version
|
||||
- An up-to-date local Hoogle database, usable by HIE
|
||||
- Minimal compilation since most things are cached already
|
||||
|
||||
It uses the haskell.nix Haskell infrastructure for this.
|
||||
|
||||
# Usage
|
||||
|
||||
## Setting up the caches
|
||||
|
||||
To use this, you should first enable the necessary Nix caches so that most things don't have to be compiled. This is done using [Cachix](https://cachix.org/). If you don't have it already, you can install cachix with
|
||||
|
||||
```
|
||||
$ nix-env -iA cachix -f https://cachix.org/api/v1/install
|
||||
```
|
||||
|
||||
After which you can enable the `all-hies` and `iohk` caches, both of which are recommended for this template:
|
||||
|
||||
```
|
||||
$ cachix use all-hies
|
||||
$ cachix use iohk
|
||||
```
|
||||
|
||||
## Entering the dev environment
|
||||
|
||||
This can be done either using `nix-shell`:
|
||||
|
||||
```
|
||||
$ nix-shell
|
||||
[nix-shell:~/all-hies/templates/haskell.nix-cabal]$
|
||||
```
|
||||
|
||||
Or automatically when you enter the project directory using [direnv](https://direnv.net/) or [lorri](https://github.com/target/lorri) (by running `lorri init` first). Note that entering the environment the first time will take quite some time due to how haskell.nix works.
|
||||
|
||||
After entering the environment you can use the standard `cabal` commands for interacting with the project. Note that these will use all dependencies from Nix:
|
||||
```
|
||||
$ cabal build # building the project
|
||||
$ cabal repl # Getting a ghci repl
|
||||
$ cabal run # Running an executable
|
||||
```
|
||||
|
||||
In this environment HIE is available, which you can verify works with the `hie` command:
|
||||
|
||||
```
|
||||
$ hie
|
||||
[...]
|
||||
/home/infinisil/all-hies/templates/haskell.nix-cabal/Main.hs: OK
|
||||
```
|
||||
|
||||
The easiest way to get your editor to find HIE is to just start it in this environment:
|
||||
```
|
||||
$ vim
|
||||
$ emacs
|
||||
$ code
|
||||
$ sublime
|
||||
$ atom
|
||||
```
|
||||
|
||||
Note that you still need to set up the necessary editor extensions yourself. See [here](https://github.com/haskell/haskell-ide-engine#editor-integration) for how to do this
|
||||
|
||||
A local Hoogle database is also available with all the dependencies of the project, which is used by HIE. You can start a hoogle server using
|
||||
```
|
||||
$ hoogle server
|
||||
Server started on port 8080
|
||||
Reading log...0.00s
|
||||
2020-07-25T01:29:13.173630988 - Server starting on port 8080 and host/IP HostAny
|
||||
```
|
||||
|
||||
## Building the project with Nix
|
||||
|
||||
This is done with just a `nix-build` in the root.
|
||||
```
|
||||
$ nix-build
|
||||
```
|
21
templates/haskell.nix-cabal/all-hies-template.cabal
Normal file
21
templates/haskell.nix-cabal/all-hies-template.cabal
Normal file
@ -0,0 +1,21 @@
|
||||
name: all-hies-template
|
||||
version: 0.1.0.0
|
||||
-- synopsis:
|
||||
-- description:
|
||||
-- homepage:
|
||||
-- license:
|
||||
-- license-file: LICENSE
|
||||
-- author:
|
||||
-- maintainer:
|
||||
-- copyright:
|
||||
-- category: Web
|
||||
build-type: Simple
|
||||
cabal-version: 2.0
|
||||
|
||||
executable all-hies-template
|
||||
main-is: Main.hs
|
||||
default-language: Haskell2010
|
||||
build-depends: base >= 4.7 && < 5
|
||||
-- Cabal needed for HIEs cabal-helper, needs to match the
|
||||
-- cabal(-install) version in default.nix
|
||||
, Cabal == 3.2.0.0
|
3
templates/haskell.nix-cabal/cabal.project
Normal file
3
templates/haskell.nix-cabal/cabal.project
Normal file
@ -0,0 +1,3 @@
|
||||
packages: .
|
||||
|
||||
index-state: 2020-05-15T00:00:00Z
|
50
templates/haskell.nix-cabal/default.nix
Normal file
50
templates/haskell.nix-cabal/default.nix
Normal file
@ -0,0 +1,50 @@
|
||||
let
|
||||
haskellNixSrc = fetchTarball {
|
||||
url = "https://github.com/input-output-hk/haskell.nix/tarball/af5998fe8d6b201d2a9be09993f1b9fae74e0082";
|
||||
sha256 = "0z5w99wkkpg2disvwjnsyp45w0bhdkrhvnrpz5nbwhhp21c71mbn";
|
||||
};
|
||||
haskellNix = import haskellNixSrc {};
|
||||
|
||||
all-hies = ../..;
|
||||
|
||||
# Use this version for your project instead
|
||||
/*
|
||||
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";
|
||||
};
|
||||
*/
|
||||
|
||||
pkgs = import haskellNix.sources.nixpkgs-2003 (haskellNix.nixpkgsArgs // {
|
||||
overlays = haskellNix.nixpkgsArgs.overlays ++ [
|
||||
(import all-hies {}).overlay
|
||||
];
|
||||
});
|
||||
|
||||
set = pkgs.haskell-nix.cabalProject' {
|
||||
name = "all-hies-template";
|
||||
src = pkgs.haskell-nix.haskellLib.cleanGit {
|
||||
name = "all-hies-template";
|
||||
src = ./.;
|
||||
};
|
||||
ghc = pkgs.haskell-nix.compiler.ghc883;
|
||||
modules = [{
|
||||
# Make Cabal reinstallable
|
||||
nonReinstallablePkgs = [ "rts" "ghc-heap" "ghc-prim" "integer-gmp" "integer-simple" "base" "deepseq" "array" "ghc-boot-th" "pretty" "template-haskell" "ghcjs-prim" "ghcjs-th" "ghc-boot" "ghc" "Win32" "array" "binary" "bytestring" "containers" "directory" "filepath" "ghc-boot" "ghc-compact" "ghc-prim" "hpc" "mtl" "parsec" "process" "text" "time" "transformers" "unix" "xhtml" "terminfo" ];
|
||||
}];
|
||||
};
|
||||
in set.hsPkgs.all-hies-template.components.exes.all-hies-template // {
|
||||
env = set.hsPkgs.shellFor {
|
||||
packages = p: [ p.all-hies-template ];
|
||||
exactDeps = true;
|
||||
tools = {
|
||||
cabal = "3.2.0.0";
|
||||
hie = "unstable";
|
||||
};
|
||||
shellHook = ''
|
||||
export HIE_HOOGLE_DATABASE=$(realpath "$(dirname "$(realpath "$(which hoogle)")")/../share/doc/hoogle/default.hoo")
|
||||
'';
|
||||
};
|
||||
}
|
1
templates/haskell.nix-cabal/shell.nix
Normal file
1
templates/haskell.nix-cabal/shell.nix
Normal file
@ -0,0 +1 @@
|
||||
(import ./.).env
|
1
templates/haskell.nix-stack/.envrc
Normal file
1
templates/haskell.nix-stack/.envrc
Normal file
@ -0,0 +1 @@
|
||||
use nix
|
2
templates/haskell.nix-stack/.gitignore
vendored
Normal file
2
templates/haskell.nix-stack/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
result
|
||||
.stack-work
|
4
templates/haskell.nix-stack/Main.hs
Normal file
4
templates/haskell.nix-stack/Main.hs
Normal file
@ -0,0 +1,4 @@
|
||||
module Main where
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Hello!"
|
81
templates/haskell.nix-stack/Readme.md
Normal file
81
templates/haskell.nix-stack/Readme.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Nix-based Haskell project template using [haskell.nix](https://input-output-hk.github.io/haskell.nix/) and [Stack](https://docs.haskellstack.org/en/stable/README/)
|
||||
|
||||
This template has support for:
|
||||
- Building the project with Nix
|
||||
- Entering a dev environment with Nix, which includes
|
||||
- GHC and stack
|
||||
- All the projects Haskell dependencies
|
||||
- Haskell IDE Engine with a working Cabal version
|
||||
- An up-to-date local Hoogle database, usable by HIE
|
||||
- Minimal compilation since most things are cached already
|
||||
|
||||
It uses the haskell.nix Haskell infrastructure for this.
|
||||
|
||||
# Usage
|
||||
|
||||
## Setting up the caches
|
||||
|
||||
To use this, you should first enable the necessary Nix caches so that most things don't have to be compiled. This is done using [Cachix](https://cachix.org/). If you don't have it already, you can install cachix with
|
||||
|
||||
```
|
||||
$ nix-env -iA cachix -f https://cachix.org/api/v1/install
|
||||
```
|
||||
|
||||
After which you can enable the `all-hies` and `iohk` caches, both of which are recommended for this template:
|
||||
|
||||
```
|
||||
$ cachix use all-hies
|
||||
$ cachix use iohk
|
||||
```
|
||||
|
||||
## Entering the dev environment
|
||||
|
||||
This can be done either using `nix-shell`:
|
||||
|
||||
```
|
||||
$ nix-shell
|
||||
[nix-shell:~/all-hies/templates/haskell.nix-stack]$
|
||||
```
|
||||
|
||||
Or automatically when you enter the project directory using [direnv](https://direnv.net/) or [lorri](https://github.com/target/lorri) (by running `lorri init` first). Note that entering the environment the first time will take quite some time due to how haskell.nix works.
|
||||
|
||||
After entering the environment you can use the standard `stack` commands for interacting with the project. Note that these will use all dependencies from Nix:
|
||||
```
|
||||
$ stack build # building the project
|
||||
$ stack repl # Getting a ghci repl
|
||||
$ stack run # Running an executable
|
||||
```
|
||||
|
||||
In this environment HIE is available, which you can verify works with the `hie` command:
|
||||
|
||||
```
|
||||
$ hie
|
||||
[...]
|
||||
/home/infinisil/all-hies/templates/haskell.nix-stack/Main.hs: OK
|
||||
```
|
||||
|
||||
The easiest way to get your editor to find HIE is to just start it in this environment:
|
||||
```
|
||||
$ vim
|
||||
$ emacs
|
||||
$ code
|
||||
$ sublime
|
||||
$ atom
|
||||
```
|
||||
|
||||
Note that you still need to set up the necessary editor extensions yourself. See [here](https://github.com/haskell/haskell-ide-engine#editor-integration) for how to do this
|
||||
|
||||
A local Hoogle database is also available with all the dependencies of the project, which is used by HIE. You can start a hoogle server using
|
||||
```
|
||||
$ hoogle server
|
||||
Server started on port 8080
|
||||
Reading log...0.00s
|
||||
2020-07-25T01:29:13.173630988 - Server starting on port 8080 and host/IP HostAny
|
||||
```
|
||||
|
||||
## Building the project with Nix
|
||||
|
||||
This is done with just a `nix-build` in the root.
|
||||
```
|
||||
$ nix-build
|
||||
```
|
21
templates/haskell.nix-stack/all-hies-template.cabal
Normal file
21
templates/haskell.nix-stack/all-hies-template.cabal
Normal file
@ -0,0 +1,21 @@
|
||||
name: all-hies-template
|
||||
version: 0.1.0.0
|
||||
-- synopsis:
|
||||
-- description:
|
||||
-- homepage:
|
||||
-- license:
|
||||
-- license-file: LICENSE
|
||||
-- author:
|
||||
-- maintainer:
|
||||
-- copyright:
|
||||
-- category: Web
|
||||
build-type: Simple
|
||||
cabal-version: 2.0
|
||||
|
||||
executable all-hies-template
|
||||
main-is: Main.hs
|
||||
default-language: Haskell2010
|
||||
build-depends: base >= 4.7 && < 5
|
||||
-- Cabal needed for HIEs cabal-helper, needs to match the
|
||||
-- cabal(-install) version in default.nix
|
||||
, Cabal == 3.2.0.0
|
3
templates/haskell.nix-stack/cabal.project
Normal file
3
templates/haskell.nix-stack/cabal.project
Normal file
@ -0,0 +1,3 @@
|
||||
packages: .
|
||||
|
||||
index-state: 2020-05-15T00:00:00Z
|
48
templates/haskell.nix-stack/default.nix
Normal file
48
templates/haskell.nix-stack/default.nix
Normal file
@ -0,0 +1,48 @@
|
||||
let
|
||||
haskellNixSrc = fetchTarball {
|
||||
url = "https://github.com/input-output-hk/haskell.nix/tarball/af5998fe8d6b201d2a9be09993f1b9fae74e0082";
|
||||
sha256 = "0z5w99wkkpg2disvwjnsyp45w0bhdkrhvnrpz5nbwhhp21c71mbn";
|
||||
};
|
||||
haskellNix = import haskellNixSrc {};
|
||||
|
||||
all-hies = ../..;
|
||||
|
||||
# Use this version for your project instead
|
||||
/*
|
||||
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";
|
||||
};
|
||||
*/
|
||||
|
||||
pkgs = import haskellNix.sources.nixpkgs-2003 (haskellNix.nixpkgsArgs // {
|
||||
overlays = haskellNix.nixpkgsArgs.overlays ++ [
|
||||
(import all-hies {}).overlay
|
||||
];
|
||||
});
|
||||
|
||||
set = pkgs.haskell-nix.stackProject {
|
||||
name = "all-hies-template";
|
||||
src = pkgs.haskell-nix.haskellLib.cleanGit {
|
||||
name = "all-hies-template";
|
||||
src = ./.;
|
||||
};
|
||||
modules = [{
|
||||
# Make Cabal reinstallable
|
||||
nonReinstallablePkgs = [ "rts" "ghc-heap" "ghc-prim" "integer-gmp" "integer-simple" "base" "deepseq" "array" "ghc-boot-th" "pretty" "template-haskell" "ghcjs-prim" "ghcjs-th" "ghc-boot" "ghc" "Win32" "array" "binary" "bytestring" "containers" "directory" "filepath" "ghc-boot" "ghc-compact" "ghc-prim" "hpc" "mtl" "parsec" "process" "text" "time" "transformers" "unix" "xhtml" "terminfo" ];
|
||||
}];
|
||||
};
|
||||
in set.all-hies-template.components.exes.all-hies-template // {
|
||||
env = set.shellFor {
|
||||
packages = p: [ p.all-hies-template ];
|
||||
tools = {
|
||||
hie = "unstable";
|
||||
};
|
||||
nativeBuildInputs = [ pkgs.stack ];
|
||||
shellHook = ''
|
||||
export HIE_HOOGLE_DATABASE=$(realpath "$(dirname "$(realpath "$(which hoogle)")")/../share/doc/hoogle/default.hoo")
|
||||
'';
|
||||
};
|
||||
}
|
1
templates/haskell.nix-stack/shell.nix
Normal file
1
templates/haskell.nix-stack/shell.nix
Normal file
@ -0,0 +1 @@
|
||||
(import ./.).env
|
67
templates/haskell.nix-stack/stack.yaml
Normal file
67
templates/haskell.nix-stack/stack.yaml
Normal file
@ -0,0 +1,67 @@
|
||||
# This file was automatically generated by 'stack init'
|
||||
#
|
||||
# Some commonly used options have been documented as comments in this file.
|
||||
# For advanced use and comprehensive documentation of the format, please see:
|
||||
# https://docs.haskellstack.org/en/stable/yaml_configuration/
|
||||
|
||||
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
|
||||
# A snapshot resolver dictates the compiler version and the set of packages
|
||||
# to be used for project dependencies. For example:
|
||||
#
|
||||
# resolver: lts-3.5
|
||||
# resolver: nightly-2015-09-21
|
||||
# resolver: ghc-7.10.2
|
||||
#
|
||||
# The location of a snapshot can be provided as a file or url. Stack assumes
|
||||
# a snapshot provided as a file might change, whereas a url resource does not.
|
||||
#
|
||||
# resolver: ./custom-snapshot.yaml
|
||||
# resolver: https://example.com/snapshots/2018-01-01.yaml
|
||||
resolver: lts-15.12
|
||||
|
||||
# User packages to be built.
|
||||
# Various formats can be used as shown in the example below.
|
||||
#
|
||||
# packages:
|
||||
# - some-directory
|
||||
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
|
||||
# subdirs:
|
||||
# - auto-update
|
||||
# - wai
|
||||
packages:
|
||||
- .
|
||||
# Dependency packages to be pulled from upstream that are not in the resolver.
|
||||
# These entries can reference officially published versions as well as
|
||||
# forks / in-progress versions pinned to a git hash. For example:
|
||||
#
|
||||
extra-deps:
|
||||
- Cabal-3.2.0.0
|
||||
# - acme-missiles-0.3
|
||||
# - git: https://github.com/commercialhaskell/stack.git
|
||||
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
|
||||
#
|
||||
# extra-deps: []
|
||||
|
||||
# Override default flag values for local packages and extra-deps
|
||||
# flags: {}
|
||||
|
||||
# Extra package databases containing global packages
|
||||
# extra-package-dbs: []
|
||||
|
||||
# Control whether we use the GHC we find on the path
|
||||
# system-ghc: true
|
||||
#
|
||||
# Require a specific version of stack, using version ranges
|
||||
# require-stack-version: -any # Default
|
||||
# require-stack-version: ">=2.1"
|
||||
#
|
||||
# Override the architecture used by stack, especially useful on Windows
|
||||
# arch: i386
|
||||
# arch: x86_64
|
||||
#
|
||||
# Extra directories used by stack for building
|
||||
# extra-include-dirs: [/path/to/dir]
|
||||
# extra-lib-dirs: [/path/to/dir]
|
||||
#
|
||||
# Allow a newer minor version of GHC than the snapshot specifies
|
||||
# compiler-check: newer-minor
|
1
templates/nixpkgs-cabal/.envrc
Normal file
1
templates/nixpkgs-cabal/.envrc
Normal file
@ -0,0 +1 @@
|
||||
use nix
|
2
templates/nixpkgs-cabal/.gitignore
vendored
Normal file
2
templates/nixpkgs-cabal/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
result
|
||||
dist-newstyle
|
4
templates/nixpkgs-cabal/Main.hs
Normal file
4
templates/nixpkgs-cabal/Main.hs
Normal file
@ -0,0 +1,4 @@
|
||||
module Main where
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Hello!"
|
80
templates/nixpkgs-cabal/Readme.md
Normal file
80
templates/nixpkgs-cabal/Readme.md
Normal file
@ -0,0 +1,80 @@
|
||||
# Nix-based Haskell project template using nixpkgs' Haskell infrastructure
|
||||
|
||||
This template has support for:
|
||||
- Building the project with Nix
|
||||
- Entering a dev environment with Nix, which includes
|
||||
- GHC and cabal-install for the `cabal` command
|
||||
- All the projects Haskell dependencies
|
||||
- Haskell IDE Engine with a working Cabal version
|
||||
- An up-to-date local Hoogle database, usable by HIE
|
||||
- Minimal compilation since most things are cached already
|
||||
|
||||
It uses the nixpkgs Haskell infrastructure for this.
|
||||
|
||||
# Usage
|
||||
|
||||
## Setting up the caches
|
||||
|
||||
To use this, you should first enable the necessary Nix caches so that most things don't have to be compiled. This is done using [Cachix](https://cachix.org/). If you don't have it already, you can install cachix with
|
||||
|
||||
```
|
||||
$ nix-env -iA cachix -f https://cachix.org/api/v1/install
|
||||
```
|
||||
|
||||
After which you can enable the `all-hies` cache:
|
||||
|
||||
```
|
||||
$ cachix use all-hies
|
||||
```
|
||||
|
||||
## Entering the dev environment
|
||||
|
||||
This can be done either using `nix-shell`:
|
||||
|
||||
```
|
||||
$ nix-shell
|
||||
[nix-shell:~/all-hies/templates/nixpkgs-cabal]$
|
||||
```
|
||||
|
||||
Or automatically when you enter the project directory using [direnv](https://direnv.net/) or [lorri](https://github.com/target/lorri) (by running `lorri init` first)
|
||||
|
||||
After entering the environment you can use the standard `cabal` commands for interacting with the project. Note that these will use all dependencies from Nix:
|
||||
```
|
||||
$ cabal build # building the project
|
||||
$ cabal repl # Getting a ghci repl
|
||||
$ cabal run # Running an executable
|
||||
```
|
||||
|
||||
In this environment HIE is available, which you can verify works with the `hie` command:
|
||||
|
||||
```
|
||||
$ hie
|
||||
[...]
|
||||
/home/infinisil/all-hies/templates/nixpkgs-cabal/Main.hs: OK
|
||||
```
|
||||
|
||||
The easiest way to get your editor to find HIE is to just start it in this environment:
|
||||
```
|
||||
$ vim
|
||||
$ emacs
|
||||
$ code
|
||||
$ sublime
|
||||
$ atom
|
||||
```
|
||||
|
||||
Note that you still need to set up the necessary editor extensions yourself. See [here](https://github.com/haskell/haskell-ide-engine#editor-integration) for how to do this
|
||||
|
||||
A local Hoogle database is also available with all the dependencies of the project, which is used by HIE. You can start a hoogle server using
|
||||
```
|
||||
$ hoogle server
|
||||
Server started on port 8080
|
||||
Reading log...0.00s
|
||||
2020-07-25T01:29:13.173630988 - Server starting on port 8080 and host/IP HostAny
|
||||
```
|
||||
|
||||
## Building the project with Nix
|
||||
|
||||
This is done with just a `nix-build` in the root.
|
||||
```
|
||||
$ nix-build
|
||||
```
|
20
templates/nixpkgs-cabal/all-hies-template.cabal
Normal file
20
templates/nixpkgs-cabal/all-hies-template.cabal
Normal file
@ -0,0 +1,20 @@
|
||||
name: all-hies-template
|
||||
version: 0.1.0.0
|
||||
-- synopsis:
|
||||
-- description:
|
||||
-- homepage:
|
||||
-- license:
|
||||
-- license-file: LICENSE
|
||||
-- author:
|
||||
-- maintainer:
|
||||
-- copyright:
|
||||
-- category: Web
|
||||
build-type: Simple
|
||||
cabal-version: 2.0
|
||||
|
||||
executable all-hies-template
|
||||
main-is: Main.hs
|
||||
default-language: Haskell2010
|
||||
build-depends: base >= 4.7 && < 5
|
||||
-- Cabal needed for HIEs cabal-helper
|
||||
, Cabal
|
52
templates/nixpkgs-cabal/default.nix
Normal file
52
templates/nixpkgs-cabal/default.nix
Normal file
@ -0,0 +1,52 @@
|
||||
let
|
||||
nixpkgs = fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/tarball/f8248ab6d9e69ea9c07950d73d48807ec595e923";
|
||||
sha256 = "009i9j6mbq6i481088jllblgdnci105b2q4mscprdawg3knlyahk";
|
||||
};
|
||||
|
||||
all-hies = ../..;
|
||||
|
||||
# Use this version for your project instead
|
||||
/*
|
||||
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";
|
||||
};
|
||||
*/
|
||||
|
||||
pkgs = import nixpkgs {
|
||||
config = {};
|
||||
overlays = [
|
||||
(import all-hies {}).overlay
|
||||
];
|
||||
};
|
||||
inherit (pkgs) lib;
|
||||
|
||||
set = pkgs.haskell.packages.ghc865.override (old: {
|
||||
overrides = lib.composeExtensions old.overrides (hself: hsuper: {
|
||||
all-hies-template = hself.callCabal2nix "all-hies-template" (lib.sourceByRegex ./. [
|
||||
"^.*\\.hs$"
|
||||
"^.*\\.cabal$"
|
||||
]) {
|
||||
# Needs to match cabal-install version
|
||||
Cabal = hself.Cabal_3_0_0_0;
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
in pkgs.haskell.lib.justStaticExecutables set.all-hies-template // {
|
||||
env = set.shellFor {
|
||||
packages = p: [ p.all-hies-template ];
|
||||
nativeBuildInputs = [
|
||||
set.cabal-install
|
||||
set.hie
|
||||
];
|
||||
withHoogle = true;
|
||||
shellHook = ''
|
||||
export HIE_HOOGLE_DATABASE=$(realpath "$(dirname "$(realpath "$(which hoogle)")")/../share/doc/hoogle/default.hoo")
|
||||
'';
|
||||
};
|
||||
inherit set;
|
||||
}
|
1
templates/nixpkgs-cabal/shell.nix
Normal file
1
templates/nixpkgs-cabal/shell.nix
Normal file
@ -0,0 +1 @@
|
||||
(import ./.).env
|
31
update.nix
31
update.nix
@ -1,31 +0,0 @@
|
||||
{ pkgs ? import ./nixpkgs.nix
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
hpkgs = pkgs.haskellPackages;
|
||||
runtimeDeps = [
|
||||
pkgs.nix-prefetch-scripts
|
||||
pkgs.git
|
||||
pkgs.haskellPackages.cabal-install
|
||||
pkgs.nix
|
||||
pkgs.coreutils
|
||||
pkgs.gawk
|
||||
];
|
||||
pkg = (hpkgs.callCabal2nix "all-hies" (pkgs.lib.sourceByRegex ./. [
|
||||
"src.*"
|
||||
"all-hies.cabal"
|
||||
]) {}).overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs or [] ++ [
|
||||
pkgs.makeWrapper
|
||||
];
|
||||
postInstall = old.postInstall or "" + ''
|
||||
wrapProgram $out/bin/update \
|
||||
--set PATH "${lib.makeBinPath runtimeDeps}" \
|
||||
--set LOCALE_ARCHIVE "${pkgs.glibcLocales}/lib/locale/locale-archive"
|
||||
'';
|
||||
});
|
||||
in pkg // {
|
||||
env = pkg.env.overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs or [] ++ runtimeDeps;
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue
Block a user