From 636fe053b024ecda424f8ca34c81fcfa9c578d5c Mon Sep 17 00:00:00 2001
From: Raoul Hidalgo Charman <raoul.hidalgo.charman@gmail.com>
Date: Sat, 11 Feb 2023 18:40:08 +0000
Subject: [PATCH] haskell-language-server: init at 1.9.0.0

Introduced with dependencies it needs, with a number of plugins disabled
that don't build with ghc-9.4.x yet.

algebraic-graphs downgraded to 0.6.1 due to incompatibility in hiedb.
---
 horizon.dhall                               | 100 ++++++++-
 initial-packages.nix                        | 150 +++++++++++++
 pkgs/Chart-diagrams.nix                     |  62 ++++++
 pkgs/MemoTrie.nix                           |  21 ++
 pkgs/NumInstances.nix                       |  21 ++
 pkgs/SVGFonts.nix                           |  57 +++++
 pkgs/algebraic-graphs.nix                   |   4 +-
 pkgs/apply-refact.nix                       | 102 +++++++++
 pkgs/blaze-svg.nix                          |  23 ++
 pkgs/circle-packing.nix                     |  22 ++
 pkgs/cubicbezier.nix                        |  51 +++++
 pkgs/deferred-folds.nix                     |  58 +++++
 pkgs/diagrams-contrib.nix                   |  89 ++++++++
 pkgs/diagrams-postscript.nix                |  52 +++++
 pkgs/diagrams-svg.nix                       |  62 ++++++
 pkgs/enummapset.nix                         |  47 +++++
 pkgs/fast-math.nix                          |  20 ++
 pkgs/focus.nix                              |  39 ++++
 pkgs/force-layout.nix                       |  35 ++++
 pkgs/fourmolu.nix                           | 107 ++++++++++
 pkgs/fuzzy.nix                              |  22 ++
 pkgs/ghc-trace-events.nix                   |  22 ++
 pkgs/ghcide-bench.nix                       | 104 +++++++++
 pkgs/ghcide-test-utils.nix                  |  52 +++++
 pkgs/ghcide.nix                             | 220 +++++++++++++++++++
 pkgs/haskell-language-server.nix            | 221 ++++++++++++++++++++
 pkgs/hiedb.nix                              |  72 +++++++
 pkgs/hls-alternate-number-format-plugin.nix |  69 ++++++
 pkgs/hls-cabal-fmt-plugin.nix               |  45 ++++
 pkgs/hls-cabal-plugin.nix                   |  70 +++++++
 pkgs/hls-call-hierarchy-plugin.nix          |  64 ++++++
 pkgs/hls-change-type-signature-plugin.nix   |  54 +++++
 pkgs/hls-class-plugin.nix                   |  67 ++++++
 pkgs/hls-code-range-plugin.nix              |  73 +++++++
 pkgs/hls-explicit-fixity-plugin.nix         |  48 +++++
 pkgs/hls-explicit-imports-plugin.nix        |  48 +++++
 pkgs/hls-explicit-record-fields-plugin.nix  |  57 +++++
 pkgs/hls-fourmolu-plugin.nix                |  60 ++++++
 pkgs/hls-gadt-plugin.nix                    |  67 ++++++
 pkgs/hls-graph.nix                          |  93 ++++++++
 pkgs/hls-hlint-plugin.nix                   |  94 +++++++++
 pkgs/hls-module-name-plugin.nix             |  45 ++++
 pkgs/hls-plugin-api.nix                     | 101 +++++++++
 pkgs/hls-pragmas-plugin.nix                 |  58 +++++
 pkgs/hls-qualify-imported-names-plugin.nix  |  52 +++++
 pkgs/hls-refactor-plugin.nix                | 115 ++++++++++
 pkgs/hls-refine-imports-plugin.nix          |  50 +++++
 pkgs/hls-retrie-plugin.nix                  |  61 ++++++
 pkgs/hls-splice-plugin.nix                  |  64 ++++++
 pkgs/hls-test-utils.nix                     |  74 +++++++
 pkgs/hp2pretty.nix                          |  44 ++++
 pkgs/hslogger.nix                           |  46 ++++
 pkgs/hspec-attoparsec.nix                   |  43 ++++
 pkgs/hw-fingertree.nix                      |  44 ++++
 pkgs/hw-hedgehog.nix                        |  32 +++
 pkgs/hw-hspec-hedgehog.nix                  |  51 +++++
 pkgs/hw-prim.nix                            |  74 +++++++
 pkgs/implicit-hie-cradle.nix                |  65 ++++++
 pkgs/implicit-hie.nix                       |  64 ++++++
 pkgs/integration.nix                        |  21 ++
 pkgs/lsp-test.nix                           | 102 +++++++++
 pkgs/matrices.nix                           |  38 ++++
 pkgs/mfsolve.nix                            |  38 ++++
 pkgs/mmap.nix                               |  20 ++
 pkgs/mwc-random-monad.nix                   |  35 ++++
 pkgs/opentelemetry.nix                      |  32 +++
 pkgs/optparse-simple.nix                    |  39 ++++
 pkgs/primitive-extras.nix                   |  64 ++++++
 pkgs/primitive-unlifted.nix                 |  29 +++
 pkgs/random-fu.nix                          |  48 +++++
 pkgs/retrie.nix                             |  94 +++++++++
 pkgs/shake-bench.nix                        |  57 +++++
 pkgs/statestack.nix                         |  22 ++
 pkgs/stm-containers.nix                     |  55 +++++
 pkgs/stm-hamt.nix                           |  72 +++++++
 pkgs/svg-builder.nix                        |  38 ++++
 pkgs/tasty-rerun.nix                        |  44 ++++
 pkgs/vector-space.nix                       |  20 ++
 78 files changed, 4692 insertions(+), 3 deletions(-)
 create mode 100644 pkgs/Chart-diagrams.nix
 create mode 100644 pkgs/MemoTrie.nix
 create mode 100644 pkgs/NumInstances.nix
 create mode 100644 pkgs/SVGFonts.nix
 create mode 100644 pkgs/apply-refact.nix
 create mode 100644 pkgs/blaze-svg.nix
 create mode 100644 pkgs/circle-packing.nix
 create mode 100644 pkgs/cubicbezier.nix
 create mode 100644 pkgs/deferred-folds.nix
 create mode 100644 pkgs/diagrams-contrib.nix
 create mode 100644 pkgs/diagrams-postscript.nix
 create mode 100644 pkgs/diagrams-svg.nix
 create mode 100644 pkgs/enummapset.nix
 create mode 100644 pkgs/fast-math.nix
 create mode 100644 pkgs/focus.nix
 create mode 100644 pkgs/force-layout.nix
 create mode 100644 pkgs/fourmolu.nix
 create mode 100644 pkgs/fuzzy.nix
 create mode 100644 pkgs/ghc-trace-events.nix
 create mode 100644 pkgs/ghcide-bench.nix
 create mode 100644 pkgs/ghcide-test-utils.nix
 create mode 100644 pkgs/ghcide.nix
 create mode 100644 pkgs/haskell-language-server.nix
 create mode 100644 pkgs/hiedb.nix
 create mode 100644 pkgs/hls-alternate-number-format-plugin.nix
 create mode 100644 pkgs/hls-cabal-fmt-plugin.nix
 create mode 100644 pkgs/hls-cabal-plugin.nix
 create mode 100644 pkgs/hls-call-hierarchy-plugin.nix
 create mode 100644 pkgs/hls-change-type-signature-plugin.nix
 create mode 100644 pkgs/hls-class-plugin.nix
 create mode 100644 pkgs/hls-code-range-plugin.nix
 create mode 100644 pkgs/hls-explicit-fixity-plugin.nix
 create mode 100644 pkgs/hls-explicit-imports-plugin.nix
 create mode 100644 pkgs/hls-explicit-record-fields-plugin.nix
 create mode 100644 pkgs/hls-fourmolu-plugin.nix
 create mode 100644 pkgs/hls-gadt-plugin.nix
 create mode 100644 pkgs/hls-graph.nix
 create mode 100644 pkgs/hls-hlint-plugin.nix
 create mode 100644 pkgs/hls-module-name-plugin.nix
 create mode 100644 pkgs/hls-plugin-api.nix
 create mode 100644 pkgs/hls-pragmas-plugin.nix
 create mode 100644 pkgs/hls-qualify-imported-names-plugin.nix
 create mode 100644 pkgs/hls-refactor-plugin.nix
 create mode 100644 pkgs/hls-refine-imports-plugin.nix
 create mode 100644 pkgs/hls-retrie-plugin.nix
 create mode 100644 pkgs/hls-splice-plugin.nix
 create mode 100644 pkgs/hls-test-utils.nix
 create mode 100644 pkgs/hp2pretty.nix
 create mode 100644 pkgs/hslogger.nix
 create mode 100644 pkgs/hspec-attoparsec.nix
 create mode 100644 pkgs/hw-fingertree.nix
 create mode 100644 pkgs/hw-hedgehog.nix
 create mode 100644 pkgs/hw-hspec-hedgehog.nix
 create mode 100644 pkgs/hw-prim.nix
 create mode 100644 pkgs/implicit-hie-cradle.nix
 create mode 100644 pkgs/implicit-hie.nix
 create mode 100644 pkgs/integration.nix
 create mode 100644 pkgs/lsp-test.nix
 create mode 100644 pkgs/matrices.nix
 create mode 100644 pkgs/mfsolve.nix
 create mode 100644 pkgs/mmap.nix
 create mode 100644 pkgs/mwc-random-monad.nix
 create mode 100644 pkgs/opentelemetry.nix
 create mode 100644 pkgs/optparse-simple.nix
 create mode 100644 pkgs/primitive-extras.nix
 create mode 100644 pkgs/primitive-unlifted.nix
 create mode 100644 pkgs/random-fu.nix
 create mode 100644 pkgs/retrie.nix
 create mode 100644 pkgs/shake-bench.nix
 create mode 100644 pkgs/statestack.nix
 create mode 100644 pkgs/stm-containers.nix
 create mode 100644 pkgs/stm-hamt.nix
 create mode 100644 pkgs/svg-builder.nix
 create mode 100644 pkgs/tasty-rerun.nix
 create mode 100644 pkgs/vector-space.nix

diff --git a/horizon.dhall b/horizon.dhall
index d369b00e..848f81e3 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -51,6 +51,20 @@ let callGitServant
           "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc"
           (Some subdir)
 
