{ pkgs, stdenv, callPackage }: self: let src = pkgs.fetchFromGitHub { owner = "haskell"; repo = "haskell-ide-engine"; rev = "3ec8e93e9ca751cf282556998851ffa65f32e06b"; sha256 = "1wzqzvsa39c1cngmmjryqrq4vqdg6d4wp5wdf17vp96ljvz1cczw"; }; cabal-helper-src = pkgs.fetchgit { url = "https://gitlab.com/dxld/cabal-helper.git"; rev = "4bfc6b916fcc696a5d82e7cd35713d6eabcb0533"; sha256 = "1a8231as0wdvi0q73ha9lc0qrx23kmcwf910qaicvmdar5p2b15m"; }; ghc-dump-tree-src = pkgs.fetchgit { url = "https://gitlab.com/alanz/ghc-dump-tree.git"; rev = "50f8b28fda675cca4df53909667c740120060c49"; sha256 = "0v3r81apdqp91sv7avy7f0s3im9icrakkggw8q5b7h0h4js6irqj"; }; ghc-mod-src = pkgs.fetchFromGitHub { owner = "wz1000"; repo = "ghc-mod"; rev = "03c91ea53b6389e7a1fcf4e471171aa3d6c8de41"; sha256 = "11iic93klsh5izp8v4mhl7vnnlib821cfhdymlpg4drx7zbm9il6"; }; HaRe-src = pkgs.fetchgit { url = "https://gitlab.com/alanz/HaRe.git"; rev = "e325975450ce89d790ed3f92de3ef675967d9538"; sha256 = "0z7r3l4j5a1brz7zb2rgd985m58rs0ki2p59y1l9i46fcy8r9y4g"; }; cabal-helper = self.cabal-helper_hie; haddock-library = self.haddock-library_1_4_4; hoogle = self.hoogle_5_0_14; ghc-dump-tree = self.ghc-dump-tree_hie; ghc-mod = self.ghc-mod_hie; HaRe = self.HaRe_hie; in { ### Overrides required by hie cabal-helper_hie = callPackage ({ mkDerivation, base, bytestring, Cabal, cabal-install, containers , directory, exceptions, filepath, ghc-prim, mtl, process , semigroupoids, template-haskell, temporary, transformers , unix, unix-compat, utf8-string }: mkDerivation { pname = "cabal-helper"; version = "0.8.0.0"; src = cabal-helper-src; isLibrary = true; isExecutable = true; jailbreak = true; setupHaskellDepends = [ base Cabal directory filepath ]; libraryHaskellDepends = [ base Cabal directory filepath ghc-prim mtl process semigroupoids transformers unix unix-compat ]; executableHaskellDepends = [ base bytestring Cabal containers directory exceptions filepath ghc-prim mtl process template-haskell temporary transformers unix unix-compat utf8-string ]; testHaskellDepends = [ base bytestring Cabal directory exceptions filepath ghc-prim mtl process template-haskell temporary transformers unix unix-compat utf8-string ]; testToolDepends = [ cabal-install ]; postInstall = '' libexec="$out/libexec/$(basename $out/lib/ghc*/*ghc*)/$name" mkdir -p "$libexec" ln -sv $out/bin/cabal-helper-wrapper "$libexec" ''; doCheck = false; description = "Simple interface to some of Cabal's configuration state, mainly used by ghc-mod"; license = stdenv.lib.licenses.agpl3; }) {}; ghc-dump-tree_hie = callPackage ({ mkDerivation, aeson, base, bytestring, ghc, optparse-applicative , pretty, pretty-show, process, unordered-containers , vector }: mkDerivation { pname = "ghc-dump-tree"; version = "0.2.0.1"; src = ghc-dump-tree-src; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ aeson base bytestring ghc pretty pretty-show process unordered-containers vector ]; executableHaskellDepends = [ aeson base bytestring ghc optparse-applicative pretty pretty-show process unordered-containers vector ]; homepage = "https://github.com/edsko/ghc-dump-tree"; description = "Dump GHC's parsed, renamed, and type checked ASTs"; license = stdenv.lib.licenses.bsd3; }) {}; ghc-mod-core = callPackage ({ mkDerivation, base, binary, bytestring, Cabal, cabal-helper , containers, deepseq, directory, djinn-ghc, extra, fclabels , filepath, fingertree, ghc, ghc-boot, ghc-paths, ghc-syb-utils , haskell-src-exts, hlint, monad-control, monad-journal, mtl , old-time, optparse-applicative, pipes, process, safe, semigroups , split, syb, template-haskell, temporary, text, time , transformers, transformers-base }: mkDerivation { pname = "ghc-mod-core"; version = "5.9.0.0"; src = "${ghc-mod-src}/core"; setupHaskellDepends = [ base Cabal containers directory filepath process template-haskell transformers ]; libraryHaskellDepends = [ base binary bytestring cabal-helper containers deepseq directory djinn-ghc extra fclabels filepath fingertree ghc ghc-boot ghc-paths ghc-syb-utils haskell-src-exts hlint monad-control monad-journal mtl old-time optparse-applicative pipes process safe semigroups split syb template-haskell temporary text time transformers transformers-base ]; homepage = "https://github.com/DanielG/ghc-mod"; description = "Happy Haskell Hacking"; license = stdenv.lib.licenses.agpl3; }) { inherit cabal-helper; }; ghc-mod_hie = callPackage ({ mkDerivation, base, binary, bytestring, Cabal, cabal-doctest , cabal-helper, containers, criterion, deepseq, directory , djinn-ghc, doctest, extra, fclabels, filepath, ghc, ghc-boot , ghc-mod-core, ghc-paths, ghc-syb-utils, haskell-src-exts, hlint , hspec, monad-control, monad-journal, mtl, old-time , optparse-applicative, pipes, process, safe, semigroups, shelltest , split, syb, template-haskell, temporary, text, time , transformers, transformers-base }: mkDerivation { pname = "ghc-mod"; version = "5.9.0.0"; src = ghc-mod-src; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; setupHaskellDepends = [ base Cabal cabal-doctest containers directory filepath process template-haskell transformers ]; libraryHaskellDepends = [ base binary bytestring cabal-helper containers deepseq directory djinn-ghc extra fclabels filepath ghc ghc-boot ghc-mod-core ghc-paths ghc-syb-utils haskell-src-exts hlint monad-control monad-journal mtl old-time optparse-applicative pipes process safe semigroups split syb template-haskell temporary text time transformers transformers-base ]; executableHaskellDepends = [ base binary deepseq directory fclabels filepath ghc ghc-mod-core monad-control mtl old-time optparse-applicative process semigroups split time ]; testHaskellDepends = [ base cabal-helper containers directory doctest fclabels filepath ghc ghc-boot ghc-mod-core hspec monad-journal mtl process split temporary transformers ]; testToolDepends = [ shelltest ]; # Doesn't work with our doctest doCheck = false; benchmarkHaskellDepends = [ base criterion directory filepath ghc-mod-core temporary ]; homepage = "https://github.com/DanielG/ghc-mod"; description = "Happy Haskell Hacking"; license = stdenv.lib.licenses.agpl3; }) { shelltest = null; inherit cabal-helper; }; HaRe_hie = callPackage ({ mkDerivation, attoparsec, base, base-prelude, Cabal, cabal-helper , case-insensitive, containers, conversion , conversion-case-insensitive, conversion-text, Diff, directory , filepath, foldl, ghc, ghc-exactprint, ghc-mod-core, ghc-syb-utils , gitrev, hslogger, hspec, HUnit, monad-control, mtl , optparse-applicative, optparse-simple, parsec, stdenv , Strafunski-StrategyLib, syb, syz, turtle }: mkDerivation { pname = "HaRe"; version = "0.8.4.1"; src = HaRe-src; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; libraryHaskellDepends = [ base cabal-helper containers directory filepath ghc ghc-exactprint ghc-mod-core ghc-syb-utils hslogger monad-control mtl Strafunski-StrategyLib syb syz ]; executableHaskellDepends = [ base Cabal ghc-mod-core gitrev mtl optparse-applicative optparse-simple ]; testHaskellDepends = [ attoparsec base base-prelude cabal-helper case-insensitive containers conversion conversion-case-insensitive conversion-text Diff directory filepath foldl ghc ghc-exactprint ghc-mod-core ghc-syb-utils hslogger hspec HUnit monad-control mtl parsec Strafunski-StrategyLib syb syz turtle ]; # Test directory doesn't exist doCheck = false; homepage = "https://github.com/RefactoringTools/HaRe/wiki"; description = "the Haskell Refactorer"; license = stdenv.lib.licenses.bsd3; }) { inherit cabal-helper; }; ### hie packages haskell-ide-engine = callPackage ({ mkDerivation, aeson, async, base, bytestring, Cabal, cabal-install , containers, data-default, Diff, directory, either, ekg, filepath, ghc , ghc-mod-core, gitrev, haskell-lsp, hie-apply-refact, hie-base , hie-brittany, hie-build-plugin, hie-eg-plugin-async , hie-example-plugin2, hie-ghc-mod, hie-ghc-tree, hie-haddock , hie-hare, hie-hoogle, hie-plugin-api, hoogle, hoogleLocal, hslogger, hspec , lens, mtl, optparse-simple, QuickCheck, quickcheck-instances , sorted-list, stm, text, time, transformers , unordered-containers, vector, vinyl, yaml, yi-rope }: mkDerivation { pname = "haskell-ide-engine"; version = "0.1.0.0"; inherit src; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ aeson async base bytestring Cabal containers data-default directory either filepath ghc ghc-mod-core gitrev haskell-lsp hie-apply-refact hie-base hie-brittany hie-ghc-mod hie-haddock hie-hare hie-hoogle hie-plugin-api hslogger lens mtl optparse-simple sorted-list stm text transformers unordered-containers vector yi-rope ]; executableHaskellDepends = [ base Cabal containers directory ekg ghc-mod-core gitrev haskell-lsp hie-apply-refact hie-build-plugin hie-eg-plugin-async hie-example-plugin2 hie-ghc-mod hie-ghc-tree hie-hare hie-hoogle hie-plugin-api hslogger optparse-simple stm text time transformers unordered-containers vinyl ]; testHaskellDepends = [ aeson base containers Diff directory filepath ghc-mod-core haskell-lsp hie-apply-refact hie-base hie-eg-plugin-async hie-example-plugin2 hie-ghc-mod hie-ghc-tree hie-hare hie-hoogle hie-plugin-api hoogle hslogger hspec QuickCheck quickcheck-instances stm text transformers unordered-containers vector vinyl yaml ]; preCheck = '' export HOME=$NIX_BUILD_TOP/home mkdir -p $HOME/.hoogle ln -sv ${hoogleLocal}/share/doc/hoogle/default.hoo $HOME/.hoogle/default-haskell-${hoogle.version}.hoo ''; # https://github.com/haskell/haskell-ide-engine/issues/425 # The disabled tests do work in a local nix-shell with cabal available. patches = [ ./patches/hie-testsuite.patch ]; homepage = "http://github.com/githubuser/haskell-ide-engine#readme"; description = "Provide a common engine to power any Haskell IDE"; license = stdenv.lib.licenses.bsd3; }) { inherit hoogle; hoogleLocal = (self.hoogleLocal {}).override { inherit hoogle; }; }; hie-apply-refact = callPackage ({ mkDerivation, aeson, apply-refact, base, either, extra, ghc-mod , ghc-mod-core, haskell-src-exts, hie-base, hie-plugin-api, hlint , text, transformers }: mkDerivation { pname = "hie-apply-refact"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-apply-refact"; libraryHaskellDepends = [ aeson apply-refact base either extra ghc-mod ghc-mod-core haskell-src-exts hie-base hie-plugin-api hlint text transformers ]; description = "Haskell IDE Apply Refact plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-mod; }; hie-base = callPackage ({ mkDerivation, aeson, base, haskell-lsp, text }: mkDerivation { pname = "hie-base"; version = "0.1.0.0"; inherit src; preUnpack = "sourceRoot=source/hie-base"; libraryHaskellDepends = [ aeson base haskell-lsp text ]; description = "Haskell IDE API base types"; license = stdenv.lib.licenses.bsd3; }) {}; hie-brittany = callPackage ({ mkDerivation, aeson, base, brittany, ghc-mod, ghc-mod-core , haskell-lsp, hie-plugin-api, lens, text }: mkDerivation { pname = "hie-brittany"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-brittany"; libraryHaskellDepends = [ aeson base brittany ghc-mod ghc-mod-core haskell-lsp hie-plugin-api lens text ]; description = "Haskell IDE Hoogle plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-mod; }; hie-build-plugin = callPackage ({ mkDerivation, aeson, base, bytestring, Cabal, cabal-helper , containers, directory, filepath, haskell-lsp, hie-plugin-api , process, stm, text, transformers, yaml }: mkDerivation { pname = "hie-build-plugin"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-build-plugin"; libraryHaskellDepends = [ aeson base bytestring Cabal cabal-helper containers directory filepath haskell-lsp hie-plugin-api process stm text transformers yaml ]; description = "Haskell IDE build plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit cabal-helper; }; hie-eg-plugin-async = callPackage ({ mkDerivation, base, ghc-mod-core, hie-plugin-api, stm , text }: mkDerivation { pname = "hie-eg-plugin-async"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-eg-plugin-async"; libraryHaskellDepends = [ base ghc-mod-core hie-plugin-api stm text ]; description = "Haskell IDE example plugin, using async processes"; license = stdenv.lib.licenses.bsd3; }) {}; hie-example-plugin2 = callPackage ({ mkDerivation, base, hie-plugin-api, text }: mkDerivation { pname = "hie-example-plugin2"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-example-plugin2"; libraryHaskellDepends = [ base hie-plugin-api text ]; description = "Haskell IDE example plugin"; license = stdenv.lib.licenses.bsd3; }) {}; hie-ghc-mod = callPackage ({ mkDerivation, aeson, base, containers, ghc, ghc-mod, ghc-mod-core , hie-base, hie-plugin-api, text, transformers }: mkDerivation { pname = "hie-ghc-mod"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-ghc-mod"; libraryHaskellDepends = [ aeson base containers ghc ghc-mod ghc-mod-core hie-base hie-plugin-api text transformers ]; description = "Haskell IDE ghc-mod plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-mod; }; hie-ghc-tree = callPackage ({ mkDerivation, aeson, base, ghc-dump-tree, ghc-mod, ghc-mod-core , hie-base, hie-plugin-api, text }: mkDerivation { pname = "hie-ghc-tree"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-ghc-tree"; libraryHaskellDepends = [ aeson base ghc-dump-tree ghc-mod ghc-mod-core hie-base hie-plugin-api text ]; description = "Haskell IDE GHC Tree plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-dump-tree ghc-mod; }; hie-haddock = callPackage ({ mkDerivation, aeson, base, containers, directory, either , filepath, ghc, ghc-exactprint, ghc-mod, ghc-mod-core, haddock-api , haddock-library, HaRe, haskell-lsp, hie-base, hie-ghc-mod , hie-hare, hie-plugin-api, lens, monad-control, mtl, text , transformers }: mkDerivation { pname = "hie-haddock"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-haddock"; libraryHaskellDepends = [ aeson base containers directory either filepath ghc ghc-exactprint ghc-mod ghc-mod-core haddock-api haddock-library HaRe haskell-lsp hie-base hie-ghc-mod hie-hare hie-plugin-api lens monad-control mtl text transformers ]; description = "Haskell IDE Haddock plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit haddock-library HaRe ghc-mod; }; hie-hare = callPackage ({ mkDerivation, aeson, base, containers, Diff, either, ghc , ghc-exactprint, ghc-mod, ghc-mod-core, HaRe, haskell-lsp , hie-base, hie-ghc-mod, hie-plugin-api, lens, monad-control, mtl , text, transformers }: mkDerivation { pname = "hie-hare"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-hare"; libraryHaskellDepends = [ aeson base containers Diff either ghc ghc-exactprint ghc-mod ghc-mod-core HaRe haskell-lsp hie-base hie-ghc-mod hie-plugin-api lens monad-control mtl text transformers ]; description = "Haskell IDE HaRe plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-mod HaRe; }; hie-hoogle = callPackage ({ mkDerivation, aeson, base, directory, filepath, ghc-mod , ghc-mod-core, hie-plugin-api, hoogle, tagsoup, text }: mkDerivation { pname = "hie-hoogle"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-hoogle"; libraryHaskellDepends = [ aeson base directory filepath ghc-mod ghc-mod-core hie-plugin-api hoogle tagsoup text ]; description = "Haskell IDE Hoogle plugin"; license = stdenv.lib.licenses.bsd3; }) { inherit ghc-mod hoogle; }; hie-plugin-api = callPackage ({ mkDerivation, aeson, base, containers, Diff, directory, either , filepath, fingertree, ghc, ghc-mod-core, haskell-lsp, hie-base , hslogger, lifted-base, monad-control, mtl, stdenv, stm, syb, text , time, transformers, unordered-containers }: mkDerivation { pname = "hie-plugin-api"; version = "0.1.0.0"; inherit src; postUnpack = "sourceRoot=source/hie-plugin-api"; libraryHaskellDepends = [ aeson base containers Diff directory either filepath fingertree ghc ghc-mod-core haskell-lsp hie-base hslogger lifted-base monad-control mtl stm syb text time transformers unordered-containers ]; description = "Haskell IDE API for plugin communication"; license = stdenv.lib.licenses.bsd3; }) {}; }