Cached Haskell IDE Engine Nix builds for all GHC versions
Go to file
2019-04-26 02:29:47 +02:00
generated Add initially generated files for 0.8.0.0 2019-04-10 02:56:08 +02:00
nixpkgsForGhc Add initially generated files for 0.8.0.0 2019-04-10 02:56:08 +02:00
overrides Add initially generated files for 0.8.0.0 2019-04-10 02:56:08 +02:00
.gitattributes Fix linguist to exclude generated files from the stats 2019-04-12 18:37:57 +02:00
.gitignore Faster, more succeeding builds, better everything 2019-04-06 06:44:02 +02:00
default.nix Flesh out version selections, add Readme 2019-04-26 02:29:47 +02:00
Design.org Faster, more succeeding builds, better everything 2019-04-06 06:44:02 +02:00
nixpkgs.nix update.hs: Small improvements; use shell.nix file 2019-04-10 02:54:11 +02:00
Readme.org Flesh out version selections, add Readme 2019-04-26 02:29:47 +02:00
shell.nix update.hs: Small improvements; use shell.nix file 2019-04-10 02:54:11 +02:00
update.hs update.hs: Small improvements; use shell.nix file 2019-04-10 02:54:11 +02:00

Haskell IDE Engine Nix builds for all GHC versions

This repository provides Nix builds for Haskell IDE Engine (HIE) for all supported GHC versions. It is intended to be a successor to hie-nix.

Installation

Cached builds

If you wish to use cached builds, configure the all-hies cachix cache with these instructions, or if you have cachix installed already:

$ cachix use all-hies

NixOS installation

Add this to the start of your configuration.nix:

  let
    all-hies = import (fetchTarball "https://github.com/infinisil/all-hies/tarball/master") {};
  in
  {
    # ...
  }

Then depending on your needs, add the versions you need to `environment.systemPackages`.

For the latest supported GHC version only (which is 8.6.4 right now):

  {
    environment.systemPackages = [ all-hies.latest ];
  }

For a specific version of GHC (warning: If you need multiple versions, use the approach after this one instead):

  {
    environment.systemPackages = [ all-hies.versions.ghc864 ];
  }

For a specific set of GHC versions (note: The hie/hie-wrapper binaries will both be a HIE wrapper that chooses the correct version out of the given ones):

   {
     environment.systemPackages = [
       (all-hies.selection { selector = p: { inherit (p) ghc864 ghc863 ghc843; }; })
     ];
   }

For all supported GHC versions (warning: requires ~20GB of space for all 9 versions):

  {
    environment.systemPackages = [
      (all-hies.selection { selector = p: p; })
    ];
  }

nix-env installation

For the latest supported GHC version only (which is 8.6.4 right now):

  $ nix-env -iA latest -f https://github.com/infinisil/all-hies/tarball/master

For a specific version of GHC (warning: If you need multiple versions, use the approach after this one instead):

  $ nix-env -iA versions.ghc864 -f https://github.com/infinisil/all-hies/tarball/master

For a specific set of GHC versions (note: The hie/hie-wrapper binaries will both be a HIE wrapper that chooses the correct version out of the given ones):

  $ nix-env -iA selection --arg selector 'p: { inherit (p) ghc864 ghc863 ghc843; }' -f https://github.com/infinisil/all-hies/tarball/master

For all supported GHC versions (warning: requires ~20GB of space for all 9 versions):

  $ nix-env -iA selection --arg selector 'p: p' -f https://github.com/infinisil/all-hies/tarball/master

Updating this repository

If a new stable HIE version has been released, the following commands can be used to update the repository with it and build all versions

  $ ./update.hs
  $ nix-build -A versions -k

This will take a long time, but both of these commands do a lot of intermediate caching and are idempotent, so they can be interrupted and resumed at any time.

If builds fail for some reason, the overrides directory can be used to add GHC-specific Haskell overrides.

TODO

  • Add more useful version selection

    • All versions with a lower bound, useful when you know you've updated everything to at least some version
    • All versions with an upper bound, useful when you want to control when you need newer versions yourself
    • All of the existing selections, but with a constraint to only use the latest patch version