+let callHaskellLanguageServer
+    : H.HaskellPackage.Type
+    = (H.callHackage "haskell-language-server" "1.9.0.0")
+      with flags =
+        [ H.CabalFlag.Disable "dynamic"
+        , H.CabalFlag.Disable "ormolu"
+        , H.CabalFlag.Disable "rename"
+        , H.CabalFlag.Disable "stylishHaskell"
+        , H.CabalFlag.Disable "eval"
+        , H.CabalFlag.Disable "floskell"
+        ]
+      with modifiers.enableProfiling = False
+      with modifiers.includeBenchmarks = False
+
 let packages =
       { BNFC = H.callHackage "BNFC" "2.9.4.1"
       , Boolean = H.callHackage "Boolean" "0.2.4"
@@ -60,6 +74,7 @@ let packages =
       , Cabal-syntax = callGitCabal "Cabal-syntax"
       , Cabal-tree-diff = callGitCabal "Cabal-tree-diff"
       , Chart = H.callHackage "Chart" "1.9.4"
+      , Chart-diagrams = H.callHackage "Chart-diagrams" "1.9.4"
       , ChasingBottoms = H.callHackage "ChasingBottoms" "1.3.1.12"
       , Decimal = H.callHackage "Decimal" "0.5.2"
       , Diff = H.callHackage "Diff" "0.4.1"
@@ -72,8 +87,10 @@ let packages =
       , HsYAML = H.callHackage "HsYAML" "0.2.1.1"
       , ListLike = H.callHackage "ListLike" "4.7.7"
       , JuicyPixels = H.callHackage "JuicyPixels" "3.3.8"
+      , MemoTrie = H.callHackage "MemoTrie" "0.6.10"
       , MonadRandom = H.callHackage "MonadRandom" "0.5.3"
       , MonadPrompt = H.callHackage "MonadPrompt" "1.0.0.5"
+      , NumInstances = H.callHackage "NumInstances" "1.4"
       , OneTuple = H.callHackage "OneTuple" "0.3.1"
       , Only = H.callHackage "Only" "0.1"
       , OpenGLRaw = H.callHackage "OpenGLRaw" "3.3.4.1"
@@ -83,6 +100,7 @@ let packages =
       , SHA = H.callHackage "SHA" "1.6.4.4"
       , StateVar = H.callHackage "StateVar" "1.2.2"
       , Stream = H.callHackage "Stream" "0.4.7.2"
+      , SVGFonts = H.callHackage "SVGFonts" "1.8.0.1"
       , Unique = H.callHackage "Unique" "0.4.7.9"
       , X11-xft = H.callHackage "X11-xft" "0.3.4"
       , X11 = H.callHackage "X11" "1.10.3"
@@ -96,13 +114,14 @@ let packages =
       , aeson-qq = H.callHackage "aeson-qq" "0.8.4"
       , aeson-yaml = H.callHackage "aeson-yaml" "1.1.0.1"
       , alex = H.callHackage "alex" "3.2.7.1"
-      , algebraic-graphs = H.callHackage "algebraic-graphs" "0.7"
+      , algebraic-graphs = H.callHackage "algebraic-graphs" "0.6.1"
       , alsa-core = H.callHackage "alsa-core" "0.5.0.1"
       , alsa-mixer = H.callHackage "alsa-mixer" "0.3.0"
       , ansi-terminal = H.callHackage "ansi-terminal" "0.11.3"
       , ansi-wl-pprint = H.callHackage "ansi-wl-pprint" "0.6.9"
       , ap-normalize = H.callHackage "ap-normalize" "0.1.0.1"
       , appar = H.callHackage "appar" "0.1.8"
+      , apply-refact = H.callHackage "apply-refact" "0.11.0.0"
       , apecs = H.callHackage "apecs" "0.9.4"
       , asn1-encoding = H.callHackage "asn1-encoding" "0.9.6"
       , asn1-parse = H.callHackage "asn1-parse" "0.9.5"
@@ -149,6 +168,7 @@ let packages =
       , blaze-html = H.callHackage "blaze-html" "0.9.1.2"
       , blaze-markup = H.callHackage "blaze-markup" "0.8.2.8"
       , blaze-textual = H.callHackage "blaze-textual" "0.2.2.1"
+      , blaze-svg = H.callHackage "blaze-svg" "0.3.6.1"
       , boring = H.callHackage "boring" "0.2"
       , breakpoint = H.callHackage "breakpoint" "0.1.1.1"
       , brick = H.callHackage "brick" "1.3"
@@ -182,6 +202,7 @@ let packages =
       , checkers = H.callHackage "checkers" "0.6.0"
       , chell-quickcheck = H.callHackage "chell-quickcheck" "0.2.5.3"
       , chell = H.callHackage "chell" "0.5.0.1"
+      , circle-packing = H.callHackage "circle-packing" "0.1.0.6"
       , citeproc = H.callHackage "citeproc" "0.8.0.1"
       , clock = H.callHackage "clock" "0.8.3"
       , cmark-gfm = H.callHackage "cmark-gfm" "0.2.5"
@@ -227,6 +248,7 @@ let packages =
       , css-text = H.callHackage "css-text" "0.1.3.0"
       , csv =
           callHorizonAdopted "csv" "d02b89bbad79136b52fd1197f087466cf51573dd"
+      , cubicbezier = H.callHackage "cubicbezier" "0.6.0.6"
       , cursor-brick = H.callHackage "cursor-brick" "0.1.0.1"
       , cursor-dirforest = callGitCursorDirforest "cursor-dirforest"
       , cursor-dirforest-brick = callGitCursorDirforest "cursor-dirforest-brick"
@@ -261,6 +283,7 @@ let packages =
       , dbus = H.callHackage "dbus" "1.2.27"
       , dec = H.callHackage "dec" "0.0.5"
       , deepseq-generics = H.callHackage "deepseq-generics" "0.2.0.0"
+      , deferred-folds = H.callHackage "deferred-folds" "0.9.18.2"
       , dense-linear-algebra = H.callHackage "dense-linear-algebra" "0.1.0.0"
       , dependent-map = H.callHackage "dependent-map" "0.4.0.0"
       , dependent-sum-template =
@@ -272,9 +295,12 @@ let packages =
       , deriving-aeson = H.callHackage "deriving-aeson" "0.2.8"
       , dhall = H.callHackage "dhall" "1.41.2"
       , dhall-json = H.callHackage "dhall-json" "1.7.11"
+      , diagrams-contrib = H.callHackage "diagrams-contrib" "1.4.5"
       , diagrams-core = H.callHackage "diagrams-core" "1.5.0.1"
       , diagrams-lib = H.callHackage "diagrams-lib" "1.4.5.3"
+      , diagrams-postscript = H.callHackage "diagrams-postscript" "1.5.1"
       , diagrams-solve = H.callHackage "diagrams-solve" "0.1.3"
+      , diagrams-svg = H.callHackage "diagrams-svg" "1.4.3.1"
       , dictionary-sharing = H.callHackage "dictionary-sharing" "0.1.0.0"
       , digest = H.callHackage "digest" "0.0.1.3"
       , dimensional = H.callHackage "dimensional" "1.5"
@@ -338,6 +364,7 @@ let packages =
       , enclosed-exceptions = H.callHackage "enclosed-exceptions" "1.0.3"
       , entropy = H.callHackage "entropy" "0.4.1.10"
       , envparse = H.callHackage "envparse" "0.5.0"
+      , enummapset = H.callHackage "enummapset" "0.7.1.0"
       , erf = H.callHackage "erf" "2.0.0.0"
       , errors = H.callHackage "errors" "2.3.0"
       , exact-combinatorics = H.callHackage "exact-combinatorics" "0.2.0.11"
@@ -348,6 +375,7 @@ let packages =
       , extra = H.callHackage "extra" "1.7.12"
       , expiring-cache-map = H.callHackage "expiring-cache-map" "0.0.6.1"
       , fail = H.callHackage "fail" "4.9.0.0"
+      , fast-math = H.callHackage "fast-math" "1.0.2"
       , fast-logger = H.callHackage "fast-logger" "3.1.1"
       , fcf-containers = H.callHackage "fcf-containers" "0.7.1"
       , feedback = H.callHackage "feedback" "0.1.0.1"
@@ -371,15 +399,19 @@ let packages =
       , floatshow = H.callHackage "floatshow" "0.2.4"
       , fmlist = H.callHackage "fmlist" "0.9.4"
       , fmt = H.callHackage "fmt" "0.6.3.0"
+      , focus = H.callHackage "focus" "1.0.3"
       , foldl = H.callHackage "foldl" "1.4.12"
+      , force-layout = H.callHackage "force-layout" "0.4.0.6"
       , foreign-store = H.callHackage "foreign-store" "0.2"
       , formatting = H.callHackage "formatting" "7.1.3"
       , foundation = H.callHackage "foundation" "0.0.29"
+      , fourmolu = H.callHackage "fourmolu" "0.10.1.0"
       , free = H.callHackage "free" "5.1.9"
       , freer-simple = H.callHackage "freer-simple" "1.2.1.2"
       , friendly-time = H.callHackage "friendly-time" "0.4.1"
       , fsnotify = H.callHackage "fsnotify" "0.4.1.0"
       , fusion-plugin-types = H.callHackage "fusion-plugin-types" "0.1.0"
+      , fuzzy = H.callHackage "fuzzy" "0.1.0.1"
       , fuzzy-time-gen = H.callHackage "fuzzy-time-gen" "0.2.0.1"
       , fuzzy-time = H.callHackage "fuzzy-time" "0.2.0.3"
       , generically = H.callHackage "generically" "0.1"
@@ -441,10 +473,14 @@ let packages =
       , ghc-lib-parser-ex = H.callHackage "ghc-lib-parser-ex" "9.4.0.0"
       , ghc-paths = H.callHackage "ghc-paths" "0.1.0.12"
       , ghc-tcplugins-extra = H.callHackage "ghc-tcplugins-extra" "0.4.3"
+      , ghc-trace-events = H.callHackage "ghc-trace-events" "0.1.2.6"
       , ghc-typelits-knownnat = H.callHackage "ghc-typelits-knownnat" "0.7.7"
       , ghc-typelits-natnormalise =
           H.callHackage "ghc-typelits-natnormalise" "0.7.7"
       , ghcid = H.callHackage "ghcid" "0.8.8"
+      , ghcide = H.callHackage "ghcide" "1.9.0.0"
+      , ghcide-bench = H.callHackage "ghcide-bench" "0.1.1"
+      , ghcide-test-utils = H.callHackage "ghcide-test-utils" "1.9.0.0"
       , githash = H.callHackage "githash" "0.1.6.3"
       , gitrev = H.callHackage "gitrev" "1.3.1"
       , gridtables = H.callHackage "gridtables" "0.1.0.0"
@@ -464,6 +500,7 @@ let packages =
       , haskell-src = H.callHackage "haskell-src" "1.0.4"
       , haskell-src-exts = H.callHackage "haskell-src-exts" "1.23.1"
       , haskell-src-meta = H.callHackage "haskell-src-meta" "0.8.11"
+      , haskell-language-server = callHaskellLanguageServer
       , heaps = H.callHackage "heaps" "0.4"
       , hedgehog-extras = H.callHackage "hedgehog-extras" "0.3.0.3"
       , hedgehog-fn = H.callHackage "hedgehog-fn" "1.0"
@@ -478,19 +515,54 @@ let packages =
       , hex-text = H.callHackage "hex-text" "0.1.0.7"
       , hie-bios = H.callHackage "hie-bios" "0.11.0"
       , hie-compat = H.callHackage "hie-compat" "0.3.0.0"
+      , hiedb = H.callHackage "hiedb" "0.4.2.0"
       , hinotify = H.callHackage "hinotify" "0.4.1"
       , hledger-lib = H.callHackage "hledger-lib" "1.27.1"
       , hledger = H.callHackage "hledger" "1.27.1"
       , hlint = H.callHackage "hlint" "3.5"
+      , hls-alternate-number-format-plugin =
+          H.callHackage "hls-alternate-number-format-plugin" "1.3.0.0"
+      , hls-cabal-fmt-plugin = H.callHackage "hls-cabal-fmt-plugin" "0.1.0.0"
+      , hls-cabal-plugin = H.callHackage "hls-cabal-plugin" "0.1.0.0"
+      , hls-call-hierarchy-plugin =
+          H.callHackage "hls-call-hierarchy-plugin" "1.2.0.0"
+      , hls-change-type-signature-plugin =
+          H.callHackage "hls-change-type-signature-plugin" "1.1.0.0"
+      , hls-class-plugin = H.callHackage "hls-class-plugin" "1.1.1.0"
+      , hls-code-range-plugin = H.callHackage "hls-code-range-plugin" "1.1.0.0"
+      , hls-explicit-fixity-plugin =
+          H.callHackage "hls-explicit-fixity-plugin" "1.1.0.0"
+      , hls-explicit-imports-plugin =
+          H.callHackage "hls-explicit-imports-plugin" "1.2.0.0"
+      , hls-explicit-record-fields-plugin =
+          H.callHackage "hls-explicit-record-fields-plugin" "1.0.0.0"
+      , hls-fourmolu-plugin = H.callHackage "hls-fourmolu-plugin" "1.1.1.0"
+      , hls-gadt-plugin = H.callHackage "hls-gadt-plugin" "1.0.1.0"
+      , hls-graph = H.callHackage "hls-graph" "1.9.0.0"
+      , hls-hlint-plugin = H.callHackage "hls-hlint-plugin" "1.1.1.0"
+      , hls-module-name-plugin =
+          H.callHackage "hls-module-name-plugin" "1.1.1.0"
+      , hls-plugin-api = H.callHackage "hls-plugin-api" "1.6.0.0"
+      , hls-pragmas-plugin = H.callHackage "hls-pragmas-plugin" "1.0.4.0"
+      , hls-qualify-imported-names-plugin =
+          H.callHackage "hls-qualify-imported-names-plugin" "1.0.2.0"
+      , hls-refactor-plugin = H.callHackage "hls-refactor-plugin" "1.1.0.0"
+      , hls-refine-imports-plugin =
+          H.callHackage "hls-refine-imports-plugin" "1.0.4.0"
+      , hls-retrie-plugin = H.callHackage "hls-retrie-plugin" "1.0.3.0"
+      , hls-splice-plugin = H.callHackage "hls-splice-plugin" "1.0.3.0"
+      , hls-test-utils = H.callHackage "hls-test-utils" "1.5.0.0"
       , hopenssl = H.callHackage "hopenssl" "2.2.4"
       , horizon-gen-nix = H.callHackage "horizon-gen-nix" "0.5"
       , horizon-spec = H.callHackage "horizon-spec" "0.5"
       , hosc = H.callHackage "hosc" "0.19.1"
       , hostname = H.callHackage "hostname" "1.0"
       , hourglass = H.callHackage "hourglass" "0.2.12"
+      , hp2pretty = H.callHackage "hp2pretty" "0.10"
       , hpack-dhall = H.callHackage "hpack-dhall" "0.5.7"
       , hpack = H.callHackage "hpack" "0.35.0"
       , hscolour = H.callHackage "hscolour" "1.24.4"
+      , hslogger = H.callHackage "hslogger" "1.3.1.0"
       , hslua-aeson = H.callHackage "hslua-aeson" "2.2.1"
       , hslua-core = H.callHackage "hslua-core" "2.2.1"
       , hslua-classes = H.callHackage "hslua-classes" "2.2.0"
@@ -504,6 +576,7 @@ let packages =
           H.callHackage "hslua-objectorientation" "2.2.1"
       , hslua-packaging = H.callHackage "hslua-packaging" "2.2.1"
       , hslua = H.callHackage "hslua" "2.2.1"
+      , hspec-attoparsec = H.callHackage "hspec-attoparsec" "0.1.0.2"
       , hspec-contrib = H.callHackage "hspec-contrib" "0.5.1.1"
       , hspec-core = H.callHackage "hspec-core" "2.10.0.1"
       , hspec-discover = H.callHackage "hspec-discover" "2.10.0.1"
@@ -533,6 +606,10 @@ let packages =
       , http-types = H.callHackage "http-types" "0.12.3"
       , http2 = H.callHackage "http2" "3.0.3"
       , hw-aeson = H.callHackage "hw-aeson" "0.1.8.0"
+      , hw-fingertree = H.callHackage "hw-fingertree" "0.1.2.1"
+      , hw-hedgehog = H.callHackage "hw-hedgehog" "0.1.1.1"
+      , hw-hspec-hedgehog = H.callHackage "hw-hspec-hedgehog" "0.1.1.1"
+      , hw-prim = H.callHackage "hw-prim" "0.6.3.2"
       , hxt = H.callHackage "hxt" "9.3.1.22"
       , hxt-charproperties = H.callHackage "hxt-charproperties" "9.5.0.0"
       , hxt-regex-xmlschema = H.callHackage "hxt-regex-xmlschema" "9.2.0.7"
@@ -553,10 +630,13 @@ let packages =
           H.callHackage "insert-ordered-containers" "0.2.5.1"
       , inspection-testing = H.callHackage "inspection-testing" "0.5"
       , int-cast = H.callHackage "int-cast" "0.2.0.0"
+      , integration = H.callHackage "integration" "0.2.1"
       , integer-logarithms = H.callHackage "integer-logarithms" "1.0.3.1"
       , interpolate = H.callHackage "interpolate" "0.2.1"
       , intervals = H.callHackage "intervals" "0.9.2"
       , invariant = H.callHackage "invariant" "0.6"
+      , implicit-hie = H.callHackage "implicit-hie" "0.1.4.0"
+      , implicit-hie-cradle = H.callHackage "implicit-hie-cradle" "0.5.0.0"
       , io-streams-haproxy = H.callHackage "io-streams-haproxy" "1.0.1.0"
       , io-streams = H.callHackage "io-streams" "1.5.2.2"
       , ipynb = H.callHackage "ipynb" "0.2"
@@ -617,6 +697,7 @@ let packages =
       , lpeg = H.callHackage "lpeg" "1.0.3"
       , lrucache = H.callHackage "lrucache" "1.2.0.1"
       , lsp-types = H.callHackage "lsp-types" "1.6.0.0"
+      , lsp-test = H.callHackage "lsp-test" "0.14.1.0"
       , lsp = H.callHackage "lsp" "1.6.0.0"
       , lua-arbitrary = H.callHackage "lua-arbitrary" "1.0.1"
       , lua = H.callHackage "lua" "2.2.1"
@@ -632,12 +713,14 @@ let packages =
       , markov-chain-usage-model =
           H.callHackage "markov-chain-usage-model" "0.0.0"
       , math-functions = H.callHackage "math-functions" "0.3.4.2"
+      , matrices = H.callHackage "matrices" "0.5.0"
       , matrix = H.callHackage "matrix" "0.3.6.1"
       , megaparsec = H.callHackage "megaparsec" "9.2.2"
       , mersenne-random-pure64 =
           H.callHackage "mersenne-random-pure64" "0.2.2.0"
       , memory = H.callHackage "memory" "0.18.0"
       , mersenne-random = H.callHackage "mersenne-random" "1.0.0.1"
+      , mfsolve = H.callHackage "mfsolve" "0.3.2.1"
       , microlens-aeson = H.callHackage "microlens-aeson" "2.5.0"
       , microlens-ghc = H.callHackage "microlens-ghc" "0.4.14.0"
       , microlens-mtl = H.callHackage "microlens-mtl" "0.2.0.2"
@@ -647,6 +730,7 @@ let packages =
       , microspec = H.callHackage "microspec" "0.2.1.3"
       , microstache = H.callHackage "microstache" "1.0.2.2"
       , mime-types = H.callHackage "mime-types" "0.1.1.0"
+      , mmap = H.callHackage "mmap" "0.5.9"
       , mmorph = H.callHackage "mmorph" "1.2.0"
       , mockery = H.callHackage "mockery" "0.3.5"
       , mod = H.callHackage "mod" "0.1.2.2"
@@ -668,6 +752,7 @@ let packages =
       , mtl-prelude = H.callHackage "mtl-prelude" "2.0.3.1"
       , multiset = H.callHackage "multiset" "0.3.4.3"
       , mwc-random = H.callHackage "mwc-random" "0.15.0.2"
+      , mwc-random-monad = H.callHackage "mwc-random-monad" "0.7.3.1"
       , nanospec = H.callHackage "nanospec" "0.2.2"
       , nats = H.callHackage "nats" "1.1.2"
       , natural-arithmetic = H.callHackage "natural-arithmetic" "0.1.3.0"
@@ -698,6 +783,7 @@ let packages =
       , openapi3 = H.callHackage "openapi3" "3.2.2"
       , openssl-streams = H.callHackage "openssl-streams" "1.2.3.0"
       , operational = H.callHackage "operational" "0.2.4.2"
+      , opentelemetry = H.callHackage "opentelemetry" "0.8.0"
       , optics-core = H.callHackage "optics-core" "0.4.1"
       , optics-extra = H.callHackage "optics-extra" "0.4.2.1"
       , optics-th = H.callHackage "optics-th" "0.4.1"
@@ -706,6 +792,7 @@ let packages =
       , options = H.callHackage "options" "1.2.1.1"
       , optparse-applicative = H.callHackage "optparse-applicative" "0.17.0.0"
       , optparse-generic = H.callHackage "optparse-generic" "1.4.8"
+      , optparse-simple = H.callHackage "optparse-simple" "0.1.1.4"
       , ordered-containers = H.callHackage "ordered-containers" "0.2.3"
       , pandoc-lua-marshal = H.callHackage "pandoc-lua-marshal" "0.1.7"
       , pandoc-types = H.callHackage "pandoc-types" "1.22.2.1"
@@ -781,7 +868,9 @@ let packages =
       , primes = H.callHackage "primes" "0.2.1.0"
       , primitive = H.callHackage "primitive" "0.7.4.0"
       , primitive-addr = H.callHackage "primitive-addr" "0.1.0.2"
+      , primitive-extras = H.callHackage "primitive-extras" "0.10.1.5"
       , primitive-offset = H.callHackage "primitive-offset" "0.2.0.0"
+      , primitive-unlifted = H.callHackage "primitive-unlifted" "0.1.3.1"
       , procex = H.callHackage "procex" "0.3.3"
       , profunctors = H.callHackage "profunctors" "5.6.2"
       , prometheus-client = H.callHackage "prometheus-client" "1.1.0"
@@ -808,6 +897,7 @@ let packages =
       , quiet = H.callHackage "quiet" "0.2"
       , ral = H.callHackage "ral" "0.1"
       , random-bytestring = H.callHackage "random-bytestring" "0.1.4"
+      , random-fu = H.callHackage "random-fu" "0.3.0.0"
       , random-shuffle = H.callHackage "random-shuffle" "0.0.4"
       , random = H.callHackage "random" "1.2.1.1"
       , raven-haskell = H.callHackage "raven-haskell" "0.1.4.1"
@@ -836,6 +926,7 @@ let packages =
       , resource-pool = H.callHackage "resource-pool" "0.3.1.0"
       , resourcet = H.callHackage "resourcet" "1.3.0"
       , retry = H.callHackage "retry" "0.9.3.0"
+      , retrie = H.callHackage "retrie" "1.2.1.1"
       , rope-utf16-splay = H.callHackage "rope-utf16-splay" "0.4.0.0"
       , row-types = H.callHackage "row-types" "1.0.1.2"
       , rvar = H.callHackage "rvar" "0.3.0.1"
@@ -894,6 +985,7 @@ let packages =
       , setlocale = H.callHackage "setlocale" "1.0.0.10"
       , shakespeare = H.callHackage "shakespeare" "2.0.30"
       , shake = H.callHackage "shake" "0.19.6"
+      , shake-bench = H.callHackage "shake-bench" "0.2.0.0"
       , shelly = H.callHackage "shelly" "1.10.0"
       , shh = H.callHackage "shh" "0.7.2.0"
       , should-not-typecheck = H.callHackage "should-not-typecheck" "2.1.0"
@@ -926,9 +1018,12 @@ let packages =
       , split = H.callHackage "split" "0.2.3.3"
       , spoon = H.callHackage "spoon" "0.3.1"
       , sqlite-simple = H.callHackage "sqlite-simple" "0.4.18.2"
+      , statestack = H.callHackage "statestack" "0.3.1"
       , statistics-linreg = H.callHackage "statistics-linreg" "0.3"
       , statistics = H.callHackage "statistics" "0.16.1.0"
       , stm-chans = H.callHackage "stm-chans" "3.0.0.6"
+      , stm-hamt = H.callHackage "stm-hamt" "1.2.0.8"
+      , stm-containers = H.callHackage "stm-containers" "1.2"
       , streaming-commons = H.callHackage "streaming-commons" "0.2.2.4"
       , streaming = H.callHackage "streaming" "0.2.3.1"
       , streamly = H.callHackage "streamly" "0.8.3"
@@ -947,6 +1042,7 @@ let packages =
       , stringbuilder = H.callHackage "stringbuilder" "0.5.1"
       , stringsearch = H.callHackage "stringsearch" "0.3.6.6"
       , sundown = H.callHackage "sundown" "0.6"
+      , svg-builder = H.callHackage "svg-builder" "0.1.1"
       , swagger2 = H.callHackage "swagger2" "2.8.5"
       , syb = H.callHackage "syb" "0.7.2.1"
       , sydtest = H.callHackage "sydtest" "0.13.0.0"
@@ -986,6 +1082,7 @@ let packages =
           H.callHackage "tasty-inspection-testing" "0.2"
       , tasty-kat = H.callHackage "tasty-kat" "0.0.3"
       , tasty-lua = H.callHackage "tasty-lua" "1.0.2"
+      , tasty-rerun = H.callHackage "tasty-rerun" "1.1.18"
       , tasty-silver = H.callHackage "tasty-silver" "3.3.1.1"
       , tasty-smallcheck = H.callHackage "tasty-smallcheck" "0.8.2"
       , tasty-th = H.callHackage "tasty-th" "0.1.7"
@@ -1103,6 +1200,7 @@ let packages =
           H.callHackage "vector-binary-instances" "0.2.5.2"
       , vector-instances = H.callHackage "vector-instances" "3.4"
       , vector-sized = H.callHackage "vector-sized" "1.5.0"
+      , vector-space = H.callHackage "vector-space" "0.16"
       , vector-stream = H.callHackage "vector-stream" "0.1.0.0"
       , vector-th-unbox = H.callHackage "vector-th-unbox" "0.2.2"
       , vec = H.callHackage "vec" "0.4.1"
diff --git a/initial-packages.nix b/initial-packages.nix
index 035cc404..3cd76043 100644
--- a/initial-packages.nix
+++ b/initial-packages.nix
@@ -17,6 +17,8 @@ self: with pkgs.haskell.lib; {
 
   Chart = self.callPackage (./pkgs/Chart.nix) { };
 
+  Chart-diagrams = self.callPackage (./pkgs/Chart-diagrams.nix) { };
+
   ChasingBottoms = self.callPackage (./pkgs/ChasingBottoms.nix) { };
 
   Decimal = self.callPackage (./pkgs/Decimal.nix) { };
@@ -41,10 +43,14 @@ self: with pkgs.haskell.lib; {
 
   ListLike = self.callPackage (./pkgs/ListLike.nix) { };
 
+  MemoTrie = self.callPackage (./pkgs/MemoTrie.nix) { };
+
   MonadPrompt = self.callPackage (./pkgs/MonadPrompt.nix) { };
 
   MonadRandom = self.callPackage (./pkgs/MonadRandom.nix) { };
 
+  NumInstances = self.callPackage (./pkgs/NumInstances.nix) { };
+
   OneTuple = self.callPackage (./pkgs/OneTuple.nix) { };
 
   Only = self.callPackage (./pkgs/Only.nix) { };
@@ -61,6 +67,8 @@ self: with pkgs.haskell.lib; {
 
   SHA = self.callPackage (./pkgs/SHA.nix) { };
 
+  SVGFonts = self.callPackage (./pkgs/SVGFonts.nix) { };
+
   StateVar = self.callPackage (./pkgs/StateVar.nix) { };
 
   Stream = self.callPackage (./pkgs/Stream.nix) { };
@@ -107,6 +115,8 @@ self: with pkgs.haskell.lib; {
 
   appar = self.callPackage (./pkgs/appar.nix) { };
 
+  apply-refact = self.callPackage (./pkgs/apply-refact.nix) { };
+
   asn1-encoding = self.callPackage (./pkgs/asn1-encoding.nix) { };
 
   asn1-parse = self.callPackage (./pkgs/asn1-parse.nix) { };
@@ -193,6 +203,8 @@ self: with pkgs.haskell.lib; {
 
   blaze-markup = self.callPackage (./pkgs/blaze-markup.nix) { };
 
+  blaze-svg = self.callPackage (./pkgs/blaze-svg.nix) { };
+
   blaze-textual = self.callPackage (./pkgs/blaze-textual.nix) { };
 
   boring = self.callPackage (./pkgs/boring.nix) { };
@@ -253,6 +265,8 @@ self: with pkgs.haskell.lib; {
 
   chell-quickcheck = self.callPackage (./pkgs/chell-quickcheck.nix) { };
 
+  circle-packing = self.callPackage (./pkgs/circle-packing.nix) { };
+
   citeproc = self.callPackage (./pkgs/citeproc.nix) { };
 
   clock = self.callPackage (./pkgs/clock.nix) { };
@@ -351,6 +365,8 @@ self: with pkgs.haskell.lib; {
 
   csv = self.callPackage (./pkgs/csv.nix) { };
 
+  cubicbezier = self.callPackage (./pkgs/cubicbezier.nix) { };
+
   cursor = self.callPackage (./pkgs/cursor.nix) { };
 
   cursor-brick = self.callPackage (./pkgs/cursor-brick.nix) { };
@@ -395,6 +411,8 @@ self: with pkgs.haskell.lib; {
 
   deepseq-generics = self.callPackage (./pkgs/deepseq-generics.nix) { };
 
+  deferred-folds = self.callPackage (./pkgs/deferred-folds.nix) { };
+
   dense-linear-algebra = self.callPackage (./pkgs/dense-linear-algebra.nix) { };
 
   dependent-map = self.callPackage (./pkgs/dependent-map.nix) { };
@@ -415,12 +433,18 @@ self: with pkgs.haskell.lib; {
 
   dhall-json = self.callPackage (./pkgs/dhall-json.nix) { };
 
+  diagrams-contrib = self.callPackage (./pkgs/diagrams-contrib.nix) { };
+
   diagrams-core = self.callPackage (./pkgs/diagrams-core.nix) { };
 
   diagrams-lib = self.callPackage (./pkgs/diagrams-lib.nix) { };
 
+  diagrams-postscript = self.callPackage (./pkgs/diagrams-postscript.nix) { };
+
   diagrams-solve = self.callPackage (./pkgs/diagrams-solve.nix) { };
 
+  diagrams-svg = self.callPackage (./pkgs/diagrams-svg.nix) { };
+
   dictionary-sharing = self.callPackage (./pkgs/dictionary-sharing.nix) { };
 
   digest = self.callPackage (./pkgs/digest.nix) { };
@@ -497,6 +521,8 @@ self: with pkgs.haskell.lib; {
 
   entropy = self.callPackage (./pkgs/entropy.nix) { };
 
+  enummapset = self.callPackage (./pkgs/enummapset.nix) { };
+
   envparse = self.callPackage (./pkgs/envparse.nix) { };
 
   erf = self.callPackage (./pkgs/erf.nix) { };
@@ -521,6 +547,8 @@ self: with pkgs.haskell.lib; {
 
   fast-logger = self.callPackage (./pkgs/fast-logger.nix) { };
 
+  fast-math = self.callPackage (./pkgs/fast-math.nix) { };
+
   fcf-containers = self.callPackage (./pkgs/fcf-containers.nix) { };
 
   feedback = self.callPackage (./pkgs/feedback.nix) { };
@@ -557,14 +585,20 @@ self: with pkgs.haskell.lib; {
 
   fmt = self.callPackage (./pkgs/fmt.nix) { };
 
+  focus = self.callPackage (./pkgs/focus.nix) { };
+
   foldl = self.callPackage (./pkgs/foldl.nix) { };
 
+  force-layout = self.callPackage (./pkgs/force-layout.nix) { };
+
   foreign-store = self.callPackage (./pkgs/foreign-store.nix) { };
 
   formatting = self.callPackage (./pkgs/formatting.nix) { };
 
   foundation = self.callPackage (./pkgs/foundation.nix) { };
 
+  fourmolu = self.callPackage (./pkgs/fourmolu.nix) { };
+
   free = self.callPackage (./pkgs/free.nix) { };
 
   freer-simple = self.callPackage (./pkgs/freer-simple.nix) { };
@@ -575,6 +609,8 @@ self: with pkgs.haskell.lib; {
 
   fusion-plugin-types = self.callPackage (./pkgs/fusion-plugin-types.nix) { };
 
+  fuzzy = self.callPackage (./pkgs/fuzzy.nix) { };
+
   fuzzy-time = self.callPackage (./pkgs/fuzzy-time.nix) { };
 
   fuzzy-time-gen = self.callPackage (./pkgs/fuzzy-time-gen.nix) { };
@@ -665,12 +701,20 @@ self: with pkgs.haskell.lib; {
 
   ghc-tcplugins-extra = self.callPackage (./pkgs/ghc-tcplugins-extra.nix) { };
 
+  ghc-trace-events = self.callPackage (./pkgs/ghc-trace-events.nix) { };
+
   ghc-typelits-knownnat = self.callPackage (./pkgs/ghc-typelits-knownnat.nix) { };
 
   ghc-typelits-natnormalise = self.callPackage (./pkgs/ghc-typelits-natnormalise.nix) { };
 
   ghcid = self.callPackage (./pkgs/ghcid.nix) { };
 
+  ghcide = self.callPackage (./pkgs/ghcide.nix) { };
+
+  ghcide-bench = self.callPackage (./pkgs/ghcide-bench.nix) { };
+
+  ghcide-test-utils = self.callPackage (./pkgs/ghcide-test-utils.nix) { };
+
   githash = self.callPackage (./pkgs/githash.nix) { };
 
   gitrev = self.callPackage (./pkgs/gitrev.nix) { };
@@ -701,6 +745,8 @@ self: with pkgs.haskell.lib; {
 
   hashtables = self.callPackage (./pkgs/hashtables.nix) { };
 
+  haskell-language-server = self.callPackage (./pkgs/haskell-language-server.nix) { };
+
   haskell-lexer = self.callPackage (./pkgs/haskell-lexer.nix) { };
 
   haskell-src = self.callPackage (./pkgs/haskell-src.nix) { };
@@ -729,6 +775,8 @@ self: with pkgs.haskell.lib; {
 
   hie-compat = self.callPackage (./pkgs/hie-compat.nix) { };
 
+  hiedb = self.callPackage (./pkgs/hiedb.nix) { };
+
   hinotify = self.callPackage (./pkgs/hinotify.nix) { };
 
   hledger = self.callPackage (./pkgs/hledger.nix) { };
@@ -737,6 +785,52 @@ self: with pkgs.haskell.lib; {
 
   hlint = self.callPackage (./pkgs/hlint.nix) { };
 
+  hls-alternate-number-format-plugin = self.callPackage (./pkgs/hls-alternate-number-format-plugin.nix) { };
+
+  hls-cabal-fmt-plugin = self.callPackage (./pkgs/hls-cabal-fmt-plugin.nix) { };
+
+  hls-cabal-plugin = self.callPackage (./pkgs/hls-cabal-plugin.nix) { };
+
+  hls-call-hierarchy-plugin = self.callPackage (./pkgs/hls-call-hierarchy-plugin.nix) { };
+
+  hls-change-type-signature-plugin = self.callPackage (./pkgs/hls-change-type-signature-plugin.nix) { };
+
+  hls-class-plugin = self.callPackage (./pkgs/hls-class-plugin.nix) { };
+
+  hls-code-range-plugin = self.callPackage (./pkgs/hls-code-range-plugin.nix) { };
+
+  hls-explicit-fixity-plugin = self.callPackage (./pkgs/hls-explicit-fixity-plugin.nix) { };
+
+  hls-explicit-imports-plugin = self.callPackage (./pkgs/hls-explicit-imports-plugin.nix) { };
+
+  hls-explicit-record-fields-plugin = self.callPackage (./pkgs/hls-explicit-record-fields-plugin.nix) { };
+
+  hls-fourmolu-plugin = self.callPackage (./pkgs/hls-fourmolu-plugin.nix) { };
+
+  hls-gadt-plugin = self.callPackage (./pkgs/hls-gadt-plugin.nix) { };
+
+  hls-graph = self.callPackage (./pkgs/hls-graph.nix) { };
+
+  hls-hlint-plugin = self.callPackage (./pkgs/hls-hlint-plugin.nix) { };
+
+  hls-module-name-plugin = self.callPackage (./pkgs/hls-module-name-plugin.nix) { };
+
+  hls-plugin-api = self.callPackage (./pkgs/hls-plugin-api.nix) { };
+
+  hls-pragmas-plugin = self.callPackage (./pkgs/hls-pragmas-plugin.nix) { };
+
+  hls-qualify-imported-names-plugin = self.callPackage (./pkgs/hls-qualify-imported-names-plugin.nix) { };
+
+  hls-refactor-plugin = self.callPackage (./pkgs/hls-refactor-plugin.nix) { };
+
+  hls-refine-imports-plugin = self.callPackage (./pkgs/hls-refine-imports-plugin.nix) { };
+
+  hls-retrie-plugin = self.callPackage (./pkgs/hls-retrie-plugin.nix) { };
+
+  hls-splice-plugin = self.callPackage (./pkgs/hls-splice-plugin.nix) { };
+
+  hls-test-utils = self.callPackage (./pkgs/hls-test-utils.nix) { };
+
   hopenssl = self.callPackage (./pkgs/hopenssl.nix) { };
 
   horizon-gen-nix = self.callPackage (./pkgs/horizon-gen-nix.nix) { };
@@ -749,12 +843,16 @@ self: with pkgs.haskell.lib; {
 
   hourglass = self.callPackage (./pkgs/hourglass.nix) { };
 
+  hp2pretty = self.callPackage (./pkgs/hp2pretty.nix) { };
+
   hpack = self.callPackage (./pkgs/hpack.nix) { };
 
   hpack-dhall = self.callPackage (./pkgs/hpack-dhall.nix) { };
 
   hscolour = self.callPackage (./pkgs/hscolour.nix) { };
 
+  hslogger = self.callPackage (./pkgs/hslogger.nix) { };
+
   hslua = self.callPackage (./pkgs/hslua.nix) { };
 
   hslua-aeson = self.callPackage (./pkgs/hslua-aeson.nix) { };
@@ -781,6 +879,8 @@ self: with pkgs.haskell.lib; {
 
   hspec = self.callPackage (./pkgs/hspec.nix) { };
 
+  hspec-attoparsec = self.callPackage (./pkgs/hspec-attoparsec.nix) { };
+
   hspec-contrib = self.callPackage (./pkgs/hspec-contrib.nix) { };
 
   hspec-core = self.callPackage (./pkgs/hspec-core.nix) { };
@@ -835,6 +935,14 @@ self: with pkgs.haskell.lib; {
 
   hw-aeson = self.callPackage (./pkgs/hw-aeson.nix) { };
 
+  hw-fingertree = self.callPackage (./pkgs/hw-fingertree.nix) { };
+
+  hw-hedgehog = self.callPackage (./pkgs/hw-hedgehog.nix) { };
+
+  hw-hspec-hedgehog = self.callPackage (./pkgs/hw-hspec-hedgehog.nix) { };
+
+  hw-prim = self.callPackage (./pkgs/hw-prim.nix) { };
+
   hxt = self.callPackage (./pkgs/hxt.nix) { };
 
   hxt-charproperties = self.callPackage (./pkgs/hxt-charproperties.nix) { };
@@ -845,6 +953,10 @@ self: with pkgs.haskell.lib; {
 
   ieee754 = self.callPackage (./pkgs/ieee754.nix) { };
 
+  implicit-hie = self.callPackage (./pkgs/implicit-hie.nix) { };
+
+  implicit-hie-cradle = self.callPackage (./pkgs/implicit-hie-cradle.nix) { };
+
   incipit-base = self.callPackage (./pkgs/incipit-base.nix) { };
 
   incipit-core = self.callPackage (./pkgs/incipit-core.nix) { };
@@ -873,6 +985,8 @@ self: with pkgs.haskell.lib; {
 
   integer-logarithms = self.callPackage (./pkgs/integer-logarithms.nix) { };
 
+  integration = self.callPackage (./pkgs/integration.nix) { };
+
   interpolate = self.callPackage (./pkgs/interpolate.nix) { };
 
   intervals = self.callPackage (./pkgs/intervals.nix) { };
@@ -977,6 +1091,8 @@ self: with pkgs.haskell.lib; {
 
   lsp = self.callPackage (./pkgs/lsp.nix) { };
 
+  lsp-test = self.callPackage (./pkgs/lsp-test.nix) { };
+
   lsp-types = self.callPackage (./pkgs/lsp-types.nix) { };
 
   lua = self.callPackage (./pkgs/lua.nix) { };
@@ -1005,6 +1121,8 @@ self: with pkgs.haskell.lib; {
 
   math-functions = self.callPackage (./pkgs/math-functions.nix) { };
 
+  matrices = self.callPackage (./pkgs/matrices.nix) { };
+
   matrix = self.callPackage (./pkgs/matrix.nix) { };
 
   megaparsec = self.callPackage (./pkgs/megaparsec.nix) { };
@@ -1015,6 +1133,8 @@ self: with pkgs.haskell.lib; {
 
   mersenne-random-pure64 = self.callPackage (./pkgs/mersenne-random-pure64.nix) { };
 
+  mfsolve = self.callPackage (./pkgs/mfsolve.nix) { };
+
   microlens = self.callPackage (./pkgs/microlens.nix) { };
 
   microlens-aeson = self.callPackage (./pkgs/microlens-aeson.nix) { };
@@ -1033,6 +1153,8 @@ self: with pkgs.haskell.lib; {
 
   mime-types = self.callPackage (./pkgs/mime-types.nix) { };
 
+  mmap = self.callPackage (./pkgs/mmap.nix) { };
+
   mmorph = self.callPackage (./pkgs/mmorph.nix) { };
 
   mockery = self.callPackage (./pkgs/mockery.nix) { };
@@ -1075,6 +1197,8 @@ self: with pkgs.haskell.lib; {
 
   mwc-random = self.callPackage (./pkgs/mwc-random.nix) { };
 
+  mwc-random-monad = self.callPackage (./pkgs/mwc-random-monad.nix) { };
+
   nanospec = self.callPackage (./pkgs/nanospec.nix) { };
 
   nats = self.callPackage (./pkgs/nats.nix) { };
@@ -1125,6 +1249,8 @@ self: with pkgs.haskell.lib; {
 
   openssl-streams = self.callPackage (./pkgs/openssl-streams.nix) { };
 
+  opentelemetry = self.callPackage (./pkgs/opentelemetry.nix) { };
+
   operational = self.callPackage (./pkgs/operational.nix) { };
 
   optics = self.callPackage (./pkgs/optics.nix) { };
@@ -1143,6 +1269,8 @@ self: with pkgs.haskell.lib; {
 
   optparse-generic = self.callPackage (./pkgs/optparse-generic.nix) { };
 
+  optparse-simple = self.callPackage (./pkgs/optparse-simple.nix) { };
+
   ordered-containers = self.callPackage (./pkgs/ordered-containers.nix) { };
 
   pandoc = self.callPackage (./pkgs/pandoc.nix) { };
@@ -1275,8 +1403,12 @@ self: with pkgs.haskell.lib; {
 
   primitive-addr = self.callPackage (./pkgs/primitive-addr.nix) { };
 
+  primitive-extras = self.callPackage (./pkgs/primitive-extras.nix) { };
+
   primitive-offset = self.callPackage (./pkgs/primitive-offset.nix) { };
 
+  primitive-unlifted = self.callPackage (./pkgs/primitive-unlifted.nix) { };
+
   process-extras = self.callPackage (./pkgs/process-extras.nix) { };
 
   procex = self.callPackage (./pkgs/procex.nix) { };
@@ -1323,6 +1455,8 @@ self: with pkgs.haskell.lib; {
 
   random-bytestring = self.callPackage (./pkgs/random-bytestring.nix) { };
 
+  random-fu = self.callPackage (./pkgs/random-fu.nix) { };
+
   random-shuffle = self.callPackage (./pkgs/random-shuffle.nix) { };
 
   raven-haskell = self.callPackage (./pkgs/raven-haskell.nix) { };
@@ -1375,6 +1509,8 @@ self: with pkgs.haskell.lib; {
 
   resourcet = self.callPackage (./pkgs/resourcet.nix) { };
 
+  retrie = self.callPackage (./pkgs/retrie.nix) { };
+
   retry = self.callPackage (./pkgs/retry.nix) { };
 
   rope-utf16-splay = self.callPackage (./pkgs/rope-utf16-splay.nix) { };
@@ -1475,6 +1611,8 @@ self: with pkgs.haskell.lib; {
 
   shake = self.callPackage (./pkgs/shake.nix) { };
 
+  shake-bench = self.callPackage (./pkgs/shake-bench.nix) { };
+
   shakespeare = self.callPackage (./pkgs/shakespeare.nix) { };
 
   shelly = self.callPackage (./pkgs/shelly.nix) { };
@@ -1537,12 +1675,18 @@ self: with pkgs.haskell.lib; {
 
   sqlite-simple = self.callPackage (./pkgs/sqlite-simple.nix) { };
 
+  statestack = self.callPackage (./pkgs/statestack.nix) { };
+
   statistics = self.callPackage (./pkgs/statistics.nix) { };
 
   statistics-linreg = self.callPackage (./pkgs/statistics-linreg.nix) { };
 
   stm-chans = self.callPackage (./pkgs/stm-chans.nix) { };
 
+  stm-containers = self.callPackage (./pkgs/stm-containers.nix) { };
+
+  stm-hamt = self.callPackage (./pkgs/stm-hamt.nix) { };
+
   storable-record = self.callPackage (./pkgs/storable-record.nix) { };
 
   storable-tuple = self.callPackage (./pkgs/storable-tuple.nix) { };
@@ -1579,6 +1723,8 @@ self: with pkgs.haskell.lib; {
 
   sundown = self.callPackage (./pkgs/sundown.nix) { };
 
+  svg-builder = self.callPackage (./pkgs/svg-builder.nix) { };
+
   swagger2 = self.callPackage (./pkgs/swagger2.nix) { };
 
   syb = self.callPackage (./pkgs/syb.nix) { };
@@ -1625,6 +1771,8 @@ self: with pkgs.haskell.lib; {
 
   tasty-quickcheck = self.callPackage (./pkgs/tasty-quickcheck.nix) { };
 
+  tasty-rerun = self.callPackage (./pkgs/tasty-rerun.nix) { };
+
   tasty-silver = self.callPackage (./pkgs/tasty-silver.nix) { };
 
   tasty-smallcheck = self.callPackage (./pkgs/tasty-smallcheck.nix) { };
@@ -1837,6 +1985,8 @@ self: with pkgs.haskell.lib; {
 
   vector-sized = self.callPackage (./pkgs/vector-sized.nix) { };
 
+  vector-space = self.callPackage (./pkgs/vector-space.nix) { };
+
   vector-stream = self.callPackage (./pkgs/vector-stream.nix) { };
 
   vector-th-unbox = self.callPackage (./pkgs/vector-th-unbox.nix) { };
diff --git a/pkgs/Chart-diagrams.nix b/pkgs/Chart-diagrams.nix
new file mode 100644
index 00000000..a715b65c
--- /dev/null
+++ b/pkgs/Chart-diagrams.nix
@@ -0,0 +1,62 @@
+{ mkDerivation
+, Chart
+, SVGFonts
+, base
+, blaze-markup
+, bytestring
+, colour
+, containers
+, data-default-class
+, diagrams-core
+, diagrams-lib
+, diagrams-postscript
+, diagrams-svg
+, lens
+, lib
+, mtl
+, old-locale
+, operational
+, svg-builder
+, text
+, time
+}:
+mkDerivation {
+  pname = "Chart-diagrams";
+  version = "1.9.4";
+  sha256 = "a89cb7aee51fc64276923b879b7bc66fafd994130f53a3035ff6feaf9daf7366";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    blaze-markup
+    bytestring
+    Chart
+    colour
+    containers
+    data-default-class
+    diagrams-core
+    diagrams-lib
+    diagrams-postscript
+    diagrams-svg
+    lens
+    mtl
+    old-locale
+    operational
+    svg-builder
+    SVGFonts
+    text
+    time
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/timbod7/haskell-chart/wiki";
+  description = "Diagrams backend for Charts";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/MemoTrie.nix b/pkgs/MemoTrie.nix
new file mode 100644
index 00000000..e46258e7
--- /dev/null
+++ b/pkgs/MemoTrie.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib, newtype-generics }:
+mkDerivation {
+  pname = "MemoTrie";
+  version = "0.6.10";
+  sha256 = "584df0e138093b2f2edc893a69883eb8cbca3402ebdc75392a7742e86156ba53";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base newtype-generics ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/conal/MemoTrie";
+  description = "Trie-based memo functions";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/NumInstances.nix b/pkgs/NumInstances.nix
new file mode 100644
index 00000000..e4309732
--- /dev/null
+++ b/pkgs/NumInstances.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "NumInstances";
+  version = "1.4";
+  sha256 = "cbdb2a49346f59ceb5ab38592d7bc52e5205580d431d0ac6d852fd9880e59679";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/conal/NumInstances";
+  description = "Instances of numeric classes for functions and tuples";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/SVGFonts.nix b/pkgs/SVGFonts.nix
new file mode 100644
index 00000000..7b593a4c
--- /dev/null
+++ b/pkgs/SVGFonts.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, attoparsec
+, base
+, blaze-markup
+, blaze-svg
+, bytestring
+, cereal
+, cereal-vector
+, containers
+, data-default-class
+, diagrams-core
+, diagrams-lib
+, directory
+, lib
+, parsec
+, split
+, text
+, vector
+, xml
+}:
+mkDerivation {
+  pname = "SVGFonts";
+  version = "1.8.0.1";
+  sha256 = "698a517322fd9910784da15a716c4f3eaec0080298ca5098871b9bd24f3c7f64";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    blaze-markup
+    blaze-svg
+    bytestring
+    cereal
+    cereal-vector
+    containers
+    data-default-class
+    diagrams-core
+    diagrams-lib
+    directory
+    parsec
+    split
+    text
+    vector
+    xml
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Fonts from the SVG-Font format";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/algebraic-graphs.nix b/pkgs/algebraic-graphs.nix
index a61ab2e9..6b7799ea 100644
--- a/pkgs/algebraic-graphs.nix
+++ b/pkgs/algebraic-graphs.nix
@@ -11,8 +11,8 @@
 }:
 mkDerivation {
   pname = "algebraic-graphs";
-  version = "0.7";
-  sha256 = "51159a0d18690ab51e6709e3c576275402f96f57d901f87d734da6854582e568";
+  version = "0.6.1";
+  sha256 = "2d64982591929cbc9a2f184eeb7271b8a4096672fe725c928ea4b97aeac40a99";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
diff --git a/pkgs/apply-refact.nix b/pkgs/apply-refact.nix
new file mode 100644
index 00000000..e927e998
--- /dev/null
+++ b/pkgs/apply-refact.nix
@@ -0,0 +1,102 @@
+{ mkDerivation
+, base
+, containers
+, directory
+, extra
+, filemanip
+, filepath
+, ghc
+, ghc-boot-th
+, ghc-exactprint
+, ghc-paths
+, lib
+, optparse-applicative
+, process
+, refact
+, silently
+, syb
+, tasty
+, tasty-expected-failure
+, tasty-golden
+, transformers
+, uniplate
+, unix-compat
+}:
+mkDerivation {
+  pname = "apply-refact";
+  version = "0.11.0.0";
+  sha256 = "e27c77d86991fa781dd68323f58b29ccd90f178ba9878a58b838bf02914eb5ae";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    directory
+    extra
+    filemanip
+    ghc
+    ghc-boot-th
+    ghc-exactprint
+    ghc-paths
+    process
+    refact
+    syb
+    transformers
+    uniplate
+    unix-compat
+  ];
+  executableHaskellDepends = [
+    base
+    containers
+    directory
+    extra
+    filemanip
+    filepath
+    ghc
+    ghc-boot-th
+    ghc-exactprint
+    ghc-paths
+    optparse-applicative
+    process
+    refact
+    syb
+    transformers
+    uniplate
+    unix-compat
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    directory
+    extra
+    filemanip
+    filepath
+    ghc
+    ghc-boot-th
+    ghc-exactprint
+    ghc-paths
+    optparse-applicative
+    process
+    refact
+    silently
+    syb
+    tasty
+    tasty-expected-failure
+    tasty-golden
+    transformers
+    uniplate
+    unix-compat
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/mpickering/apply-refact";
+  description = "Perform refactorings specified by the refact library";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/blaze-svg.nix b/pkgs/blaze-svg.nix
new file mode 100644
index 00000000..2d0cd218
--- /dev/null
+++ b/pkgs/blaze-svg.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, base, blaze-markup, lib, mtl }:
+mkDerivation {
+  pname = "blaze-svg";
+  version = "0.3.6.1";
+  sha256 = "f6a4f1bba1e973b336e94de73369f4562778fde43b6ac7c0b32d6a501527aa60";
+  revision = "1";
+  editedCabalFile = "1vb78d0nvk0909963pm0mnzklcm57w563lhgx1wv7qzdfznpi8f9";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base blaze-markup mtl ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/deepakjois/blaze-svg";
+  description = "SVG combinator library";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/circle-packing.nix b/pkgs/circle-packing.nix
new file mode 100644
index 00000000..6e2c79f7
--- /dev/null
+++ b/pkgs/circle-packing.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "circle-packing";
+  version = "0.1.0.6";
+  sha256 = "64ee44a90da3e5fe20d5b78bfe6eba93102a6b52c65f8a7b99af7799798ee81b";
+  revision = "4";
+  editedCabalFile = "1jp1b6l5v1llmggy316s4bb78wjvgq8iya0i2zz4k5v6l5dl8ln2";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Simple heuristic for packing discs of varying radii in a circle";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/cubicbezier.nix b/pkgs/cubicbezier.nix
new file mode 100644
index 00000000..d5eff55c
--- /dev/null
+++ b/pkgs/cubicbezier.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, base
+, containers
+, fast-math
+, integration
+, lib
+, matrices
+, microlens
+, microlens-mtl
+, microlens-th
+, mtl
+, parsec
+, tasty
+, tasty-hunit
+, vector
+, vector-space
+}:
+mkDerivation {
+  pname = "cubicbezier";
+  version = "0.6.0.6";
+  sha256 = "5a73fcde2b92ce138d924c323f04f48427acbfdc2c774ff0f032a10ea60afa68";
+  revision = "1";
+  editedCabalFile = "084inqa0mpm6m958fmjwsnn2fn46mcdpfin482mzs5fk6c9fwywl";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    fast-math
+    integration
+    matrices
+    microlens
+    microlens-mtl
+    microlens-th
+    mtl
+    vector
+    vector-space
+  ];
+  testHaskellDepends = [ base parsec tasty tasty-hunit ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Efficient manipulating of 2D cubic bezier curves";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/deferred-folds.nix b/pkgs/deferred-folds.nix
new file mode 100644
index 00000000..15f4407c
--- /dev/null
+++ b/pkgs/deferred-folds.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, QuickCheck
+, base
+, bytestring
+, containers
+, foldl
+, hashable
+, lib
+, primitive
+, quickcheck-instances
+, rerebase
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "deferred-folds";
+  version = "0.9.18.2";
+  sha256 = "26ddc60183478033735f82ba506db93032fb8c7fe91b7e72a0d8f9f05febb42a";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    foldl
+    hashable
+    primitive
+    text
+    transformers
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    QuickCheck
+    quickcheck-instances
+    rerebase
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/metrix-ai/deferred-folds";
+  description = "Abstractions over deferred folds";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/diagrams-contrib.nix b/pkgs/diagrams-contrib.nix
new file mode 100644
index 00000000..dc3dfd51
--- /dev/null
+++ b/pkgs/diagrams-contrib.nix
@@ -0,0 +1,89 @@
+{ mkDerivation
+, HUnit
+, MonadRandom
+, QuickCheck
+, base
+, circle-packing
+, colour
+, containers
+, cubicbezier
+, data-default
+, data-default-class
+, diagrams-core
+, diagrams-lib
+, diagrams-solve
+, force-layout
+, hashable
+, lens
+, lib
+, linear
+, mfsolve
+, monoid-extras
+, mtl
+, mtl-compat
+, parsec
+, random
+, semigroups
+, split
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, text
+}:
+mkDerivation {
+  pname = "diagrams-contrib";
+  version = "1.4.5";
+  sha256 = "900baf9c40a36b637400bb58dbab260d3b654a1249809153c4fdd6ec2152286c";
+  revision = "1";
+  editedCabalFile = "0i5s9mr88kc68v2wc07jpdy2hzqh2gc1dsawvb2sracnqmv9q658";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    circle-packing
+    colour
+    containers
+    cubicbezier
+    data-default
+    data-default-class
+    diagrams-core
+    diagrams-lib
+    diagrams-solve
+    force-layout
+    hashable
+    lens
+    linear
+    mfsolve
+    MonadRandom
+    monoid-extras
+    mtl
+    mtl-compat
+    parsec
+    random
+    semigroups
+    split
+    text
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    diagrams-lib
+    HUnit
+    QuickCheck
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://diagrams.github.io/";
+  description = "Collection of user contributions to diagrams EDSL";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/diagrams-postscript.nix b/pkgs/diagrams-postscript.nix
new file mode 100644
index 00000000..38257dff
--- /dev/null
+++ b/pkgs/diagrams-postscript.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, data-default-class
+, diagrams-core
+, diagrams-lib
+, hashable
+, lens
+, lib
+, monoid-extras
+, mtl
+, semigroups
+, split
+, statestack
+}:
+mkDerivation {
+  pname = "diagrams-postscript";
+  version = "1.5.1";
+  sha256 = "2f7d9e8ec3e42005dbcf7c18c941bdb9e088be0d48dc095a683d5ce3c7d00286";
+  revision = "2";
+  editedCabalFile = "0w662h38pjmxz029ffxzv2cj6hx2mpzzr180m2340phxjflxr07g";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    data-default-class
+    diagrams-core
+    diagrams-lib
+    hashable
+    lens
+    monoid-extras
+    mtl
+    semigroups
+    split
+    statestack
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://diagrams.github.io/";
+  description = "Postscript backend for diagrams drawing EDSL";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/diagrams-svg.nix b/pkgs/diagrams-svg.nix
new file mode 100644
index 00000000..b877cd90
--- /dev/null
+++ b/pkgs/diagrams-svg.nix
@@ -0,0 +1,62 @@
+{ mkDerivation
+, JuicyPixels
+, base
+, base64-bytestring
+, bytestring
+, colour
+, containers
+, diagrams-core
+, diagrams-lib
+, filepath
+, hashable
+, lens
+, lib
+, monoid-extras
+, mtl
+, optparse-applicative
+, semigroups
+, split
+, svg-builder
+, text
+}:
+mkDerivation {
+  pname = "diagrams-svg";
+  version = "1.4.3.1";
+  sha256 = "67080a0aa846f2931c14855560c4bbd848c44935f5ada4dbd6d93074707d5400";
+  revision = "4";
+  editedCabalFile = "026mkj9fz64rdrap25mp8cwdrzwj90h35qg9kkn078fac93aaq10";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    base64-bytestring
+    bytestring
+    colour
+    containers
+    diagrams-core
+    diagrams-lib
+    filepath
+    hashable
+    JuicyPixels
+    lens
+    monoid-extras
+    mtl
+    optparse-applicative
+    semigroups
+    split
+    svg-builder
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://diagrams.github.io/";
+  description = "SVG backend for diagrams drawing EDSL";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/enummapset.nix b/pkgs/enummapset.nix
new file mode 100644
index 00000000..80243688
--- /dev/null
+++ b/pkgs/enummapset.nix
@@ -0,0 +1,47 @@
+{ mkDerivation
+, HUnit
+, QuickCheck
+, aeson
+, array
+, base
+, containers
+, deepseq
+, ghc-prim
+, lib
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+}:
+mkDerivation {
+  pname = "enummapset";
+  version = "0.7.1.0";
+  sha256 = "c938bec2cdfe57c829e7bd36a6687dec506a292810de0e3611219f9a71a00efe";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ aeson base containers deepseq ];
+  testHaskellDepends = [
+    aeson
+    array
+    base
+    containers
+    deepseq
+    ghc-prim
+    HUnit
+    QuickCheck
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Mikolaj/enummapset";
+  description = "IntMap and IntSet with Enum keys/elements";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/fast-math.nix b/pkgs/fast-math.nix
new file mode 100644
index 00000000..8b01aeb0
--- /dev/null
+++ b/pkgs/fast-math.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "fast-math";
+  version = "1.0.2";
+  sha256 = "45101ddc8b86402e866ec029bcfbc2662779e578e43b40acd971a9f411e2be95";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Non IEEE-754 compliant compile-time floating-point optimisations";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/focus.nix b/pkgs/focus.nix
new file mode 100644
index 00000000..05f5057d
--- /dev/null
+++ b/pkgs/focus.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, QuickCheck
+, base
+, lib
+, quickcheck-instances
+, rerebase
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, transformers
+}:
+mkDerivation {
+  pname = "focus";
+  version = "1.0.3";
+  sha256 = "353050e457bfe945ce8bda3513206a9d3fd2ac93112791953d2afd32017e060e";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base transformers ];
+  testHaskellDepends = [
+    QuickCheck
+    quickcheck-instances
+    rerebase
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/focus";
+  description = "A general abstraction for manipulating elements of container data structures";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/force-layout.nix b/pkgs/force-layout.nix
new file mode 100644
index 00000000..e2195d45
--- /dev/null
+++ b/pkgs/force-layout.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, base
+, containers
+, data-default-class
+, lens
+, lib
+, linear
+}:
+mkDerivation {
+  pname = "force-layout";
+  version = "0.4.0.6";
+  sha256 = "f7729855b1b14e0b255325faaca9f4834004e02bd21def6a865d2c55c734259d";
+  revision = "10";
+  editedCabalFile = "1mcs51d1a3klzy938wq0gcbx7ln49g940zhajmflxq6imy5h5kwa";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    data-default-class
+    lens
+    linear
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Simple force-directed layout";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/fourmolu.nix b/pkgs/fourmolu.nix
new file mode 100644
index 00000000..67b84277
--- /dev/null
+++ b/pkgs/fourmolu.nix
@@ -0,0 +1,107 @@
+{ mkDerivation
+, Cabal-syntax
+, Diff
+, MemoTrie
+, QuickCheck
+, aeson
+, ansi-terminal
+, array
+, base
+, bytestring
+, containers
+, directory
+, dlist
+, exceptions
+, filepath
+, ghc-lib-parser
+, gitrev
+, hspec
+, hspec-discover
+, hspec-megaparsec
+, lib
+, megaparsec
+, mtl
+, optparse-applicative
+, path
+, path-io
+, pretty
+, process
+, syb
+, template-haskell
+, temporary
+, text
+, th-lift-instances
+, yaml
+}:
+mkDerivation {
+  pname = "fourmolu";
+  version = "0.10.1.0";
+  sha256 = "e442b4aa21c320994c57f0c87bb7e6bf005207a167cb7e812c5142e4b8687f3e";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    ansi-terminal
+    array
+    base
+    bytestring
+    Cabal-syntax
+    containers
+    Diff
+    directory
+    dlist
+    exceptions
+    filepath
+    ghc-lib-parser
+    megaparsec
+    MemoTrie
+    mtl
+    syb
+    template-haskell
+    text
+    th-lift-instances
+    yaml
+  ];
+  executableHaskellDepends = [
+    base
+    containers
+    directory
+    filepath
+    ghc-lib-parser
+    gitrev
+    optparse-applicative
+    text
+    yaml
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    Diff
+    directory
+    filepath
+    ghc-lib-parser
+    hspec
+    hspec-megaparsec
+    megaparsec
+    path
+    path-io
+    pretty
+    process
+    QuickCheck
+    temporary
+    text
+  ];
+  testToolDepends = [ hspec-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/fourmolu/fourmolu";
+  description = "A formatter for Haskell source code";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/fuzzy.nix b/pkgs/fuzzy.nix
new file mode 100644
index 00000000..44a3be3c
--- /dev/null
+++ b/pkgs/fuzzy.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, HUnit, base, lib, monoid-subclasses }:
+mkDerivation {
+  pname = "fuzzy";
+  version = "0.1.0.1";
+  sha256 = "bca8afb42f2b75829a71a781c2014beb9387050b6aa37793e9940f97d422f49a";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base monoid-subclasses ];
+  testHaskellDepends = [ base HUnit ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/joom/fuzzy";
+  description = "Filters a list based on a fuzzy string search";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/ghc-trace-events.nix b/pkgs/ghc-trace-events.nix
new file mode 100644
index 00000000..3dc15303
--- /dev/null
+++ b/pkgs/ghc-trace-events.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, bytestring, lib, tasty-bench, text }:
+mkDerivation {
+  pname = "ghc-trace-events";
+  version = "0.1.2.6";
+  sha256 = "835dd379a16a39841debbe49d32222ffc0fd7ea794729168b55f9c57a5cf84f9";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring text ];
+  benchmarkHaskellDepends = [ base bytestring tasty-bench ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/maoe/ghc-trace-events";
+  description = "Faster traceEvent and traceMarker, and binary object logging for eventlog";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/ghcide-bench.nix b/pkgs/ghcide-bench.nix
new file mode 100644
index 00000000..1417c26b
--- /dev/null
+++ b/pkgs/ghcide-bench.nix
@@ -0,0 +1,104 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, binary
+, bytestring
+, containers
+, data-default
+, deepseq
+, directory
+, extra
+, filepath
+, ghcide
+, ghcide-test-utils
+, hashable
+, hls-graph
+, hls-plugin-api
+, implicit-hie
+, lens
+, lib
+, lsp-test
+, lsp-types
+, optparse-applicative
+, parser-combinators
+, process
+, safe-exceptions
+, shake
+, tasty
+, tasty-hunit
+, tasty-rerun
+, text
+}:
+mkDerivation {
+  pname = "ghcide-bench";
+  version = "0.1.1";
+  sha256 = "226c46214fc0b5675cf1a360ab128bcc60697c3ae51482d51956a5e02f0febfa";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    async
+    base
+    binary
+    bytestring
+    deepseq
+    directory
+    extra
+    filepath
+    ghcide
+    ghcide-test-utils
+    hashable
+    lens
+    lsp-test
+    lsp-types
+    optparse-applicative
+    parser-combinators
+    process
+    safe-exceptions
+    shake
+    text
+  ];
+  executableHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    data-default
+    directory
+    extra
+    filepath
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp-test
+    lsp-types
+    optparse-applicative
+    process
+    safe-exceptions
+    shake
+    tasty-hunit
+    text
+  ];
+  testHaskellDepends = [
+    base
+    extra
+    lsp-test
+    tasty
+    tasty-hunit
+    tasty-rerun
+  ];
+  testToolDepends = [ ghcide implicit-hie ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server/tree/master/ghcide#readme";
+  description = "An LSP client for running performance experiments on HLS";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/ghcide-test-utils.nix b/pkgs/ghcide-test-utils.nix
new file mode 100644
index 00000000..e44444ed
--- /dev/null
+++ b/pkgs/ghcide-test-utils.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, data-default
+, directory
+, extra
+, filepath
+, ghcide
+, hls-plugin-api
+, lens
+, lib
+, lsp-test
+, lsp-types
+, tasty-hunit
+, text
+}:
+mkDerivation {
+  pname = "ghcide-test-utils";
+  version = "1.9.0.0";
+  sha256 = "66b69e0aa0285195ae1af3e9cc968987a71cc24ba6c4e69187b12ee205ef9d38";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    data-default
+    directory
+    extra
+    filepath
+    ghcide
+    hls-plugin-api
+    lens
+    lsp-test
+    lsp-types
+    tasty-hunit
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server/tree/master/ghcide#readme";
+  description = "Test utils for ghcide";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/ghcide.nix b/pkgs/ghcide.nix
new file mode 100644
index 00000000..72656cae
--- /dev/null
+++ b/pkgs/ghcide.nix
@@ -0,0 +1,220 @@
+{ mkDerivation
+, Diff
+, Glob
+, QuickCheck
+, aeson
+, aeson-pretty
+, array
+, async
+, base
+, base16-bytestring
+, binary
+, bytestring
+, case-insensitive
+, co-log-core
+, containers
+, cryptohash-sha1
+, data-default
+, deepseq
+, dependent-map
+, dependent-sum
+, directory
+, dlist
+, enummapset
+, exceptions
+, extra
+, filepath
+, fingertree
+, focus
+, fuzzy
+, ghc
+, ghc-boot
+, ghc-boot-th
+, ghc-check
+, ghc-paths
+, ghc-trace-events
+, gitrev
+, haddock-library
+, hashable
+, hie-bios
+, hie-compat
+, hiedb
+, hls-graph
+, hls-plugin-api
+, hslogger
+, implicit-hie
+, implicit-hie-cradle
+, lens
+, lib
+, list-t
+, lsp
+, lsp-test
+, lsp-types
+, monoid-subclasses
+, mtl
+, network-uri
+, opentelemetry
+, optparse-applicative
+, parallel
+, prettyprinter
+, prettyprinter-ansi-terminal
+, random
+, regex-tdfa
+, safe-exceptions
+, shake
+, sorted-list
+, sqlite-simple
+, stm
+, stm-containers
+, syb
+, tasty
+, tasty-expected-failure
+, tasty-hunit
+, tasty-quickcheck
+, tasty-rerun
+, text
+, text-rope
+, time
+, transformers
+, unix
+, unliftio
+, unliftio-core
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "ghcide";
+  version = "1.9.0.0";
+  sha256 = "6470de9d388c783e8826c790e7cfe4a7a282a8a1e4d368041bdce4070db4586a";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    array
+    async
+    base
+    base16-bytestring
+    binary
+    bytestring
+    case-insensitive
+    co-log-core
+    containers
+    cryptohash-sha1
+    data-default
+    deepseq
+    dependent-map
+    dependent-sum
+    Diff
+    directory
+    dlist
+    enummapset
+    exceptions
+    extra
+    filepath
+    fingertree
+    focus
+    ghc
+    ghc-boot
+    ghc-boot-th
+    ghc-check
+    ghc-paths
+    ghc-trace-events
+    Glob
+    haddock-library
+    hashable
+    hie-bios
+    hie-compat
+    hiedb
+    hls-graph
+    hls-plugin-api
+    hslogger
+    implicit-hie
+    implicit-hie-cradle
+    lens
+    list-t
+    lsp
+    lsp-types
+    mtl
+    opentelemetry
+    optparse-applicative
+    parallel
+    prettyprinter
+    prettyprinter-ansi-terminal
+    random
+    regex-tdfa
+    safe-exceptions
+    sorted-list
+    sqlite-simple
+    stm
+    stm-containers
+    syb
+    text
+    text-rope
+    time
+    transformers
+    unix
+    unliftio
+    unliftio-core
+    unordered-containers
+    vector
+  ];
+  executableHaskellDepends = [
+    base
+    data-default
+    extra
+    gitrev
+    hls-plugin-api
+    lsp
+    lsp-types
+    optparse-applicative
+  ];
+  testHaskellDepends = [
+    aeson
+    async
+    base
+    containers
+    data-default
+    directory
+    extra
+    filepath
+    fuzzy
+    ghc
+    hls-plugin-api
+    lens
+    list-t
+    lsp
+    lsp-test
+    lsp-types
+    monoid-subclasses
+    network-uri
+    QuickCheck
+    random
+    regex-tdfa
+    shake
+    sqlite-simple
+    stm
+    stm-containers
+    tasty
+    tasty-expected-failure
+    tasty-hunit
+    tasty-quickcheck
+    tasty-rerun
+    text
+    text-rope
+    unordered-containers
+  ];
+  testToolDepends = [ implicit-hie ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server/tree/master/ghcide#readme";
+  description = "The core of an IDE";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/haskell-language-server.nix b/pkgs/haskell-language-server.nix
new file mode 100644
index 00000000..e2ab8115
--- /dev/null
+++ b/pkgs/haskell-language-server.nix
@@ -0,0 +1,221 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, async
+, base
+, base16-bytestring
+, binary
+, bytestring
+, containers
+, cryptohash-sha1
+, data-default
+, deepseq
+, directory
+, extra
+, filepath
+, ghc
+, ghc-boot-th
+, ghc-paths
+, ghcide
+, ghcide-test-utils
+, githash
+, gitrev
+, hashable
+, hie-bios
+, hiedb
+, hls-alternate-number-format-plugin
+, hls-cabal-fmt-plugin
+, hls-cabal-plugin
+, hls-call-hierarchy-plugin
+, hls-change-type-signature-plugin
+, hls-class-plugin
+, hls-code-range-plugin
+, hls-explicit-fixity-plugin
+, hls-explicit-imports-plugin
+, hls-explicit-record-fields-plugin
+, hls-fourmolu-plugin
+, hls-gadt-plugin
+, hls-graph
+, hls-hlint-plugin
+, hls-module-name-plugin
+, hls-plugin-api
+, hls-pragmas-plugin
+, hls-qualify-imported-names-plugin
+, hls-refactor-plugin
+, hls-refine-imports-plugin
+, hls-retrie-plugin
+, hls-splice-plugin
+, hls-test-utils
+, hslogger
+, hspec-expectations
+, lens
+, lens-aeson
+, lib
+, lsp
+, lsp-test
+, lsp-types
+, mtl
+, optparse-applicative
+, optparse-simple
+, prettyprinter
+, process
+, regex-tdfa
+, safe-exceptions
+, sqlite-simple
+, stm
+, temporary
+, text
+, transformers
+, unix
+, unliftio-core
+, unordered-containers
+}:
+mkDerivation {
+  pname = "haskell-language-server";
+  version = "1.9.0.0";
+  sha256 = "77d2c056c2a4f6ea0aaae38560054f49b85f41d6abc5ddb5da18b2ef091eaeaf";
+  revision = "1";
+  editedCabalFile = "19y9wid97a2c6x8cx2zq2r0asr8x0wlnvxmrj9qhfpvmk05sqrpm";
+  configureFlags = [
+    "-f-dynamic"
+    "-f-eval"
+    "-f-floskell"
+    "-f-ormolu"
+    "-f-rename"
+    "-f-stylishhaskell"
+  ];
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson-pretty
+    async
+    base
+    base16-bytestring
+    bytestring
+    containers
+    cryptohash-sha1
+    data-default
+    directory
+    extra
+    filepath
+    ghc
+    ghcide
+    githash
+    hie-bios
+    hiedb
+    hls-alternate-number-format-plugin
+    hls-cabal-fmt-plugin
+    hls-cabal-plugin
+    hls-call-hierarchy-plugin
+    hls-change-type-signature-plugin
+    hls-class-plugin
+    hls-code-range-plugin
+    hls-explicit-fixity-plugin
+    hls-explicit-imports-plugin
+    hls-explicit-record-fields-plugin
+    hls-fourmolu-plugin
+    hls-gadt-plugin
+    hls-graph
+    hls-hlint-plugin
+    hls-module-name-plugin
+    hls-plugin-api
+    hls-pragmas-plugin
+    hls-qualify-imported-names-plugin
+    hls-refactor-plugin
+    hls-refine-imports-plugin
+    hls-retrie-plugin
+    hls-splice-plugin
+    lsp
+    optparse-applicative
+    optparse-simple
+    prettyprinter
+    process
+    safe-exceptions
+    sqlite-simple
+    text
+    unordered-containers
+  ];
+  executableHaskellDepends = [
+    aeson
+    async
+    base
+    base16-bytestring
+    binary
+    bytestring
+    containers
+    cryptohash-sha1
+    data-default
+    deepseq
+    directory
+    extra
+    filepath
+    ghc
+    ghc-boot-th
+    ghc-paths
+    ghcide
+    gitrev
+    hashable
+    hie-bios
+    hiedb
+    hls-graph
+    hls-plugin-api
+    hslogger
+    lens
+    lsp
+    lsp-types
+    mtl
+    optparse-applicative
+    optparse-simple
+    prettyprinter
+    process
+    regex-tdfa
+    safe-exceptions
+    sqlite-simple
+    stm
+    temporary
+    text
+    transformers
+    unix
+    unliftio-core
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    data-default
+    deepseq
+    directory
+    extra
+    filepath
+    ghcide
+    ghcide-test-utils
+    hashable
+    hls-plugin-api
+    hls-refactor-plugin
+    hls-test-utils
+    hspec-expectations
+    lens
+    lens-aeson
+    lsp-test
+    lsp-types
+    prettyprinter
+    process
+    text
+    unordered-containers
+  ];
+  testToolDepends = [ ghcide ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server#readme";
+  description = "LSP server for GHC";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hiedb.nix b/pkgs/hiedb.nix
new file mode 100644
index 00000000..6c476dee
--- /dev/null
+++ b/pkgs/hiedb.nix
@@ -0,0 +1,72 @@
+{ mkDerivation
+, algebraic-graphs
+, ansi-terminal
+, array
+, base
+, bytestring
+, containers
+, directory
+, extra
+, filepath
+, ghc
+, ghc-paths
+, hie-compat
+, hspec
+, lib
+, lucid
+, mtl
+, optparse-applicative
+, process
+, sqlite-simple
+, temporary
+, terminal-size
+, text
+}:
+mkDerivation {
+  pname = "hiedb";
+  version = "0.4.2.0";
+  sha256 = "9cca518eaa6a5d747c32ca7f50c7ba3c7454fb96239796bbbd6d2cc7cb61b908";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    algebraic-graphs
+    ansi-terminal
+    array
+    base
+    bytestring
+    containers
+    directory
+    extra
+    filepath
+    ghc
+    hie-compat
+    lucid
+    mtl
+    optparse-applicative
+    sqlite-simple
+    terminal-size
+    text
+  ];
+  executableHaskellDepends = [ base ghc-paths ];
+  testHaskellDepends = [
+    base
+    directory
+    filepath
+    ghc
+    ghc-paths
+    hspec
+    process
+    temporary
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Generates a references DB from .hie files";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hls-alternate-number-format-plugin.nix b/pkgs/hls-alternate-number-format-plugin.nix
new file mode 100644
index 00000000..dfd20bdd
--- /dev/null
+++ b/pkgs/hls-alternate-number-format-plugin.nix
@@ -0,0 +1,69 @@
+{ mkDerivation
+, QuickCheck
+, aeson
+, base
+, containers
+, extra
+, filepath
+, ghc-boot-th
+, ghcide
+, hie-compat
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, mtl
+, regex-tdfa
+, syb
+, tasty-quickcheck
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-alternate-number-format-plugin";
+  version = "1.3.0.0";
+  sha256 = "7202b7115bb5696f604f0392012cbf6a1ed1ed1ec88ef3564c2083da34378152";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    extra
+    ghc-boot-th
+    ghcide
+    hie-compat
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp
+    mtl
+    regex-tdfa
+    syb
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    hls-test-utils
+    lsp
+    QuickCheck
+    regex-tdfa
+    tasty-quickcheck
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Provide Alternate Number Formats plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-cabal-fmt-plugin.nix b/pkgs/hls-cabal-fmt-plugin.nix
new file mode 100644
index 00000000..be6e56ee
--- /dev/null
+++ b/pkgs/hls-cabal-fmt-plugin.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, base
+, directory
+, filepath
+, ghcide
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp-types
+, process
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "hls-cabal-fmt-plugin";
+  version = "0.1.0.0";
+  sha256 = "b71ae62ebe3dd35a19f6571fd3c8f17654c80c4b36607e39347516677606defe";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    directory
+    filepath
+    ghcide
+    hls-plugin-api
+    lens
+    lsp-types
+    process
+    text
+    transformers
+  ];
+  testHaskellDepends = [ base directory filepath hls-test-utils ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Integration with the cabal-fmt code formatter";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-cabal-plugin.nix b/pkgs/hls-cabal-plugin.nix
new file mode 100644
index 00000000..35f49c16
--- /dev/null
+++ b/pkgs/hls-cabal-plugin.nix
@@ -0,0 +1,70 @@
+{ mkDerivation
+, Cabal
+, base
+, bytestring
+, deepseq
+, directory
+, extra
+, filepath
+, ghcide
+, hashable
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-types
+, regex-tdfa
+, stm
+, tasty-hunit
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-cabal-plugin";
+  version = "0.1.0.0";
+  sha256 = "a5e5fb3eb670d60876d5aaf26bd2fe4c29e51a3db1f747b66b45d037c6539b38";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    Cabal
+    deepseq
+    directory
+    extra
+    ghcide
+    hashable
+    hls-graph
+    hls-plugin-api
+    lsp
+    lsp-types
+    regex-tdfa
+    stm
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    filepath
+    ghcide
+    hls-test-utils
+    lens
+    lsp-types
+    tasty-hunit
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Cabal integration plugin with Haskell Language Server";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/hls-call-hierarchy-plugin.nix b/pkgs/hls-call-hierarchy-plugin.nix
new file mode 100644
index 00000000..fb0c2bff
--- /dev/null
+++ b/pkgs/hls-call-hierarchy-plugin.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, extra
+, filepath
+, ghcide
+, ghcide-test-utils
+, hiedb
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, sqlite-simple
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-call-hierarchy-plugin";
+  version = "1.2.0.0";
+  sha256 = "81f8718c353c48f7cacba068bcb073e5dda5d867ba8a30ed3eb9215b2832a574";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    extra
+    ghcide
+    hiedb
+    hls-plugin-api
+    lens
+    lsp
+    sqlite-simple
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    containers
+    extra
+    filepath
+    ghcide-test-utils
+    hls-test-utils
+    lens
+    lsp
+    lsp-test
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Call hierarchy plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-change-type-signature-plugin.nix b/pkgs/hls-change-type-signature-plugin.nix
new file mode 100644
index 00000000..e8970b90
--- /dev/null
+++ b/pkgs/hls-change-type-signature-plugin.nix
@@ -0,0 +1,54 @@
+{ mkDerivation
+, QuickCheck
+, base
+, filepath
+, ghcide
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, lsp-types
+, regex-tdfa
+, syb
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-change-type-signature-plugin";
+  version = "1.1.0.0";
+  sha256 = "35983c08a19f2070ac04e6801b261ca87b50254af3c4ed40c0b10e65a02eb8d8";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    ghcide
+    hls-plugin-api
+    lsp-types
+    regex-tdfa
+    syb
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    hls-test-utils
+    lsp
+    QuickCheck
+    regex-tdfa
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Change a declarations type signature with a Code Action";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-class-plugin.nix b/pkgs/hls-class-plugin.nix
new file mode 100644
index 00000000..5d25ed8c
--- /dev/null
+++ b/pkgs/hls-class-plugin.nix
@@ -0,0 +1,67 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, deepseq
+, extra
+, filepath
+, ghc
+, ghc-boot-th
+, ghc-exactprint
+, ghcide
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-types
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "hls-class-plugin";
+  version = "1.1.1.0";
+  sha256 = "1a247c7907b03be422400de6d69d7b35dd2c015cf27ef72d441ee39511cac7e3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    deepseq
+    extra
+    ghc
+    ghc-boot-th
+    ghc-exactprint
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp
+    text
+    transformers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    filepath
+    ghcide
+    hls-plugin-api
+    hls-test-utils
+    lens
+    lsp-types
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server#readme";
+  description = "Class/instance management plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-code-range-plugin.nix b/pkgs/hls-code-range-plugin.nix
new file mode 100644
index 00000000..2cb3fe93
--- /dev/null
+++ b/pkgs/hls-code-range-plugin.nix
@@ -0,0 +1,73 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, containers
+, deepseq
+, extra
+, filepath
+, ghcide
+, hashable
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, mtl
+, semigroupoids
+, tasty-hunit
+, text
+, transformers
+, vector
+}:
+mkDerivation {
+  pname = "hls-code-range-plugin";
+  version = "1.1.0.0";
+  sha256 = "198cc8308967cbb1b3616316da42ac12f6469a071f753c8a5086cc7754c3f1e3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    deepseq
+    extra
+    ghcide
+    hashable
+    hls-plugin-api
+    lens
+    lsp
+    mtl
+    semigroupoids
+    text
+    transformers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    filepath
+    ghcide
+    hls-test-utils
+    lens
+    lsp
+    lsp-test
+    tasty-hunit
+    text
+    transformers
+    vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "HLS Plugin to support smart selection range and Folding range";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-explicit-fixity-plugin.nix b/pkgs/hls-explicit-fixity-plugin.nix
new file mode 100644
index 00000000..c8a08fe9
--- /dev/null
+++ b/pkgs/hls-explicit-fixity-plugin.nix
@@ -0,0 +1,48 @@
+{ mkDerivation
+, base
+, containers
+, deepseq
+, extra
+, filepath
+, ghc
+, ghcide
+, hashable
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "hls-explicit-fixity-plugin";
+  version = "1.1.0.0";
+  sha256 = "5c73b0ff6c77e38c8ad5b310b4eb6359f3f0c0bfa42212c63d95d9ebdc544a27";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    deepseq
+    extra
+    ghc
+    ghcide
+    hashable
+    hls-plugin-api
+    lsp
+    text
+    transformers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Show fixity explicitly while hovering";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-explicit-imports-plugin.nix b/pkgs/hls-explicit-imports-plugin.nix
new file mode 100644
index 00000000..e89df293
--- /dev/null
+++ b/pkgs/hls-explicit-imports-plugin.nix
@@ -0,0 +1,48 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, deepseq
+, filepath
+, ghc
+, ghcide
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-explicit-imports-plugin";
+  version = "1.2.0.0";
+  sha256 = "6140c9c0cfa0fd65b2edb7528e9227c97d8fc10c43305cc2c96d3373cbea028c";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    deepseq
+    ghc
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lsp
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Explicit imports plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-explicit-record-fields-plugin.nix b/pkgs/hls-explicit-record-fields-plugin.nix
new file mode 100644
index 00000000..0f65f286
--- /dev/null
+++ b/pkgs/hls-explicit-record-fields-plugin.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, base
+, containers
+, filepath
+, ghc-boot-th
+, ghcide
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, syb
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-explicit-record-fields-plugin";
+  version = "1.0.0.0";
+  sha256 = "ebdd590b978b09ddbfe53842c3173e876ec13c4d60bb196c5aba4794befcdccb";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    ghc-boot-th
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp
+    syb
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    hls-test-utils
+    lsp-test
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Explicit record fields plugin for Haskell Language Server";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hls-fourmolu-plugin.nix b/pkgs/hls-fourmolu-plugin.nix
new file mode 100644
index 00000000..fa1e6434
--- /dev/null
+++ b/pkgs/hls-fourmolu-plugin.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, filepath
+, fourmolu
+, ghc
+, ghc-boot-th
+, ghcide
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, process-extras
+, text
+}:
+mkDerivation {
+  pname = "hls-fourmolu-plugin";
+  version = "1.1.1.0";
+  sha256 = "4f121a85ea4edbbbee9d9e426ed6c9f8b349eb189e1d8edf06f5c9a971e8babf";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    filepath
+    fourmolu
+    ghc
+    ghc-boot-th
+    ghcide
+    hls-plugin-api
+    lens
+    lsp
+    process-extras
+    text
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    containers
+    filepath
+    hls-plugin-api
+    hls-test-utils
+    lsp-test
+  ];
+  testToolDepends = [ fourmolu ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server";
+  description = "Integration with the Fourmolu code formatter";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-gadt-plugin.nix b/pkgs/hls-gadt-plugin.nix
new file mode 100644
index 00000000..aba4cd05
--- /dev/null
+++ b/pkgs/hls-gadt-plugin.nix
@@ -0,0 +1,67 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, extra
+, filepath
+, ghc
+, ghc-boot-th
+, ghc-exactprint
+, ghcide
+, hls-plugin-api
+, hls-refactor-plugin
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, mtl
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-gadt-plugin";
+  version = "1.0.1.0";
+  sha256 = "9a54c545b8a8881f2775b51136c403bf05277802cbc7571960bf38db7d744682";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    extra
+    ghc
+    ghc-boot-th
+    ghc-exactprint
+    ghcide
+    hls-plugin-api
+    hls-refactor-plugin
+    lens
+    lsp
+    mtl
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    hls-test-utils
+    lens
+    lsp
+    lsp-test
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Convert to GADT syntax plugin";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-graph.nix b/pkgs/hls-graph.nix
new file mode 100644
index 00000000..c297f50f
--- /dev/null
+++ b/pkgs/hls-graph.nix
@@ -0,0 +1,93 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, bytestring
+, containers
+, deepseq
+, directory
+, exceptions
+, extra
+, filepath
+, focus
+, hashable
+, hspec
+, hspec-discover
+, js-dgtable
+, js-flot
+, js-jquery
+, lib
+, list-t
+, stm
+, stm-containers
+, tasty
+, tasty-hspec
+, tasty-hunit
+, tasty-rerun
+, text
+, time
+, transformers
+, unliftio
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-graph";
+  version = "1.9.0.0";
+  sha256 = "24dc67786a1952b6aa062de0a2ef3d87547b23805801b3ba32576b51ae64804c";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    async
+    base
+    bytestring
+    containers
+    deepseq
+    directory
+    exceptions
+    extra
+    filepath
+    focus
+    hashable
+    js-dgtable
+    js-flot
+    js-jquery
+    list-t
+    stm
+    stm-containers
+    text
+    time
+    transformers
+    unliftio
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    directory
+    extra
+    filepath
+    hspec
+    stm
+    stm-containers
+    tasty
+    tasty-hspec
+    tasty-hunit
+    tasty-rerun
+    text
+    unordered-containers
+  ];
+  testToolDepends = [ hspec-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server#readme";
+  description = "Haskell Language Server internal graph API";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-hlint-plugin.nix b/pkgs/hls-hlint-plugin.nix
new file mode 100644
index 00000000..6eceeeae
--- /dev/null
+++ b/pkgs/hls-hlint-plugin.nix
@@ -0,0 +1,94 @@
+{ mkDerivation
+, Diff
+, aeson
+, apply-refact
+, base
+, binary
+, bytestring
+, containers
+, data-default
+, deepseq
+, directory
+, extra
+, filepath
+, ghc-exactprint
+, ghc-lib-parser
+, ghc-lib-parser-ex
+, ghcide
+, hashable
+, hlint
+, hls-plugin-api
+, hls-test-utils
+, hslogger
+, lens
+, lib
+, lsp
+, lsp-types
+, refact
+, regex-tdfa
+, stm
+, temporary
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-hlint-plugin";
+  version = "1.1.1.0";
+  sha256 = "9dda168ebdc68e366636e4730f1d3342134a8e628164254636be7bc1439b2083";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    apply-refact
+    base
+    binary
+    bytestring
+    containers
+    data-default
+    deepseq
+    Diff
+    directory
+    extra
+    filepath
+    ghc-exactprint
+    ghc-lib-parser
+    ghc-lib-parser-ex
+    ghcide
+    hashable
+    hlint
+    hls-plugin-api
+    hslogger
+    lens
+    lsp
+    refact
+    regex-tdfa
+    stm
+    temporary
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    containers
+    filepath
+    hls-plugin-api
+    hls-test-utils
+    lens
+    lsp-types
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Hlint integration plugin with Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-module-name-plugin.nix b/pkgs/hls-module-name-plugin.nix
new file mode 100644
index 00000000..ef0ab79e
--- /dev/null
+++ b/pkgs/hls-module-name-plugin.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, aeson
+, base
+, directory
+, filepath
+, ghcide
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-module-name-plugin";
+  version = "1.1.1.0";
+  sha256 = "821b5fe4d44077a07b898db2188bcfefb919316004612a666c3f783e677ee01a";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    directory
+    filepath
+    ghcide
+    hls-plugin-api
+    lsp
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Module name plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-plugin-api.nix b/pkgs/hls-plugin-api.nix
new file mode 100644
index 00000000..bfd7fc7a
--- /dev/null
+++ b/pkgs/hls-plugin-api.nix
@@ -0,0 +1,101 @@
+{ mkDerivation
+, Diff
+, aeson
+, base
+, containers
+, criterion
+, data-default
+, deepseq
+, dependent-map
+, dependent-sum
+, dlist
+, extra
+, filepath
+, ghc
+, hashable
+, hls-graph
+, hw-fingertree
+, lens
+, lens-aeson
+, lib
+, lsp
+, lsp-types
+, megaparsec
+, opentelemetry
+, optparse-applicative
+, random
+, random-fu
+, regex-tdfa
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, tasty-rerun
+, text
+, transformers
+, unix
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-plugin-api";
+  version = "1.6.0.0";
+  sha256 = "b5c08bfc099a715c30c1f20949cd7581d27761828590cf3f37c71fe596f0b9b4";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    data-default
+    dependent-map
+    dependent-sum
+    Diff
+    dlist
+    extra
+    filepath
+    ghc
+    hashable
+    hls-graph
+    hw-fingertree
+    lens
+    lens-aeson
+    lsp
+    megaparsec
+    opentelemetry
+    optparse-applicative
+    regex-tdfa
+    text
+    transformers
+    unix
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    lsp-types
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    tasty-rerun
+    text
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    deepseq
+    lsp-types
+    random
+    random-fu
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server#readme";
+  description = "Haskell Language Server API for plugin communication";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-pragmas-plugin.nix b/pkgs/hls-pragmas-plugin.nix
new file mode 100644
index 00000000..31e0eb27
--- /dev/null
+++ b/pkgs/hls-pragmas-plugin.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, base
+, containers
+, extra
+, filepath
+, fuzzy
+, ghc
+, ghcide
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-types
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-pragmas-plugin";
+  version = "1.0.4.0";
+  sha256 = "a5457b9465e697d0f5087b134992c5eec3637c762bbc99c1691bafef09a865b3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    extra
+    fuzzy
+    ghc
+    ghcide
+    hls-plugin-api
+    lens
+    lsp
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    hls-test-utils
+    lens
+    lsp-types
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Pragmas plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-qualify-imported-names-plugin.nix b/pkgs/hls-qualify-imported-names-plugin.nix
new file mode 100644
index 00000000..6135974c
--- /dev/null
+++ b/pkgs/hls-qualify-imported-names-plugin.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, deepseq
+, dlist
+, filepath
+, ghc
+, ghcide
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-qualify-imported-names-plugin";
+  version = "1.0.2.0";
+  sha256 = "6eacd92615fb2699f5c5eb1269c4a38e8e34be732f616a8cc0af273a571a582c";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    deepseq
+    dlist
+    ghc
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lsp
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "A Haskell Language Server plugin that qualifies imported names";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-refactor-plugin.nix b/pkgs/hls-refactor-plugin.nix
new file mode 100644
index 00000000..aa111085
--- /dev/null
+++ b/pkgs/hls-refactor-plugin.nix
@@ -0,0 +1,115 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, bytestring
+, containers
+, data-default
+, deepseq
+, directory
+, dlist
+, extra
+, filepath
+, ghc
+, ghc-boot
+, ghc-exactprint
+, ghcide
+, ghcide-test-utils
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lens
+, lib
+, lsp
+, lsp-test
+, lsp-types
+, mtl
+, network-uri
+, parser-combinators
+, regex-tdfa
+, retrie
+, shake
+, syb
+, tasty
+, tasty-expected-failure
+, tasty-hunit
+, tasty-rerun
+, text
+, text-rope
+, time
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-refactor-plugin";
+  version = "1.1.0.0";
+  sha256 = "ea14310a53e5e376b5fdf65f695ca26dc98f07dc8fb81b4163bb923e60e1e3b2";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    data-default
+    deepseq
+    dlist
+    extra
+    ghc
+    ghc-boot
+    ghc-exactprint
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp
+    mtl
+    regex-tdfa
+    retrie
+    syb
+    text
+    text-rope
+    time
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    async
+    base
+    containers
+    data-default
+    directory
+    extra
+    filepath
+    ghc
+    ghcide
+    ghcide-test-utils
+    hls-plugin-api
+    hls-test-utils
+    lens
+    lsp-test
+    lsp-types
+    network-uri
+    parser-combinators
+    regex-tdfa
+    shake
+    tasty
+    tasty-expected-failure
+    tasty-hunit
+    tasty-rerun
+    text
+    text-rope
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Exactprint refactorings for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-refine-imports-plugin.nix b/pkgs/hls-refine-imports-plugin.nix
new file mode 100644
index 00000000..541e1ca2
--- /dev/null
+++ b/pkgs/hls-refine-imports-plugin.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, deepseq
+, filepath
+, ghc
+, ghcide
+, hls-explicit-imports-plugin
+, hls-graph
+, hls-plugin-api
+, hls-test-utils
+, lib
+, lsp
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-refine-imports-plugin";
+  version = "1.0.4.0";
+  sha256 = "6db0e0cdf18fde0a2a4dde42ca88a428123c0a7cdf064e9d83bed6c8b534a665";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    deepseq
+    ghc
+    ghcide
+    hls-explicit-imports-plugin
+    hls-graph
+    hls-plugin-api
+    lsp
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Refine imports plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-retrie-plugin.nix b/pkgs/hls-retrie-plugin.nix
new file mode 100644
index 00000000..a2d26ea2
--- /dev/null
+++ b/pkgs/hls-retrie-plugin.nix
@@ -0,0 +1,61 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, containers
+, deepseq
+, directory
+, extra
+, ghc
+, ghcide
+, hashable
+, hls-plugin-api
+, lib
+, lsp
+, lsp-types
+, retrie
+, safe-exceptions
+, stm
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-retrie-plugin";
+  version = "1.0.3.0";
+  sha256 = "3e272ccc97621fb93b5d5bbe37b49b26afcb7d2edc09701d87aa41bfaa6fdbbd";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    deepseq
+    directory
+    extra
+    ghc
+    ghcide
+    hashable
+    hls-plugin-api
+    lsp
+    lsp-types
+    retrie
+    safe-exceptions
+    stm
+    text
+    transformers
+    unordered-containers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Retrie integration plugin for Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-splice-plugin.nix b/pkgs/hls-splice-plugin.nix
new file mode 100644
index 00000000..962425c8
--- /dev/null
+++ b/pkgs/hls-splice-plugin.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, aeson
+, base
+, containers
+, dlist
+, extra
+, filepath
+, foldl
+, ghc
+, ghc-exactprint
+, ghcide
+, hls-plugin-api
+, hls-refactor-plugin
+, hls-test-utils
+, lens
+, lib
+, lsp
+, retrie
+, syb
+, text
+, transformers
+, unliftio-core
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-splice-plugin";
+  version = "1.0.3.0";
+  sha256 = "90e41b28bd9572060876a25137854ea3467fb3197225218c1ada70db2c4ae006";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    containers
+    dlist
+    extra
+    foldl
+    ghc
+    ghc-exactprint
+    ghcide
+    hls-plugin-api
+    hls-refactor-plugin
+    lens
+    lsp
+    retrie
+    syb
+    text
+    transformers
+    unliftio-core
+    unordered-containers
+  ];
+  testHaskellDepends = [ base filepath hls-test-utils text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "HLS Plugin to expand TemplateHaskell Splices and QuasiQuotes";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hls-test-utils.nix b/pkgs/hls-test-utils.nix
new file mode 100644
index 00000000..7d1a6216
--- /dev/null
+++ b/pkgs/hls-test-utils.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, blaze-markup
+, bytestring
+, containers
+, data-default
+, directory
+, extra
+, filepath
+, ghcide
+, hls-graph
+, hls-plugin-api
+, lens
+, lib
+, lsp
+, lsp-test
+, lsp-types
+, tasty
+, tasty-expected-failure
+, tasty-golden
+, tasty-hunit
+, tasty-rerun
+, temporary
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hls-test-utils";
+  version = "1.5.0.0";
+  sha256 = "e3d94e0d441f126c377f4830cc61edc1518684c5862962678be4a65554075e0c";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    async
+    base
+    blaze-markup
+    bytestring
+    containers
+    data-default
+    directory
+    extra
+    filepath
+    ghcide
+    hls-graph
+    hls-plugin-api
+    lens
+    lsp
+    lsp-test
+    lsp-types
+    tasty
+    tasty-expected-failure
+    tasty-golden
+    tasty-hunit
+    tasty-rerun
+    temporary
+    text
+    unordered-containers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server#readme";
+  description = "Utilities used in the tests of Haskell Language Server";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hp2pretty.nix b/pkgs/hp2pretty.nix
new file mode 100644
index 00000000..b4f2967c
--- /dev/null
+++ b/pkgs/hp2pretty.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, array
+, attoparsec
+, base
+, containers
+, filepath
+, floatshow
+, lib
+, mtl
+, optparse-applicative
+, semigroups
+, text
+}:
+mkDerivation {
+  pname = "hp2pretty";
+  version = "0.10";
+  sha256 = "226c0f3762861c29748e83a3c93388c284aba33cfef45623ca69acc8764535c7";
+  isLibrary = false;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  executableHaskellDepends = [
+    array
+    attoparsec
+    base
+    containers
+    filepath
+    floatshow
+    mtl
+    optparse-applicative
+    semigroups
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://mathr.co.uk/blog/hp2pretty.html";
+  description = "generate pretty graphs from heap profiles";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hslogger.nix b/pkgs/hslogger.nix
new file mode 100644
index 00000000..fbb073cd
--- /dev/null
+++ b/pkgs/hslogger.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, HUnit
+, base
+, bytestring
+, containers
+, deepseq
+, lib
+, network
+, network-bsd
+, old-locale
+, time
+, unix
+}:
+mkDerivation {
+  pname = "hslogger";
+  version = "1.3.1.0";
+  sha256 = "7f2364f6c0b9c5b85a257267a335816126ef2471c817a42797a5d3c57acaca5b";
+  revision = "6";
+  editedCabalFile = "0xiqjl646kxynsccc2q1q91sch7pfx3274yl2745fsqhpb115df1";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    deepseq
+    network
+    network-bsd
+    old-locale
+    time
+    unix
+  ];
+  testHaskellDepends = [ base HUnit ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-hvr/hslogger/wiki";
+  description = "Versatile logging framework";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hspec-attoparsec.nix b/pkgs/hspec-attoparsec.nix
new file mode 100644
index 00000000..0d85eb35
--- /dev/null
+++ b/pkgs/hspec-attoparsec.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, attoparsec
+, base
+, bytestring
+, hspec
+, hspec-expectations
+, lib
+, text
+}:
+mkDerivation {
+  pname = "hspec-attoparsec";
+  version = "0.1.0.2";
+  sha256 = "ea7a8b3f2989abde8c8537cec1a2ae312e88df80086b9b01ed12e5324137fb64";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    bytestring
+    hspec-expectations
+    text
+  ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    bytestring
+    hspec
+    hspec-expectations
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/alpmestan/hspec-attoparsec";
+  description = "Utility functions for testing your attoparsec parsers with hspec";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hw-fingertree.nix b/pkgs/hw-fingertree.nix
new file mode 100644
index 00000000..61d767f3
--- /dev/null
+++ b/pkgs/hw-fingertree.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, base
+, deepseq
+, doctest
+, doctest-discover
+, hedgehog
+, hspec
+, hspec-discover
+, hw-hspec-hedgehog
+, hw-prim
+, lib
+}:
+mkDerivation {
+  pname = "hw-fingertree";
+  version = "0.1.2.1";
+  sha256 = "ce8077e697e6e7e3d1038b9f44a8d54d28272adb3c1e17ecca9bae2758b1922a";
+  revision = "2";
+  editedCabalFile = "00h2vzzncfwyaa0krgsffcmy2gdb0637i9zjdlsz88mdlhynqhp3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base deepseq hw-prim ];
+  testHaskellDepends = [
+    base
+    deepseq
+    doctest
+    doctest-discover
+    hedgehog
+    hspec
+    hw-hspec-hedgehog
+  ];
+  testToolDepends = [ doctest-discover hspec-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-works/hw-fingertree#readme";
+  description = "Generic finger-tree structure, with example instances";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hw-hedgehog.nix b/pkgs/hw-hedgehog.nix
new file mode 100644
index 00000000..ef50380a
--- /dev/null
+++ b/pkgs/hw-hedgehog.nix
@@ -0,0 +1,32 @@
+{ mkDerivation
+, base
+, doctest
+, doctest-discover
+, hedgehog
+, lib
+, vector
+}:
+mkDerivation {
+  pname = "hw-hedgehog";
+  version = "0.1.1.1";
+  sha256 = "28aedae8da96c369ed7f81db7d9b00f00b975aa4058bf2dd36a6f49ded8b7a4e";
+  revision = "2";
+  editedCabalFile = "0c9wy5jmsmfwz151k9zxfsj5663zz3rsvmr0i9vsv5agw8fb8xhq";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base hedgehog vector ];
+  testHaskellDepends = [ base doctest doctest-discover ];
+  testToolDepends = [ doctest-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-works/hw-hedgehog#readme";
+  description = "Extra hedgehog functionality";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hw-hspec-hedgehog.nix b/pkgs/hw-hspec-hedgehog.nix
new file mode 100644
index 00000000..1418e239
--- /dev/null
+++ b/pkgs/hw-hspec-hedgehog.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, HUnit
+, base
+, call-stack
+, doctest
+, doctest-discover
+, hedgehog
+, hspec
+, hspec-discover
+, lib
+, transformers
+}:
+mkDerivation {
+  pname = "hw-hspec-hedgehog";
+  version = "0.1.1.1";
+  sha256 = "fa4c101574484cc8f9775fefc558f62e86c0d0c7e4b494b4adfb6d897ac68fc6";
+  revision = "3";
+  editedCabalFile = "129bnprzh8nglbi5x8i5dlc4v5qr7cqg6bajy6id1168r26ciwcq";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    call-stack
+    hedgehog
+    hspec
+    HUnit
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    call-stack
+    doctest
+    doctest-discover
+    hedgehog
+    hspec
+    HUnit
+  ];
+  testToolDepends = [ doctest-discover hspec-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-works/hw-hspec-hedgehog#readme";
+  description = "Interoperability between hspec and hedgehog";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hw-prim.nix b/pkgs/hw-prim.nix
new file mode 100644
index 00000000..558bd4dd
--- /dev/null
+++ b/pkgs/hw-prim.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, QuickCheck
+, base
+, bytestring
+, criterion
+, deepseq
+, directory
+, doctest
+, doctest-discover
+, exceptions
+, ghc-prim
+, hedgehog
+, hspec
+, hspec-discover
+, hw-hspec-hedgehog
+, lib
+, mmap
+, transformers
+, unliftio-core
+, vector
+}:
+mkDerivation {
+  pname = "hw-prim";
+  version = "0.6.3.2";
+  sha256 = "1fa05fdc46c72ed4b28aabcee69695ce810d451bbd263fbe75f94b179e20441d";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    ghc-prim
+    mmap
+    transformers
+    unliftio-core
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    directory
+    doctest
+    doctest-discover
+    exceptions
+    hedgehog
+    hspec
+    hw-hspec-hedgehog
+    mmap
+    QuickCheck
+    transformers
+    vector
+  ];
+  testToolDepends = [ doctest-discover hspec-discover ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    criterion
+    mmap
+    transformers
+    vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/haskell-works/hw-prim#readme";
+  description = "Primitive functions and data types";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/implicit-hie-cradle.nix b/pkgs/implicit-hie-cradle.nix
new file mode 100644
index 00000000..5817d17f
--- /dev/null
+++ b/pkgs/implicit-hie-cradle.nix
@@ -0,0 +1,65 @@
+{ mkDerivation
+, base
+, base16-bytestring
+, bytestring
+, containers
+, directory
+, extra
+, filepath
+, hie-bios
+, hslogger
+, implicit-hie
+, lib
+, process
+, temporary
+, text
+, time
+, transformers
+, unix-compat
+, unordered-containers
+, vector
+, yaml
+}:
+mkDerivation {
+  pname = "implicit-hie-cradle";
+  version = "0.5.0.0";
+  sha256 = "3e6a8958052b95665932ed6f951e9e4c30c016b3f8aba1b7d7735f0a188ecc31";
+  revision = "1";
+  editedCabalFile = "0naa4dk7bgg8icx5xy38jpg7gxx9pirqz4gx0ggj5g2r787zcxj2";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    base16-bytestring
+    bytestring
+    containers
+    directory
+    extra
+    filepath
+    hie-bios
+    hslogger
+    implicit-hie
+    process
+    temporary
+    text
+    time
+    transformers
+    unix-compat
+    unordered-containers
+    vector
+    yaml
+  ];
+  testHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Avi-D-coder/implicit-hie-cradle#readme";
+  description = "Auto generate hie-bios cradles";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/implicit-hie.nix b/pkgs/implicit-hie.nix
new file mode 100644
index 00000000..12f4f754
--- /dev/null
+++ b/pkgs/implicit-hie.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, attoparsec
+, base
+, directory
+, filepath
+, filepattern
+, hspec
+, hspec-attoparsec
+, lib
+, text
+, transformers
+, yaml
+}:
+mkDerivation {
+  pname = "implicit-hie";
+  version = "0.1.4.0";
+  sha256 = "931814d6c1bb9f8f6d57161783eacb7b95e66398e1b20d652eca0759206def21";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    directory
+    filepath
+    filepattern
+    text
+    transformers
+    yaml
+  ];
+  executableHaskellDepends = [
+    attoparsec
+    base
+    directory
+    filepath
+    filepattern
+    text
+    transformers
+    yaml
+  ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    directory
+    filepath
+    filepattern
+    hspec
+    hspec-attoparsec
+    text
+    transformers
+    yaml
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Avi-D-coder/implicit-hie#readme";
+  description = "Auto generate hie-bios cradles & hie.yaml";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/integration.nix b/pkgs/integration.nix
new file mode 100644
index 00000000..b8539858
--- /dev/null
+++ b/pkgs/integration.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib, parallel }:
+mkDerivation {
+  pname = "integration";
+  version = "0.2.1";
+  sha256 = "0c27385eadc10a580e78f7b7d4bc919c346b2c9b1e73aea7e7804d824d53582f";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base parallel ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ekmett/integration";
+  description = "Fast robust numeric integration via tanh-sinh quadrature";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/lsp-test.nix b/pkgs/lsp-test.nix
new file mode 100644
index 00000000..5dfbe53c
--- /dev/null
+++ b/pkgs/lsp-test.nix
@@ -0,0 +1,102 @@
+{ mkDerivation
+, Diff
+, Glob
+, aeson
+, aeson-pretty
+, ansi-terminal
+, async
+, base
+, bytestring
+, co-log-core
+, conduit
+, conduit-parse
+, containers
+, data-default
+, directory
+, exceptions
+, extra
+, filepath
+, hspec
+, lens
+, lib
+, lsp
+, lsp-types
+, mtl
+, parser-combinators
+, process
+, some
+, text
+, time
+, transformers
+, unix
+, unliftio
+, unordered-containers
+}:
+mkDerivation {
+  pname = "lsp-test";
+  version = "0.14.1.0";
+  sha256 = "e13ae2be422ae1344e8ab9f535f20432b97832be2d0f15a68e631660ffad6435";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    ansi-terminal
+    async
+    base
+    bytestring
+    co-log-core
+    conduit
+    conduit-parse
+    containers
+    data-default
+    Diff
+    directory
+    exceptions
+    filepath
+    Glob
+    lens
+    lsp
+    lsp-types
+    mtl
+    parser-combinators
+    process
+    some
+    text
+    time
+    transformers
+    unix
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    co-log-core
+    data-default
+    directory
+    filepath
+    hspec
+    lens
+    lsp
+    mtl
+    parser-combinators
+    process
+    text
+    unliftio
+    unordered-containers
+  ];
+  testToolDepends = [ lsp ];
+  benchmarkHaskellDepends = [ base extra lsp process ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/lsp/blob/master/lsp-test/README.md";
+  description = "Functional test framework for LSP servers";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/matrices.nix b/pkgs/matrices.nix
new file mode 100644
index 00000000..eba5f6ed
--- /dev/null
+++ b/pkgs/matrices.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, criterion
+, deepseq
+, lib
+, primitive
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, vector
+}:
+mkDerivation {
+  pname = "matrices";
+  version = "0.5.0";
+  sha256 = "fd013f0b061f7fd006242340fb6bc936114c8fc7d255ba58bd54cd1d66391d4d";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base deepseq primitive vector ];
+  testHaskellDepends = [
+    base
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    vector
+  ];
+  benchmarkHaskellDepends = [ base criterion vector ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "native matrix based on vector";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/mfsolve.nix b/pkgs/mfsolve.nix
new file mode 100644
index 00000000..09823fc4
--- /dev/null
+++ b/pkgs/mfsolve.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, hashable
+, lib
+, mtl
+, mtl-compat
+, tasty
+, tasty-hunit
+, unordered-containers
+}:
+mkDerivation {
+  pname = "mfsolve";
+  version = "0.3.2.1";
+  sha256 = "a225068707a71fdef595cdde77336c1b609b14527e023bf42ab2f86dd9d70da4";
+  revision = "1";
+  editedCabalFile = "0938ji6l1bx787lxcw6rzjwskm9vxm615cvx7hxpbwp0hbxrj5sa";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    hashable
+    mtl
+    mtl-compat
+    unordered-containers
+  ];
+  testHaskellDepends = [ base tasty tasty-hunit ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Equation solver and calculator à la metafont";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/mmap.nix b/pkgs/mmap.nix
new file mode 100644
index 00000000..51fc8b4e
--- /dev/null
+++ b/pkgs/mmap.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, bytestring, lib }:
+mkDerivation {
+  pname = "mmap";
+  version = "0.5.9";
+  sha256 = "58fcbb04e1cb8e7c36c05823b02dce2faaa989c53d745a7f36192de2fc98b5f8";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Memory mapped files for POSIX and Windows";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/mwc-random-monad.nix b/pkgs/mwc-random-monad.nix
new file mode 100644
index 00000000..92e5c8d5
--- /dev/null
+++ b/pkgs/mwc-random-monad.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, base
+, lib
+, monad-primitive
+, mwc-random
+, primitive
+, transformers
+, vector
+}:
+mkDerivation {
+  pname = "mwc-random-monad";
+  version = "0.7.3.1";
+  sha256 = "d0f37917e646c9610dcbee4173c4ac50e054418f62623a42f19e3c0c39979440";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    monad-primitive
+    mwc-random
+    primitive
+    transformers
+    vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Monadic interface for mwc-random";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/opentelemetry.nix b/pkgs/opentelemetry.nix
new file mode 100644
index 00000000..4574eeb0
--- /dev/null
+++ b/pkgs/opentelemetry.nix
@@ -0,0 +1,32 @@
+{ mkDerivation
+, base
+, bytestring
+, exceptions
+, ghc-trace-events
+, hashable
+, lib
+}:
+mkDerivation {
+  pname = "opentelemetry";
+  version = "0.8.0";
+  sha256 = "e9bf1c3876de1be12e0cb1d7eeb758527e863989ea6f088a7241b2cb0493e415";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    exceptions
+    ghc-trace-events
+    hashable
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/optparse-simple.nix b/pkgs/optparse-simple.nix
new file mode 100644
index 00000000..088cb352
--- /dev/null
+++ b/pkgs/optparse-simple.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, bytestring
+, directory
+, githash
+, lib
+, optparse-applicative
+, template-haskell
+, th-compat
+, transformers
+}:
+mkDerivation {
+  pname = "optparse-simple";
+  version = "0.1.1.4";
+  sha256 = "1d01d85c477b42e5a6ab6595def68c800d5bccbeff5a06ccf63c6a86967a7878";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    githash
+    optparse-applicative
+    template-haskell
+    th-compat
+    transformers
+  ];
+  testHaskellDepends = [ base bytestring directory ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/fpco/optparse-simple#readme";
+  description = "Simple interface to optparse-applicative";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/primitive-extras.nix b/pkgs/primitive-extras.nix
new file mode 100644
index 00000000..d88af70b
--- /dev/null
+++ b/pkgs/primitive-extras.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, QuickCheck
+, base
+, bytestring
+, cereal
+, deferred-folds
+, focus
+, foldl
+, lib
+, list-t
+, primitive
+, primitive-unlifted
+, profunctors
+, quickcheck-instances
+, rerebase
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, vector
+}:
+mkDerivation {
+  pname = "primitive-extras";
+  version = "0.10.1.5";
+  sha256 = "5ae268716aa5beba45fe717e6f01f1b6c5ac13abc328805180496b8ad47eb176";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    cereal
+    deferred-folds
+    focus
+    foldl
+    list-t
+    primitive
+    primitive-unlifted
+    profunctors
+    vector
+  ];
+  testHaskellDepends = [
+    cereal
+    deferred-folds
+    focus
+    primitive
+    QuickCheck
+    quickcheck-instances
+    rerebase
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/metrix-ai/primitive-extras";
+  description = "Extras for the \"primitive\" library";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/primitive-unlifted.nix b/pkgs/primitive-unlifted.nix
new file mode 100644
index 00000000..a7f8afa7
--- /dev/null
+++ b/pkgs/primitive-unlifted.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, primitive
+, stm
+, text-short
+}:
+mkDerivation {
+  pname = "primitive-unlifted";
+  version = "0.1.3.1";
+  sha256 = "8b330e1a7b146333344304334d67b60481535bb506f1e53500e2ef4bd9fb34be";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring primitive text-short ];
+  testHaskellDepends = [ base primitive stm ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-primitive/primitive-unlifted";
+  description = "Primitive GHC types with unlifted types inside";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/random-fu.nix b/pkgs/random-fu.nix
new file mode 100644
index 00000000..a600cf69
--- /dev/null
+++ b/pkgs/random-fu.nix
@@ -0,0 +1,48 @@
+{ mkDerivation
+, base
+, erf
+, lib
+, math-functions
+, monad-loops
+, mtl
+, random
+, random-shuffle
+, rvar
+, syb
+, template-haskell
+, transformers
+, vector
+}:
+mkDerivation {
+  pname = "random-fu";
+  version = "0.3.0.0";
+  sha256 = "a19d158d0f2b6df51d32c9e6df7cf6bbd94b7a1af81acfb4fe505f410e5ae4c7";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    erf
+    math-functions
+    monad-loops
+    mtl
+    random
+    random-shuffle
+    rvar
+    syb
+    template-haskell
+    transformers
+    vector
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/mokus0/random-fu";
+  description = "Random number generation";
+  license = lib.licenses.publicDomain;
+  broken = false;
+}
diff --git a/pkgs/retrie.nix b/pkgs/retrie.nix
new file mode 100644
index 00000000..04a6eb0c
--- /dev/null
+++ b/pkgs/retrie.nix
@@ -0,0 +1,94 @@
+{ mkDerivation
+, HUnit
+, ansi-terminal
+, async
+, base
+, bytestring
+, containers
+, data-default
+, deepseq
+, directory
+, exceptions
+, filepath
+, ghc
+, ghc-exactprint
+, ghc-paths
+, haskell-src-exts
+, lib
+, list-t
+, mtl
+, optparse-applicative
+, process
+, random-shuffle
+, syb
+, tasty
+, tasty-hunit
+, temporary
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "retrie";
+  version = "1.2.1.1";
+  sha256 = "74abc7b1968df4455cd104338a81a38f3db89ac963c8fd918f5c5273db14bfab";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    ansi-terminal
+    async
+    base
+    bytestring
+    containers
+    data-default
+    directory
+    filepath
+    ghc
+    ghc-exactprint
+    list-t
+    mtl
+    optparse-applicative
+    process
+    random-shuffle
+    syb
+    text
+    transformers
+    unordered-containers
+  ];
+  executableHaskellDepends = [ base ghc-paths haskell-src-exts ];
+  testHaskellDepends = [
+    base
+    containers
+    data-default
+    deepseq
+    directory
+    exceptions
+    filepath
+    ghc
+    ghc-exactprint
+    ghc-paths
+    haskell-src-exts
+    HUnit
+    mtl
+    optparse-applicative
+    process
+    syb
+    tasty
+    tasty-hunit
+    temporary
+    text
+    unordered-containers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/facebookincubator/retrie";
+  description = "A powerful, easy-to-use codemodding tool for Haskell";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/shake-bench.nix b/pkgs/shake-bench.nix
new file mode 100644
index 00000000..bd016a4e
--- /dev/null
+++ b/pkgs/shake-bench.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, Chart
+, Chart-diagrams
+, aeson
+, base
+, bytestring
+, diagrams-contrib
+, diagrams-core
+, diagrams-lib
+, diagrams-svg
+, directory
+, extra
+, filepath
+, lens
+, lens-aeson
+, lib
+, mtl
+, shake
+, text
+}:
+mkDerivation {
+  pname = "shake-bench";
+  version = "0.2.0.0";
+  sha256 = "21f159e881e3bc71406877a51fc40e1c9e7b553bbf376b0400087222f90ddd4b";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    Chart
+    Chart-diagrams
+    diagrams-contrib
+    diagrams-core
+    diagrams-lib
+    diagrams-svg
+    directory
+    extra
+    filepath
+    lens
+    lens-aeson
+    mtl
+    shake
+    text
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Build rules for historical benchmarking";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/statestack.nix b/pkgs/statestack.nix
new file mode 100644
index 00000000..7cdab9c7
--- /dev/null
+++ b/pkgs/statestack.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, lib, mtl, transformers }:
+mkDerivation {
+  pname = "statestack";
+  version = "0.3.1";
+  sha256 = "f9d2a2b7047a867c6eb3233db9528148fd773bdd0bdec29c13eb9f10dce71341";
+  revision = "1";
+  editedCabalFile = "1bvx9s7zssczqpwwgqw4cgmfdw1wjy0mwqlndjgnkjjn4nm31ml8";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base mtl transformers ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Simple State-like monad transformer with saveable and restorable state";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/stm-containers.nix b/pkgs/stm-containers.nix
new file mode 100644
index 00000000..fe35bc59
--- /dev/null
+++ b/pkgs/stm-containers.nix
@@ -0,0 +1,55 @@
+{ mkDerivation
+, HTF
+, QuickCheck
+, base
+, deferred-folds
+, focus
+, foldl
+, free
+, hashable
+, lib
+, list-t
+, quickcheck-text
+, rerebase
+, stm-hamt
+, transformers
+}:
+mkDerivation {
+  pname = "stm-containers";
+  version = "1.2";
+  sha256 = "6c4d98b6a3182fa0dd99235cea1aa95a3c876f8be5cbb78f7700a17d64b7177a";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    deferred-folds
+    focus
+    hashable
+    list-t
+    stm-hamt
+    transformers
+  ];
+  testHaskellDepends = [
+    deferred-folds
+    focus
+    foldl
+    free
+    HTF
+    list-t
+    QuickCheck
+    quickcheck-text
+    rerebase
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/stm-containers";
+  description = "Containers for STM";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/stm-hamt.nix b/pkgs/stm-hamt.nix
new file mode 100644
index 00000000..d03b67f6
--- /dev/null
+++ b/pkgs/stm-hamt.nix
@@ -0,0 +1,72 @@
+{ mkDerivation
+, QuickCheck
+, async
+, base
+, criterion
+, deferred-folds
+, focus
+, free
+, hashable
+, lib
+, list-t
+, mwc-random
+, mwc-random-monad
+, primitive
+, primitive-extras
+, quickcheck-instances
+, rebase
+, rerebase
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, transformers
+}:
+mkDerivation {
+  pname = "stm-hamt";
+  version = "1.2.0.8";
+  sha256 = "6c74d4ba2292d0be95fa1599c40180953a24d9dbb5d12cc27cba475dde9676dc";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    deferred-folds
+    focus
+    hashable
+    list-t
+    primitive
+    primitive-extras
+    transformers
+  ];
+  testHaskellDepends = [
+    deferred-folds
+    focus
+    QuickCheck
+    quickcheck-instances
+    rerebase
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  benchmarkHaskellDepends = [
+    async
+    criterion
+    focus
+    free
+    list-t
+    mwc-random
+    mwc-random-monad
+    rebase
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/stm-hamt";
+  description = "STM-specialised Hash Array Mapped Trie";
+  license = lib.licenses.mit;
+  broken = false;
+}
diff --git a/pkgs/svg-builder.nix b/pkgs/svg-builder.nix
new file mode 100644
index 00000000..82e4bb96
--- /dev/null
+++ b/pkgs/svg-builder.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, blaze-builder
+, bytestring
+, hashable
+, lib
+, text
+, unordered-containers
+}:
+mkDerivation {
+  pname = "svg-builder";
+  version = "0.1.1";
+  sha256 = "4fd0e3f2cbc5601fc69e7eab41588cbfa1150dc508d9d86bf5f3d393880382cc";
+  revision = "6";
+  editedCabalFile = "1cprm8ya1rdid4pz1dk6692mv0kqkaxrsqaxg83bca5z4dkgqi2z";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    hashable
+    text
+    unordered-containers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/diagrams/svg-builder.git";
+  description = "DSL for building SVG";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/tasty-rerun.nix b/pkgs/tasty-rerun.nix
new file mode 100644
index 00000000..fa6786e5
--- /dev/null
+++ b/pkgs/tasty-rerun.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, base
+, containers
+, lib
+, mtl
+, optparse-applicative
+, split
+, stm
+, tagged
+, tasty
+, transformers
+}:
+mkDerivation {
+  pname = "tasty-rerun";
+  version = "1.1.18";
+  sha256 = "fa74ac10bc23fd3e443362427236a9c543f92b6aaf2e1bc8e959ecd47fb98c69";
+  revision = "4";
+  editedCabalFile = "1i2van23247h62sz94kjiyyb6xvz88z6kkjqqsbxi4m74pga27hn";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    mtl
+    optparse-applicative
+    split
+    stm
+    tagged
+    tasty
+    transformers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ocharles/tasty-rerun";
+  description = "Rerun only tests which failed in a previous test run";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/vector-space.nix b/pkgs/vector-space.nix
new file mode 100644
index 00000000..b36a5913
--- /dev/null
+++ b/pkgs/vector-space.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, Boolean, MemoTrie, NumInstances, base, lib }:
+mkDerivation {
+  pname = "vector-space";
+  version = "0.16";
+  sha256 = "0c0b2f1209f95045865b968c7aa0a25e155410b3e08cf98a6c8544e48436c79c";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base Boolean MemoTrie NumInstances ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Vector & affine spaces, linear maps, and derivatives";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
-- 
GitLab