diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b22e72de8f7f350d86ea73b4c357b151aaed7861
--- /dev/null
+++ b/README.md
@@ -0,0 +1,21 @@
+# Haskell Horizon Platform
+
+[horizon-haskell.net](https://horizon-haskell.net).
+
+Horizon is a haskell package set targetting new builds of GHC.
+
+## Updating the package set
+
+The package set is generated from the `manifest.dhall` using the following command:
+
+```
+nix run .#horizon-gen-nix
+```
+
+This will generate both the `pkgs` folder and the `overlay.nix`. If you want to
+regenerate a particular package in `pkgs`, delete that file from `pkgs`. To
+regenerate the entire package set from scratch, delete the `pkgs` folder.
+
+If you need to do additional manual overrides to the nix code, such as
+`addPkgconfigDepends`, edit the `configuration.nix` overlay, which is applied
+after `overlay.nix`.
diff --git a/configuration.nix b/configuration.nix
new file mode 100644
index 0000000000000000000000000000000000000000..24205ebcc7d44c0a29c9770a424837e88d31abbc
--- /dev/null
+++ b/configuration.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+
+with pkgs.haskell.lib;
+
+final: prev: {
+
+  saltine = addPkgconfigDepend prev.saltine pkgs.libsodium;
+
+}
diff --git a/flake.lock b/flake.lock
index 4dc80c1fcc051a2444e816a003b86b07fac407e3..60539b07ccb4646ad9e354e3d812a7b9c2abfd80 100644
--- a/flake.lock
+++ b/flake.lock
@@ -33,6 +33,22 @@
         "type": "github"
       }
     },
+    "cabal2nix": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1665402713,
+        "narHash": "sha256-eUk0m/24UaYi75mg9C36WK7PVnosKbMEIafkRa6npno=",
+        "owner": "NixOS",
+        "repo": "cabal2nix",
+        "rev": "b3ae6f9240d07ba103f1eb7ab22f6055e9cdb7dc",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "repo": "cabal2nix",
+        "type": "github"
+      }
+    },
     "cache-effectful": {
       "flake": false,
       "locked": {
@@ -167,6 +183,8 @@
     "flake-parts": {
       "inputs": {
         "nixpkgs": [
+          "horizon-gen-nix",
+          "horizon-platform",
           "nixpkgs"
         ]
       },
@@ -199,6 +217,65 @@
       }
     },
     "flake-utils_2": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_3": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "id": "flake-utils",
+        "type": "indirect"
+      }
+    },
+    "flake-utils_4": {
+      "locked": {
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_5": {
+      "locked": {
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_6": {
       "locked": {
         "lastModified": 1644229661,
         "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
@@ -296,9 +373,75 @@
         "type": "github"
       }
     },
-    "lint-utils": {
+    "horizon-gen-nix": {
       "inputs": {
+        "cabal2nix": "cabal2nix",
         "flake-utils": "flake-utils_2",
+        "horizon-platform": "horizon-platform",
+        "lint-utils": "lint-utils_2",
+        "nixpkgs": "nixpkgs_3"
+      },
+      "locked": {
+        "lastModified": 1665673695,
+        "narHash": "sha256-NMhaJU6hKNmWsoQWb36wH7q4hZToJLNDw1+hd3ltPcE=",
+        "ref": "refs/heads/master",
+        "rev": "f5c7fcd862ee0a7eb1f0cd1a7f00d424541629cf",
+        "revCount": 9,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
+      }
+    },
+    "horizon-platform": {
+      "inputs": {
+        "Cabal": "Cabal",
+        "all-cabal-hashes": "all-cabal-hashes",
+        "cache-effectful": "cache-effectful",
+        "cborg": "cborg",
+        "compactable": "compactable",
+        "cryptohash-sha1": "cryptohash-sha1",
+        "doctest": "doctest",
+        "double-conversion": "double-conversion",
+        "ed25519": "ed25519",
+        "ema": "ema",
+        "flake-parts": "flake-parts",
+        "flake-utils": "flake-utils_3",
+        "ghc-exactprint": "ghc-exactprint",
+        "haskell-src-meta": "haskell-src-meta",
+        "hedgehog-golden": "hedgehog-golden",
+        "hlint": "hlint",
+        "hnix": "hnix",
+        "lint-utils": "lint-utils",
+        "memory": "memory",
+        "nixpkgs": "nixpkgs_2",
+        "polysemy": "polysemy",
+        "quickcheck-dynamic": "quickcheck-dynamic",
+        "servant": "servant",
+        "sydtest": "sydtest",
+        "tasty": "tasty",
+        "tasty-hedgehog": "tasty-hedgehog",
+        "unicode-data": "unicode-data"
+      },
+      "locked": {
+        "lastModified": 1665142826,
+        "narHash": "sha256-KizqMUsjDrL7OhG41XVtKN4abWbaAPGT4cZxovgJIZ4=",
+        "ref": "refs/heads/master",
+        "rev": "bfde994492bcbbb732223051be69cca2311ef79d",
+        "revCount": 122,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
+      }
+    },
+    "lint-utils": {
+      "inputs": {
+        "flake-utils": "flake-utils_4",
         "nixpkgs": "nixpkgs"
       },
       "locked": {
@@ -315,6 +458,47 @@
         "url": "https://gitlab.homotopic.tech/nix/lint-utils"
       }
     },
+    "lint-utils_2": {
+      "inputs": {
+        "flake-utils": "flake-utils_5",
+        "nixpkgs": [
+          "horizon-gen-nix",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1655192403,
+        "narHash": "sha256-XyKDvRGDh8VXA6zN8DUTnDaTMrk0MxMKg70MaAX1A2Y=",
+        "ref": "refs/heads/master",
+        "rev": "a7ae54afdc4c05a5aabf202d5a76d02705eb6147",
+        "revCount": 28,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      }
+    },
+    "lint-utils_3": {
+      "inputs": {
+        "flake-utils": "flake-utils_6",
+        "nixpkgs": "nixpkgs_4"
+      },
+      "locked": {
+        "lastModified": 1655192403,
+        "narHash": "sha256-XyKDvRGDh8VXA6zN8DUTnDaTMrk0MxMKg70MaAX1A2Y=",
+        "ref": "master",
+        "rev": "a7ae54afdc4c05a5aabf202d5a76d02705eb6147",
+        "revCount": 28,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      }
+    },
     "memory": {
       "flake": false,
       "locked": {
@@ -364,6 +548,54 @@
         "type": "github"
       }
     },
+    "nixpkgs_3": {
+      "locked": {
+        "lastModified": 1665197809,
+        "narHash": "sha256-dRUzv/zNYV2EYtnxFG31pPBk0nErT+MBTu6ZJHm1o2A=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "7b06206fa24198912cea58de690aa4943f238fbf",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_4": {
+      "locked": {
+        "lastModified": 1644525281,
+        "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_5": {
+      "locked": {
+        "lastModified": 1664556388,
+        "narHash": "sha256-04xEtpc0AqLhgDtJ/kT+aZGPrXOI+1a3obf6iWrJQXs=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "511213e0ece88be30a4bd73488f7d1cd85879654",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "polysemy": {
       "flake": false,
       "locked": {
@@ -399,33 +631,10 @@
     },
     "root": {
       "inputs": {
-        "Cabal": "Cabal",
-        "all-cabal-hashes": "all-cabal-hashes",
-        "cache-effectful": "cache-effectful",
-        "cborg": "cborg",
-        "compactable": "compactable",
-        "cryptohash-sha1": "cryptohash-sha1",
-        "doctest": "doctest",
-        "double-conversion": "double-conversion",
-        "ed25519": "ed25519",
-        "ema": "ema",
-        "flake-parts": "flake-parts",
         "flake-utils": "flake-utils",
-        "ghc-exactprint": "ghc-exactprint",
-        "haskell-src-meta": "haskell-src-meta",
-        "hedgehog-golden": "hedgehog-golden",
-        "hlint": "hlint",
-        "hnix": "hnix",
-        "lint-utils": "lint-utils",
-        "memory": "memory",
-        "nixpkgs": "nixpkgs_2",
-        "polysemy": "polysemy",
-        "quickcheck-dynamic": "quickcheck-dynamic",
-        "servant": "servant",
-        "sydtest": "sydtest",
-        "tasty": "tasty",
-        "tasty-hedgehog": "tasty-hedgehog",
-        "unicode-data": "unicode-data"
+        "horizon-gen-nix": "horizon-gen-nix",
+        "lint-utils": "lint-utils_3",
+        "nixpkgs": "nixpkgs_5"
       }
     },
     "servant": {
diff --git a/flake.nix b/flake.nix
index 607fa8937c547afeb143cebc7d495c3f8ae7ae78..ae0006e440a73e1ff87ea0b8cda8a31b88b00683 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,110 +1,17 @@
 {
   inputs = {
-    Cabal = {
-      url = "git+https://gitlab.haskell.org/ghc/packages/Cabal";
-      flake = false;
-    };
-    all-cabal-hashes = {
-      url = "github:commercialhaskell/all-cabal-hashes?ref=hackage";
-      flake = false;
-    };
-    cache-effectful = {
-      url = "github:haskell-effectful/cache-effectful";
-      flake = false;
-    };
-    cborg = {
-      url = "github:parsonsmatt/cborg/05ca2063ff631667699bffbeee3a4a076943b905";
-      flake = false;
-    };
-    compactable = {
-      url = "gitlab:fresheyeball/Compactable/master";
-      flake = false;
-    };
-    cryptohash-sha1 = {
-      url = "github:haskell-hvr/cryptohash-sha1";
-      flake = false;
-    };
-    doctest = {
-      url = "github:sol/doctest/4eb97c213acf7abe965a3a1b67397199ed155f3c";
-      flake = false;
-    };
-    double-conversion = {
-      url = "github:haskell/double-conversion";
-      flake = false;
-    };
-    ed25519 = {
-      url = "git+https://gitlab.homotopic.tech/horizon/adopted/ed25519";
-      flake = false;
-    };
-    ema = {
-      url = "github:EmaApps/ema";
-      flake = false;
-    };
-    flake-parts.url = "github:hercules-ci/flake-parts";
-    flake-parts.inputs.nixpkgs.follows = "nixpkgs";
-    ghc-exactprint = {
-      url = "github:alanz/ghc-exactprint?ref=ghc-9.4";
-      flake = false;
-    };
-    haskell-src-meta = {
-      url = "github:parsonsmatt/haskell-src-meta?ref=matt/support-new-th";
-      flake = false;
-    };
-    hedgehog-golden = {
-      url = "github:maybe-hedgehog-later/hedgehog-golden";
-      flake = false;
-    };
-    hlint = {
-      url = "github:ndmitchell/hlint";
-      flake = false;
-    };
-    hnix = {
-      url = "github:milloni/hnix?ref=milloni/horizon";
-      flake = false;
-    };
     lint-utils.url = "git+https://gitlab.homotopic.tech/nix/lint-utils";
-    memory = {
-      url = "github:parsonsmatt/hs-memory/0f760c8ba0b7d5aacf04a7294e87e5e4fff53f40";
-      flake = false;
-    };
     nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
-    polysemy = {
-      url = "github:locallycompact/polysemy?ref=ghc-942";
-      flake = false;
-    };
-    quickcheck-dynamic = {
-      url = "github:input-output-hk/quickcheck-dynamic";
-      flake = false;
-    };
-    servant = {
-      url = "github:TeofilC/servant?ref=ghc-9.4";
-      flake = false;
-    };
-    sydtest = {
-      url = "github:NorfairKing/sydtest";
-      flake = false;
-    };
-    tasty = {
-      url = "github:UnkindPartition/tasty";
-      flake = false;
-    };
-    tasty-hedgehog = {
-      url = "github:locallycompact/tasty-hedgehog";
-      flake = false;
-    };
-    unicode-data = {
-      url = "github:composewell/unicode-data";
-      flake = false;
-    };
+    horizon-gen-nix.url = "git+https://gitlab.homotopic.tech/horizon/horizon-gen-nix";
   };
-  outputs = inputs@{ self, nixpkgs, flake-utils, lint-utils, ... }:
+  outputs = inputs@{ self, nixpkgs, flake-utils, horizon-gen-nix, lint-utils, ... }:
     flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
       let
-        overlay-ach = final: prev: { all-cabal-hashes = inputs.all-cabal-hashes; };
-        pkgs = import nixpkgs { inherit system; overlays = [ overlay-ach ]; };
+        pkgs = import nixpkgs { inherit system; };
         overrides-hp = import ./overlay.nix { inherit inputs pkgs; };
+        configuration = import ./configuration.nix { inherit inputs pkgs; };
         hp = pkgs.haskell.packages.ghc942.override {
-          overrides = overrides-hp;
+          overrides = pkgs.lib.composeManyExtensions [ overrides-hp configuration ];
         };
         hp' = pkgs.lib.filterAttrs
           (n: v: v != null
@@ -115,7 +22,14 @@
           hp;
       in
       {
+        apps = {
+          horizon-gen-nix = {
+            type = "app";
+            program = "${horizon-gen-nix.outputs.packages.x86_64-linux.default}/bin/horizon-gen-nix";
+          };
+        };
         checks = {
+          dhall-format = lint-utils.outputs.linters.x86_64-linux.dhall-format ./.;
           nixpkgs-fmt = lint-utils.outputs.linters.x86_64-linux.nixpkgs-fmt ./.;
         };
         overrides.ghc942 = overrides-hp;
diff --git a/manifest.dhall b/manifest.dhall
new file mode 100644
index 0000000000000000000000000000000000000000..88cbe07b0c75b9b2b319c248cb48361543f63992
--- /dev/null
+++ b/manifest.dhall
@@ -0,0 +1,344 @@
+let HsSrc =
+      < FromHackage : { name : Text, version : Text }
+      | FromGit :
+          { url : Text, revision : Optional Text, subdir : Optional Text }
+      >
+
+let Modifiers =
+      { Type = { doJailbreak : Bool, doCheck : Bool }
+      , default = { doJailbreak = True, doCheck = False }
+      }
+
+let Attr = λ(a : Type) → { mapKey : Text, mapValue : a }
+
+let HsPkg =
+      { Type = { source : HsSrc, modifiers : Modifiers.Type }
+      , default.modifiers = Modifiers.default
+      }
+
+let callHackage
+    : ∀(name : Text) → ∀(version : Text) → Attr HsPkg.Type
+    = λ(name : Text) →
+      λ(version : Text) →
+        { mapKey = name
+        , mapValue = HsPkg::{ source = HsSrc.FromHackage { name, version } }
+        }
+
+let callCabal2nix
+    : ∀(name : Text) →
+      ∀(url : Text) →
+      ∀(revision : Optional Text) →
+      ∀(subdir : Optional Text) →
+        Attr HsPkg.Type
+    = λ(name : Text) →
+      λ(url : Text) →
+      λ(revision : Optional Text) →
+      λ(subdir : Optional Text) →
+        { mapKey = name
+        , mapValue = HsPkg::{ source = HsSrc.FromGit { url, revision, subdir } }
+        }
+
+in  [ callHackage "Cabal" "3.8.1.0"
+    , callCabal2nix
+        "Cabal-QuickCheck"
+        "https://gitlab.haskell.org/ghc/packages/Cabal"
+        (None Text)
+        (Some "Cabal-QuickCheck")
+    , callCabal2nix
+        "Cabal-described"
+        "https://gitlab.haskell.org/ghc/packages/Cabal"
+        (None Text)
+        (Some "Cabal-described")
+    , callCabal2nix
+        "Cabal-syntax"
+        "https://gitlab.haskell.org/ghc/packages/Cabal"
+        (None Text)
+        (Some "Cabal-syntax")
+    , callCabal2nix
+        "Cabal-syntax"
+        "https://gitlab.haskell.org/ghc/packages/Cabal"
+        (None Text)
+        (Some "Cabal-syntax")
+    , callCabal2nix
+        "Cabal-tree-diff"
+        "https://gitlab.haskell.org/ghc/packages/Cabal"
+        (None Text)
+        (Some "Cabal-tree-diff")
+    , callHackage "ChasingBottoms" "1.3.1.12"
+    , callHackage "HTTP" "4000.4.1"
+    , callHackage "JuicyPixels" "3.3.8"
+    , callHackage "OneTuple" "0.3.1"
+    , callHackage "OpenGLRaw" "3.3.4.1"
+    , callHackage "aeson" "2.1.0.0"
+    , callHackage "ansi-terminal" "0.11.3"
+    , callHackage "apecs" "0.9.4"
+    , callHackage "assoc" "1.0.2"
+    , callHackage "async" "2.2.4"
+    , callHackage "autodocodec-yaml" "0.2.0.2"
+    , callHackage "basement" "0.0.15"
+    , callHackage "base64" "0.4.2.4"
+    , callHackage "base-compat" "0.12.2"
+    , callHackage "base-compat-batteries" "0.12.2"
+    , callHackage "bimap" "0.5.0"
+    , callHackage "binary-orphans" "1.0.3"
+    , callHackage "blaze-markup" "0.8.2.8"
+    , callHackage "boring" "0.2"
+    , callHackage "bsb-http-chunked" "0.0.0.4"
+    , callHackage "brick" "1.3"
+    , callHackage "bytes" "0.17.2"
+    , callHackage "cabal-doctest" "1.0.9"
+    , callHackage "cabal-install" "3.8.1.0"
+    , callHackage "cabal-install-solver" "3.8.1.0"
+    , callHackage "cereal" "0.5.8.3"
+    , callHackage "cborg" "0.2.8.0"
+    , callHackage "cborg-json" "0.2.5.0"
+    , callHackage "citeproc" "0.8.0.1"
+    , callHackage "co-log-core" "0.3.1.0"
+    , callHackage "comonad" "5.0.8"
+    , callHackage "compact" "0.2.0.0"
+    , callHackage "compactable" "0.2.0.0"
+    , callHackage "composite-base" "0.8.1.0"
+    , callHackage "composite-cassava" "0.0.3.1"
+    , callHackage "composite-dhall" "0.1.0.1"
+    , callHackage "composite-lens-extra" "0.1.0.0"
+    , callHackage "composite-tuple" "0.1.2.0"
+    , callHackage "conduit" "1.3.4.2"
+    , callHackage "conduit-extra" "1.3.6"
+    , callHackage "config-ini" "0.2.5.0"
+    , callHackage "constraints" "0.13.4"
+    , callHackage "cryptonite" "0.30"
+    , callHackage "cryptohash-sha1" "0.11.101.0"
+    , callHackage "data-fix" "0.3.2"
+    , callHackage "dec" "0.0.5"
+    , callHackage "dhall" "1.41.2"
+    , callHackage "dimensional" "1.5"
+    , callCabal2nix
+        "doctest"
+        "https://github.com/sol/doctest"
+        (Some "4eb97c213acf7abe965a3a1b67397199ed155f3c")
+        (None Text)
+    , callCabal2nix
+        "double-conversion"
+        "https://github.com/haskell/double-conversion"
+        (None Text)
+        (None Text)
+    , callCabal2nix
+        "ed25519"
+        "https://gitlab.homotopic.tech/horizon/adopted/ed25519"
+        (None Text)
+        (None Text)
+    , callHackage "email-validate" "2.3.2.16"
+    , callCabal2nix
+        "ema"
+        "https://github.com/EmaApps/ema"
+        (None Text)
+        (None Text)
+    , callCabal2nix
+        "effectful-cache"
+        "https://github.com/haskell-effectful/cache-effectful"
+        (None Text)
+        (None Text)
+    , callHackage "effectful-core" "2.1.0.0"
+    , callHackage "effectful-th" "1.0.0.0"
+    , callHackage "effectful" "2.1.0.0"
+    , callHackage "extra" "1.7.12"
+    , callHackage "fcf-containers" "0.7.1"
+    , callHackage "finite-field" "0.10.0"
+    , callHackage "first-class-families" "0.8.0.1"
+    , callHackage "foldl" "1.4.12"
+    , callHackage "fourmolu" "0.8.2.0"
+    , callHackage "foundation" "0.0.29"
+    , callHackage "generic-lens-core" "2.2.1.0"
+    , callHackage "generic-lens-lite" "0.1"
+    , callHackage "generic-optics-lite" "0.1"
+    , callHackage "generic-optics" "2.2.1.0"
+    , callHackage "generics-sop" "0.5.1.2"
+    , callHackage "genvalidity-aeson" "1.0.0.1"
+    , callHackage "genvalidity-bytestring" "1.0.0.1"
+    , callHackage "genvalidity-hspec" "1.0.0.2"
+    , callHackage "genvalidity-scientific" "1.0.0.0"
+    , callHackage "genvalidity-sydtest-aeson" "1.0.0.0"
+    , callHackage "genvalidity-text" "1.0.0.1"
+    , callHackage "genvalidity-unordered-containers" "1.0.0.0"
+    , callHackage "genvalidity-vector" "1.0.0.0"
+    , callHackage "ghc-byteorder" "4.11.0.0.10"
+    , callHackage "ghc-check" "0.5.0.8"
+    , callHackage "ghc-exactprint" "1.6.0"
+    , callHackage "ghc-lib-parser" "9.4.2.20220822"
+    , callHackage "ghc-lib-parser-ex" "9.4.0.0"
+    , callHackage "ghc-paths" "0.1.0.12"
+    , callHackage "ghc-tcplugins-extra" "0.4.3"
+    , callHackage "hackage-security" "0.6.2.2"
+    , callHackage "hashable" "1.4.1.0"
+    , callHackage "hashing" "0.1.0.1"
+    , callHackage "hashtables" "1.3"
+    , callHackage "haskell-src-meta" "0.8.11"
+    , callHackage "hedgehog" "1.2"
+    , callCabal2nix
+        "hedgehog-golden"
+        "https://github.com/maybe-hedgehog-later/hedgehog-golden"
+        (None Text)
+        (None Text)
+    , callHackage "hie-compat" "0.3.0.0"
+    , callHackage "hiedb" "0.4.2.0"
+    , callHackage "hlint" "3.5"
+    , callHackage "hourglass" "0.2.12"
+    , callCabal2nix
+        "hnix"
+        "https://github.com/milloni/hnix"
+        (Some "005568ee024eabee129d9cf4ca331c6da260610b")
+        (None Text)
+    , callHackage "hslua-aeson" "2.2.1"
+    , callHackage "hspec" "2.10.3"
+    , callHackage "hspec-core" "2.10.0.1"
+    , callHackage "hspec-discover" "2.10.0.1"
+    , callHackage "hspec-meta" "2.9.3"
+    , callHackage "http-client" "0.7.13.1"
+    , callHackage "http-date" "0.0.11"
+    , callHackage "http-types" "0.12.3"
+    , callHackage "http2" "3.0.3"
+    , callHackage "incipit-base" "0.3.0.0"
+    , callHackage "incipit-core" "0.3.0.0"
+    , callHackage "indexed-traversable" "0.1.2"
+    , callHackage "indexed-traversable-instances" "0.1.1.1"
+    , callHackage "integer-logarithms" "1.0.3.1"
+    , callHackage "invariant" "0.6"
+    , callHackage "iproute" "1.7.12"
+    , callHackage "lens" "5.2"
+    , callHackage "lens-aeson" "1.2.1"
+    , callHackage "lens-family-th" "0.5.2.1"
+    , callHackage "lifted-async" "0.10.2.1"
+    , callHackage "linear" "1.21.10"
+    , callHackage "lsp-types" "1.6.0.0"
+    , callHackage "lsp" "1.6.0.0"
+    , callHackage "lucid" "2.11.1"
+    , callHackage "net-mqtt" "0.8.2.2"
+    , callHackage "memory" "0.18.0"
+    , callHackage "monoid-subclasses" "1.1.3"
+    , callHackage "network-byte-order" "0.1.6"
+    , callHackage "newtype-generics" "0.6.2"
+    , callHackage "nothunks" "0.1.3"
+    , callHackage "optics-core" "0.4.1"
+    , callHackage "optics-extra" "0.4.2.1"
+    , callHackage "optics-th" "0.4.1"
+    , callHackage "optics" "0.4.2"
+    , callHackage "pandoc" "2.19.2"
+    , callHackage "parallel" "3.2.2.0"
+    , callHackage "pcg-random" "0.1.3.7"
+    , callHackage "polysemy" "1.7.1.0"
+    , callHackage "polysemy-extra" "0.2.1.0"
+    , callHackage "polysemy-kvstore" "0.1.3.0"
+    , callHackage "polysemy-methodology" "0.2.1.0"
+    , callHackage "polysemy-path" "0.2.1.0"
+    , callCabal2nix
+        "polysemy-plugin"
+        "https://github.com/locallycompact/polysemy"
+        (Some "5942a398ef02bbbe94bedd68f8628390ed223107")
+        (Some "polysemy-plugin")
+    , callHackage "polysemy-several" "0.1.1.0"
+    , callHackage "polysemy-time" "0.5.1.0"
+    , callHackage "polysemy-vinyl" "0.1.5.0"
+    , callHackage "polysemy-zoo" "0.8.0.0"
+    , callHackage "postgresql-libpq" "0.9.4.3"
+    , callHackage "postgresql-simple" "0.6.4"
+    , callHackage "pretty-simple" "4.1.1.0"
+    , callHackage "prettyprinter-ansi-terminal" "1.1.3"
+    , callHackage "primitive" "0.7.4.0"
+    , callHackage "proteaaudio-sdl" "0.9.2"
+    , callHackage "quickcheck-dynamic" "2.0.0"
+    , callHackage "quickcheck-instances" "0.3.28"
+    , callHackage "rebase" "1.16"
+    , callHackage "rerebase" "1.15.0.3"
+    , callHackage "relude" "1.1.0.0"
+    , callHackage "retry" "0.9.3.0"
+    , callHackage "rope-utf16-splay" "0.4.0.0"
+    , callHackage "safe-coloured-text" "0.2.0.1"
+    , callHackage "saltine" "0.1.1.1"
+    , callHackage "scotty" "0.12"
+    , callHackage "scientific" "0.3.7.0"
+    , callHackage "sdl2" "2.5.3.3"
+    , callHackage "sdl2-gfx" "0.3.0.0"
+    , callHackage "sdl2-image" "2.1.0.0"
+    , callHackage "sdl2-mixer" "1.2.0.0"
+    , callHackage "sdl2-ttf" "2.1.3"
+    , callHackage "semialign" "1.2.0.1"
+    , callHackage "serialise" "0.2.6.0"
+    , callCabal2nix
+        "servant"
+        "https://github.com/TeofilC/servant"
+        (Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
+        (Some "servant")
+    , callCabal2nix
+        "servant-client-core"
+        "https://github.com/TeofilC/servant"
+        (Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
+        (Some "servant-client-core")
+    , callCabal2nix
+        "servant-client"
+        "https://github.com/TeofilC/servant"
+        (Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
+        (Some "servant-client")
+    , callCabal2nix
+        "servant-foreign"
+        "https://github.com/TeofilC/servant"
+        (Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
+        (Some "servant-foreign")
+    , callHackage "servant-lucid" "0.9.0.5"
+    , callHackage "servant-multipart" "0.12.1"
+    , callHackage "servant-multipart-api" "0.12.1"
+    , callHackage "shake" "0.19.6"
+    , callHackage "shelly" "1.10.0"
+    , callHackage "singleton-bool" "0.1.6"
+    , callHackage "singletons" "3.0.2"
+    , callHackage "some" "1.0.4"
+    , callHackage "sop-core" "0.5.0.1"
+    , callHackage "split" "0.2.3.3"
+    , callHackage "streaming-commons" "0.2.2.4"
+    , callHackage "string-interpolate" "0.3.1.2"
+    , callHackage "string-qq" "0.0.4"
+    , callHackage "stylish-haskell" "0.14.2.0"
+    , callHackage "syb" "0.7.2.1"
+    , callHackage "sydtest" "0.12.0.1"
+    , callHackage "sydtest-discover" "0.0.0.2"
+    , callCabal2nix
+        "tasty"
+        "https://github.com/UnkindPartition/tasty"
+        (None Text)
+        (Some "core")
+    , callHackage "tasty-discover" "5.0.0"
+    , callCabal2nix
+        "tasty-hedgehog"
+        "https://github.com/locallycompact/tasty-hedgehog"
+        (None Text)
+        (None Text)
+    , callCabal2nix
+        "tasty-hunit"
+        "https://github.com/UnkindPartition/tasty"
+        (None Text)
+        (Some "hunit")
+    , callHackage "tasty-wai" "0.1.2.0"
+    , callHackage "text-zipper" "0.12"
+    , callHackage "these" "1.1.1.1"
+    , callHackage "th-extras" "0.0.0.6"
+    , callHackage "th-lift-instances" "0.1.20"
+    , callHackage "tidal" "1.8.1"
+    , callHackage "time-compat" "1.9.6.1"
+    , callHackage "type-errors-pretty" "0.0.1.2"
+    , callHackage "type-errors" "0.2.0.0"
+    , callHackage "type-equality" "1"
+    , callHackage "unicode-collation" "0.1.3.2"
+    , callHackage "unicode-data" "0.4.0"
+    , callHackage "unicode-transforms" "0.4.0.1"
+    , callHackage "unordered-containers" "0.2.19.1"
+    , callHackage "vault" "0.3.1.5"
+    , callHackage "vector" "0.13.0.0"
+    , callHackage "vector-algorithms" "0.9.0.1"
+    , callHackage "vinyl" "0.14.3"
+    , callHackage "vty" "5.37"
+    , callHackage "wai-middleware-static" "0.9.2"
+    , callHackage "warp" "3.3.22"
+    , callHackage "warp-tls" "3.3.3"
+    , callHackage "witherable" "0.4.2"
+    , callHackage "with-utf8" "1.0.2.3"
+    , callHackage "xml-conduit" "1.9.1.1"
+    ]
diff --git a/overlay.nix b/overlay.nix
index 4d5417a89a38a3398293f40a58a156641c0568da..a6147d953bb4bdec917bafc2cc30f3b9db95649b 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1,456 +1,448 @@
-{ inputs, pkgs }:
-final: prev: with pkgs.haskell.lib; {
-
-  Cabal = prev.callHackage "Cabal" "3.8.1.0" { };
-
-  Cabal-QuickCheck = prev.callCabal2nix "Cabal-QuickCheck" (inputs.Cabal + /Cabal-QuickCheck) { };
+{ pkgs, ... }:
 
-  Cabal-described = prev.callCabal2nix "Cabal-described" (inputs.Cabal + /Cabal-described) { };
-
-  Cabal-syntax = prev.callHackage "Cabal-syntax" "3.8.1.0" { };
+final: prev: with pkgs.haskell.lib; {
+  Cabal = prev.callPackage (./pkgs/Cabal.nix) { };
 
-  Cabal-tree-diff = prev.callCabal2nix "Cabal-tree-diff" (inputs.Cabal + /Cabal-tree-diff) { };
+  Cabal-QuickCheck = prev.callPackage (./pkgs/Cabal-QuickCheck.nix) { };
 
-  ChasingBottoms = prev.callHackage "ChasingBottoms" "1.3.1.12" { };
+  Cabal-described = prev.callPackage (./pkgs/Cabal-described.nix) { };
 
-  HTTP = dontCheck (prev.callHackage "HTTP" "4000.4.1" { });
+  Cabal-syntax = prev.callPackage (./pkgs/Cabal-syntax.nix) { };
 
-  JuicyPixels = prev.callHackage "JuicyPixels" "3.3.8" { };
+  Cabal-tree-diff = prev.callPackage (./pkgs/Cabal-tree-diff.nix) { };
 
-  OneTuple = prev.callHackage "OneTuple" "0.3.1" { };
+  ChasingBottoms = prev.callPackage (./pkgs/ChasingBottoms.nix) { };
 
-  OpenGLRaw = prev.callHackage "OpenGLRaw" "3.3.4.1" { };
+  HTTP = prev.callPackage (./pkgs/HTTP.nix) { };
 
-  aeson = prev.callHackage "aeson" "2.1.0.0" { };
+  JuicyPixels = prev.callPackage (./pkgs/JuicyPixels.nix) { };
 
-  ansi-terminal = prev.callHackage "ansi-terminal" "0.11.3" { };
+  OneTuple = prev.callPackage (./pkgs/OneTuple.nix) { };
 
-  apecs = prev.callHackage "apecs" "0.9.4" { };
+  OpenGLRaw = prev.callPackage (./pkgs/OpenGLRaw.nix) { };
 
-  assoc = prev.callHackage "assoc" "1.0.2" { };
+  aeson = prev.callPackage (./pkgs/aeson.nix) { };
 
-  async = prev.callHackage "async" "2.2.4" { };
+  ansi-terminal = prev.callPackage (./pkgs/ansi-terminal.nix) { };
 
-  autodocodec-yaml = prev.callHackage "autodocodec-yaml" "0.2.0.2" { };
+  apecs = prev.callPackage (./pkgs/apecs.nix) { };
 
-  basement = prev.callHackage "basement" "0.0.15" { };
+  assoc = prev.callPackage (./pkgs/assoc.nix) { };
 
-  base64 = dontCheck (doJailbreak (prev.callHackage "base64" "0.4.2.4" { }));
+  async = prev.callPackage (./pkgs/async.nix) { };
 
-  base-compat = prev.callHackage "base-compat" "0.12.2" { };
+  autodocodec-yaml = prev.callPackage (./pkgs/autodocodec-yaml.nix) { };
 
-  base-compat-batteries = prev.callHackage "base-compat-batteries" "0.12.2" { };
+  base-compat = prev.callPackage (./pkgs/base-compat.nix) { };
 
-  base-orphans = prev.callHackage "base-orphans" "0.8.7" { };
+  base-compat-batteries = prev.callPackage (./pkgs/base-compat-batteries.nix) { };
 
-  bimap = prev.callHackage "bimap" "0.5.0" { };
+  base64 = prev.callPackage (./pkgs/base64.nix) { };
 
-  binary-orphans = prev.callHackage "binary-orphans" "1.0.3" { };
+  basement = prev.callPackage (./pkgs/basement.nix) { };
 
-  blaze-markup = prev.callHackage "blaze-markup" "0.8.2.8" { };
+  bimap = prev.callPackage (./pkgs/bimap.nix) { };
 
-  boring = doJailbreak (prev.callHackage "boring" "0.2" { });
+  binary-orphans = prev.callPackage (./pkgs/binary-orphans.nix) { };
 
-  bsb-http-chunked = dontCheck (prev.callHackage "bsb-http-chunked" "0.0.0.4" { });
+  blaze-markup = prev.callPackage (./pkgs/blaze-markup.nix) { };
 
-  brick = prev.callHackage "brick" "1.3" { };
+  boring = prev.callPackage (./pkgs/boring.nix) { };
 
-  bytes = prev.callHackage "bytes" "0.17.2" { };
+  brick = prev.callPackage (./pkgs/brick.nix) { };
 
-  cabal-doctest = prev.callHackage "cabal-doctest" "1.0.9" { };
+  bsb-http-chunked = prev.callPackage (./pkgs/bsb-http-chunked.nix) { };
 
-  cabal-install = doJailbreak (dontCheck (prev.callHackage "cabal-install" "3.8.1.0" { }));
+  bytes = prev.callPackage (./pkgs/bytes.nix) { };
 
-  cabal-install-solver = doJailbreak (prev.callHackage "cabal-install-solver" "3.8.1.0" { });
+  cabal-doctest = prev.callPackage (./pkgs/cabal-doctest.nix) { };
 
-  cborg = doJailbreak (prev.callCabal2nix "cborg" (inputs.cborg + /cborg) { });
+  cabal-install = prev.callPackage (./pkgs/cabal-install.nix) { };
 
-  cborg-json = doJailbreak (prev.callCabal2nix "cborg-json" (inputs.cborg + /cborg-json) { });
+  cabal-install-solver = prev.callPackage (./pkgs/cabal-install-solver.nix) { };
 
-  cereal = prev.callHackage "cereal" "0.5.8.3" { };
+  cborg = prev.callPackage (./pkgs/cborg.nix) { };
 
-  citeproc = prev.callHackage "citeproc" "0.8.0.1" { };
+  cborg-json = prev.callPackage (./pkgs/cborg-json.nix) { };
 
-  co-log-core = doJailbreak (dontCheck (prev.callHackage "co-log-core" "0.3.1.0" { }));
+  cereal = prev.callPackage (./pkgs/cereal.nix) { };
 
-  comonad = prev.callHackage "comonad" "5.0.8" { };
+  citeproc = prev.callPackage (./pkgs/citeproc.nix) { };
 
-  compactable = doJailbreak (dontCheck (prev.callCabal2nix "compactable" inputs.compactable { }));
+  co-log-core = prev.callPackage (./pkgs/co-log-core.nix) { };
 
-  compact = doJailbreak (prev.callHackage "compact" "0.2.0.0" { });
+  comonad = prev.callPackage (./pkgs/comonad.nix) { };
 
-  composite-cassava = doJailbreak (prev.callHackage "composite-cassava" "0.0.3.1" { });
+  compact = prev.callPackage (./pkgs/compact.nix) { };
 
-  composite-base = doJailbreak (prev.callHackage "composite-base" "0.8.1.0" { });
+  compactable = prev.callPackage (./pkgs/compactable.nix) { };
 
-  composite-dhall = prev.callHackage "composite-dhall" "0.1.0.1" { };
+  composite-base = prev.callPackage (./pkgs/composite-base.nix) { };
 
-  composite-lens-extra = prev.callHackage "composite-lens-extra" "0.1.0.0" { };
+  composite-cassava = prev.callPackage (./pkgs/composite-cassava.nix) { };
 
-  composite-tuple = prev.callHackage "composite-tuple" "0.1.2.0" { };
+  composite-dhall = prev.callPackage (./pkgs/composite-dhall.nix) { };
 
-  conduit = dontCheck (prev.callHackage "conduit" "1.3.4.2" { });
+  composite-lens-extra = prev.callPackage (./pkgs/composite-lens-extra.nix) { };
 
-  conduit-extra = dontCheck (prev.callHackage "conduit-extra" "1.3.6" { });
+  composite-tuple = prev.callPackage (./pkgs/composite-tuple.nix) { };
 
-  config-ini = prev.callHackage "config-ini" "0.2.5.0" { };
+  conduit = prev.callPackage (./pkgs/conduit.nix) { };
 
-  constraints = doJailbreak (prev.callHackage "constraints" "0.13.4" { });
+  conduit-extra = prev.callPackage (./pkgs/conduit-extra.nix) { };
 
-  cryptohash-sha1 = prev.callCabal2nix "cryptohash-sha1" inputs.cryptohash-sha1 { };
+  config-ini = prev.callPackage (./pkgs/config-ini.nix) { };
 
-  cryptonite = prev.callHackage "cryptonite" "0.30" { };
+  constraints = prev.callPackage (./pkgs/constraints.nix) { };
 
-  data-fix = doJailbreak (prev.callHackage "data-fix" "0.3.2" { });
+  cryptohash-sha1 = prev.callPackage (./pkgs/cryptohash-sha1.nix) { };
 
-  dec = doJailbreak (prev.callHackage "dec" "0.0.5" { });
+  cryptonite = prev.callPackage (./pkgs/cryptonite.nix) { };
 
-  dhall = doJailbreak (prev.callHackage "dhall" "1.41.2" { });
+  data-fix = prev.callPackage (./pkgs/data-fix.nix) { };
 
-  dimensional = dontCheck (prev.callHackage "dimensional" "1.5" { });
+  dec = prev.callPackage (./pkgs/dec.nix) { };
 
-  doctest = dontCheck (prev.callCabal2nix "doctest" inputs.doctest { });
+  dhall = prev.callPackage (./pkgs/dhall.nix) { };
 
-  double-conversion = prev.callCabal2nix "double-conversion" inputs.double-conversion { };
+  dimensional = prev.callPackage (./pkgs/dimensional.nix) { };
 
-  ed25519 = dontCheck (prev.callCabal2nix "ed25519" inputs.ed25519 { });
+  doctest = prev.callPackage (./pkgs/doctest.nix) { };
 
-  email-validate = doJailbreak (dontCheck (prev.callHackage "email-validate" "2.3.2.16" { }));
+  double-conversion = prev.callPackage (./pkgs/double-conversion.nix) { };
 
-  ema = prev.callCabal2nix "ema" inputs.ema { };
+  ed25519 = prev.callPackage (./pkgs/ed25519.nix) { };
 
-  effectful-cache = doJailbreak (prev.callCabal2nix "effectful-cache" inputs.cache-effectful { });
+  effectful = prev.callPackage (./pkgs/effectful.nix) { };
 
-  effectful-core = prev.callHackage "effectful-core" "2.1.0.0" { };
+  effectful-cache = prev.callPackage (./pkgs/effectful-cache.nix) { };
 
-  effectful-th = prev.callHackage "effectful-th" "1.0.0.0" { };
+  effectful-core = prev.callPackage (./pkgs/effectful-core.nix) { };
 
-  effectful = prev.callHackage "effectful" "2.1.0.0" { };
+  effectful-th = prev.callPackage (./pkgs/effectful-th.nix) { };
 
-  extra = dontCheck (prev.callHackage "extra" "1.7.12" { });
+  ema = prev.callPackage (./pkgs/ema.nix) { };
 
-  fcf-containers = dontCheck (prev.callHackage "fcf-containers" "0.7.1" { });
+  email-validate = prev.callPackage (./pkgs/email-validate.nix) { };
 
-  finite-field = dontCheck (prev.callHackage "finite-field" "0.10.0" { });
+  extra = prev.callPackage (./pkgs/extra.nix) { };
 
-  first-class-families = doJailbreak (dontCheck (prev.callHackage "first-class-families" "0.8.0.1" { }));
+  fcf-containers = prev.callPackage (./pkgs/fcf-containers.nix) { };
 
-  foldl = dontCheck (prev.callHackage "foldl" "1.4.12" { });
+  finite-field = prev.callPackage (./pkgs/finite-field.nix) { };
 
-  fourmolu = doJailbreak (prev.callHackage "fourmolu" "0.8.2.0" { });
+  first-class-families = prev.callPackage (./pkgs/first-class-families.nix) { };
 
-  foundation = prev.callHackage "foundation" "0.0.29" { };
+  foldl = prev.callPackage (./pkgs/foldl.nix) { };
 
-  generic-lens-core = prev.callHackage "generic-lens-core" "2.2.1.0" { };
+  foundation = prev.callPackage (./pkgs/foundation.nix) { };
 
-  generic-lens-lite = doJailbreak (prev.callHackage "generic-lens-lite" "0.1" { });
+  fourmolu = prev.callPackage (./pkgs/fourmolu.nix) { };
 
-  generic-optics-lite = doJailbreak (prev.callHackage "generic-optics-lite" "0.1" { });
+  generic-lens-core = prev.callPackage (./pkgs/generic-lens-core.nix) { };
 
-  generic-optics = dontCheck (doJailbreak (prev.callHackage "generic-optics" "2.2.1.0" { }));
+  generic-lens-lite = prev.callPackage (./pkgs/generic-lens-lite.nix) { };
 
-  generics-sop = prev.callHackage "generics-sop" "0.5.1.2" { };
+  generic-optics = prev.callPackage (./pkgs/generic-optics.nix) { };
 
-  genvalidity-aeson = prev.callHackage "genvalidity-aeson" "1.0.0.1" { };
+  generic-optics-lite = prev.callPackage (./pkgs/generic-optics-lite.nix) { };
 
-  genvalidity-bytestring = prev.callHackage "genvalidity-bytestring" "1.0.0.1" { };
+  generics-sop = prev.callPackage (./pkgs/generics-sop.nix) { };
 
-  genvalidity-hspec = prev.callHackage "genvalidity-hspec" "1.0.0.2" { };
+  genvalidity-aeson = prev.callPackage (./pkgs/genvalidity-aeson.nix) { };
 
-  genvalidity-scientific = prev.callHackage "genvalidity-scientific" "1.0.0.0" { };
+  genvalidity-bytestring = prev.callPackage (./pkgs/genvalidity-bytestring.nix) { };
 
-  genvalidity-sydtest-aeson = prev.callHackage "genvalidity-sydtest-aeson" "1.0.0.0" { };
+  genvalidity-hspec = prev.callPackage (./pkgs/genvalidity-hspec.nix) { };
 
-  genvalidity-text = prev.callHackage "genvalidity-text" "1.0.0.1" { };
+  genvalidity-scientific = prev.callPackage (./pkgs/genvalidity-scientific.nix) { };
 
-  genvalidity-unordered-containers = prev.callHackage "genvalidity-unordered-containers" "1.0.0.0" { };
+  genvalidity-sydtest-aeson = prev.callPackage (./pkgs/genvalidity-sydtest-aeson.nix) { };
 
-  genvalidity-vector = prev.callHackage "genvalidity-vector" "1.0.0.0" { };
+  genvalidity-text = prev.callPackage (./pkgs/genvalidity-text.nix) { };
 
-  ghc-check = dontHaddock (prev.callHackage "ghc-check" "0.5.0.8" { });
+  genvalidity-unordered-containers = prev.callPackage (./pkgs/genvalidity-unordered-containers.nix) { };
 
-  ghc-byteorder = doJailbreak (prev.callHackage "ghc-byteorder" "4.11.0.0.10" { });
+  genvalidity-vector = prev.callPackage (./pkgs/genvalidity-vector.nix) { };
 
-  ghc-exactprint = prev.callCabal2nix "ghc-exactprint" inputs.ghc-exactprint { };
+  ghc-byteorder = prev.callPackage (./pkgs/ghc-byteorder.nix) { };
 
-  ghc-lib-parser = doJailbreak (prev.callHackage "ghc-lib-parser" "9.4.2.20220822" { });
+  ghc-check = prev.callPackage (./pkgs/ghc-check.nix) { };
 
-  ghc-lib-parser-ex = doJailbreak (prev.callHackage "ghc-lib-parser-ex" "9.4.0.0" { });
+  ghc-exactprint = prev.callPackage (./pkgs/ghc-exactprint.nix) { };
 
-  ghc-paths = prev.callHackage "ghc-paths" "0.1.0.12" { };
+  ghc-lib-parser = prev.callPackage (./pkgs/ghc-lib-parser.nix) { };
 
-  ghc-tcplugins-extra = prev.callHackage "ghc-tcplugins-extra" "0.4.3" { };
+  ghc-lib-parser-ex = prev.callPackage (./pkgs/ghc-lib-parser-ex.nix) { };
 
-  hackage-security = doJailbreak (prev.callHackage "hackage-security" "0.6.2.2" { });
+  ghc-paths = prev.callPackage (./pkgs/ghc-paths.nix) { };
 
-  hashable = prev.callHackage "hashable" "1.4.1.0" { };
+  ghc-tcplugins-extra = prev.callPackage (./pkgs/ghc-tcplugins-extra.nix) { };
 
-  haskell-src-meta = prev.callCabal2nix "haskell-src-meta" (inputs.haskell-src-meta + /haskell-src-meta) { };
+  hackage-security = prev.callPackage (./pkgs/hackage-security.nix) { };
 
-  hashing = doJailbreak (prev.callHackage "hashing" "0.1.0.1" { });
+  hashable = prev.callPackage (./pkgs/hashable.nix) { };
 
-  hashtables = doJailbreak (prev.callHackage "hashtables" "1.3" { });
+  hashing = prev.callPackage (./pkgs/hashing.nix) { };
 
-  hedgehog = dontHaddock (prev.callHackage "hedgehog" "1.2" { });
+  hashtables = prev.callPackage (./pkgs/hashtables.nix) { };
 
-  hedgehog-golden = dontHaddock (prev.callCabal2nix "hedgehog-golden" inputs.hedgehog-golden { });
+  haskell-src-meta = prev.callPackage (./pkgs/haskell-src-meta.nix) { };
 
-  hedgehog-quickcheck = doJailbreak (prev.callHackage "hedgehog-quickcheck" "0.1.1" { });
+  hedgehog = prev.callPackage (./pkgs/hedgehog.nix) { };
 
-  hie-compat = prev.callHackage "hie-compat" "0.3.0.0" { };
+  hedgehog-golden = prev.callPackage (./pkgs/hedgehog-golden.nix) { };
 
-  hiedb = dontCheck (doJailbreak (prev.callHackage "hiedb" "0.4.2.0" { }));
+  hie-compat = prev.callPackage (./pkgs/hie-compat.nix) { };
 
-  hlint = prev.callCabal2nix "hlint" inputs.hlint { };
+  hiedb = prev.callPackage (./pkgs/hiedb.nix) { };
 
-  hnix = doJailbreak (dontCheck (prev.callCabal2nix "hnix" inputs.hnix { }));
+  hlint = prev.callPackage (./pkgs/hlint.nix) { };
 
-  hourglass = dontCheck (prev.callHackage "hourglass" "0.2.12" { });
+  hnix = prev.callPackage (./pkgs/hnix.nix) { };
 
-  hslua-aeson = doJailbreak (prev.callHackage "hslua-aeson" "2.2.1" { });
+  hourglass = prev.callPackage (./pkgs/hourglass.nix) { };
 
-  hspec = doJailbreak (prev.callHackage "hspec" "2.10.3" { });
+  hslua-aeson = prev.callPackage (./pkgs/hslua-aeson.nix) { };
 
-  hspec-core = dontCheck (prev.callHackage "hspec-core" "2.10.0.1" { });
+  hspec = prev.callPackage (./pkgs/hspec.nix) { };
 
-  hspec-discover = dontCheck (prev.callHackage "hspec-discover" "2.10.0.1" { });
+  hspec-core = prev.callPackage (./pkgs/hspec-core.nix) { };
 
-  hspec-meta = dontCheck (prev.callHackage "hspec-meta" "2.9.3" { });
+  hspec-discover = prev.callPackage (./pkgs/hspec-discover.nix) { };
 
-  http-client = dontCheck (prev.callHackage "http-client" "0.7.13.1" { });
+  hspec-meta = prev.callPackage (./pkgs/hspec-meta.nix) { };
 
-  http-date = dontCheck (prev.callHackage "http-date" "0.0.11" {});
+  http-client = prev.callPackage (./pkgs/http-client.nix) { };
 
-  http-types = dontCheck (prev.callHackage "http-types" "0.12.3" { });
+  http-date = prev.callPackage (./pkgs/http-date.nix) { };
 
-  http2 = dontCheck (prev.callHackage "http2" "3.0.3" { });
+  http-types = prev.callPackage (./pkgs/http-types.nix) { };
 
-  incipit-base = doJailbreak (prev.callHackage "incipit-base" "0.3.0.0" { });
+  http2 = prev.callPackage (./pkgs/http2.nix) { };
 
-  incipit-core = doJailbreak (prev.callHackage "incipit-core" "0.3.0.0" { });
+  incipit-base = prev.callPackage (./pkgs/incipit-base.nix) { };
 
-  indexed-traversable = doJailbreak (final.callHackage "indexed-traversable" "0.1.2" { });
+  incipit-core = prev.callPackage (./pkgs/incipit-core.nix) { };
 
-  indexed-traversable-instances = doJailbreak (dontCheck (prev.callHackage "indexed-traversable-instances" "0.1.1.1" { }));
+  indexed-traversable = prev.callPackage (./pkgs/indexed-traversable.nix) { };
 
-  integer-logarithms = final.callHackage "integer-logarithms" "1.0.3.1" { };
+  indexed-traversable-instances = prev.callPackage (./pkgs/indexed-traversable-instances.nix) { };
 
-  invariant = doJailbreak (prev.callHackage "invariant" "0.6" { });
+  integer-logarithms = prev.callPackage (./pkgs/integer-logarithms.nix) { };
 
-  iproute = dontCheck (prev.callHackage "iproute" "1.7.12" { });
+  invariant = prev.callPackage (./pkgs/invariant.nix) { };
 
-  lens = doJailbreak (prev.callHackage "lens" "5.2" { });
+  iproute = prev.callPackage (./pkgs/iproute.nix) { };
 
-  lens-aeson = prev.callHackage "lens-aeson" "1.2.1" { };
+  lens = prev.callPackage (./pkgs/lens.nix) { };
 
-  lens-family-th = doJailbreak (prev.callHackage "lens-family-th" "0.5.2.1" { });
+  lens-aeson = prev.callPackage (./pkgs/lens-aeson.nix) { };
 
-  lifted-async = doJailbreak (prev.callHackage "lifted-async" "0.10.2.1" { });
+  lens-family-th = prev.callPackage (./pkgs/lens-family-th.nix) { };
 
-  linear = doJailbreak (prev.callHackage "linear" "1.21.10" { });
+  lifted-async = prev.callPackage (./pkgs/lifted-async.nix) { };
 
-  lsp-types = prev.callHackage "lsp-types" "1.6.0.0" { };
+  linear = prev.callPackage (./pkgs/linear.nix) { };
 
-  lsp = prev.callHackage "lsp" "1.6.0.0" { };
+  lsp = prev.callPackage (./pkgs/lsp.nix) { };
 
-  lucid = doJailbreak (prev.callHackage "lucid" "2.11.1" { });
+  lsp-types = prev.callPackage (./pkgs/lsp-types.nix) { };
 
-  memory = prev.callCabal2nix "memory" inputs.memory { };
+  lucid = prev.callPackage (./pkgs/lucid.nix) { };
 
-  net-mqtt = doJailbreak (prev.callHackage "net-mqtt" "0.8.2.2" { });
+  memory = prev.callPackage (./pkgs/memory.nix) { };
 
-  monoid-subclasses = doJailbreak (prev.callHackage "monoid-subclasses" "1.1.3" { });
+  monoid-subclasses = prev.callPackage (./pkgs/monoid-subclasses.nix) { };
 
-  network-byte-order = dontCheck (prev.callHackage "network-byte-order" "0.1.6" { });
+  net-mqtt = prev.callPackage (./pkgs/net-mqtt.nix) { };
 
-  newtype-generics = doJailbreak (prev.callHackage "newtype-generics" "0.6.2" { });
+  network-byte-order = prev.callPackage (./pkgs/network-byte-order.nix) { };
 
-  nothunks = dontCheck (prev.callHackage "nothunks" "0.1.3" { });
+  newtype-generics = prev.callPackage (./pkgs/newtype-generics.nix) { };
 
-  optics-core = prev.callHackage "optics-core" "0.4.1" { };
+  nothunks = prev.callPackage (./pkgs/nothunks.nix) { };
 
-  optics-extra = doJailbreak (prev.callHackage "optics-extra" "0.4.2.1" { });
+  optics = prev.callPackage (./pkgs/optics.nix) { };
 
-  optics-th = prev.callHackage "optics-th" "0.4.1" { };
+  optics-core = prev.callPackage (./pkgs/optics-core.nix) { };
 
-  optics = doJailbreak (dontCheck (prev.callHackage "optics" "0.4.2" { }));
+  optics-extra = prev.callPackage (./pkgs/optics-extra.nix) { };
 
-  pandoc = doJailbreak (prev.callHackage "pandoc" "2.19.2" { });
+  optics-th = prev.callPackage (./pkgs/optics-th.nix) { };
 
-  parallel = doJailbreak (final.callHackage "parallel" "3.2.2.0" { });
+  pandoc = prev.callPackage (./pkgs/pandoc.nix) { };
 
-  pcg-random = dontCheck (prev.callHackage "pcg-random" "0.1.3.7" { });
+  parallel = prev.callPackage (./pkgs/parallel.nix) { };
 
-  polysemy = dontCheck (prev.callHackage "polysemy" "1.7.1.0" { });
+  pcg-random = prev.callPackage (./pkgs/pcg-random.nix) { };
 
-  polysemy-extra = prev.callHackage "polysemy-extra" "0.2.1.0" { };
+  polysemy = prev.callPackage (./pkgs/polysemy.nix) { };
 
-  polysemy-kvstore = prev.callHackage "polysemy-kvstore" "0.1.3.0" { };
+  polysemy-extra = prev.callPackage (./pkgs/polysemy-extra.nix) { };
 
-  polysemy-methodology = doJailbreak (prev.callHackage "polysemy-methodology" "0.2.1.0" { });
+  polysemy-kvstore = prev.callPackage (./pkgs/polysemy-kvstore.nix) { };
 
-  polysemy-path = doJailbreak (prev.callHackage "polysemy-path" "0.2.1.0" { });
+  polysemy-methodology = prev.callPackage (./pkgs/polysemy-methodology.nix) { };
 
-  polysemy-plugin = dontCheck (doJailbreak (prev.callCabal2nix "polysemy-plugin" (inputs.polysemy + /polysemy-plugin) { }));
+  polysemy-path = prev.callPackage (./pkgs/polysemy-path.nix) { };
 
-  polysemy-several = prev.callHackage "polysemy-several" "0.1.1.0" { };
+  polysemy-plugin = prev.callPackage (./pkgs/polysemy-plugin.nix) { };
 
-  polysemy-time = dontCheck (prev.callHackage "polysemy-time" "0.5.1.0" { });
+  polysemy-several = prev.callPackage (./pkgs/polysemy-several.nix) { };
 
-  polysemy-vinyl = doJailbreak (prev.callHackage "polysemy-vinyl" "0.1.5.0" { });
+  polysemy-time = prev.callPackage (./pkgs/polysemy-time.nix) { };
 
-  polysemy-zoo = doJailbreak (dontCheck (prev.callHackage "polysemy-zoo" "0.8.0.0" { }));
+  polysemy-vinyl = prev.callPackage (./pkgs/polysemy-vinyl.nix) { };
 
-  postgresql-libpq = doJailbreak (prev.callHackage "postgresql-libpq" "0.9.4.3" { });
+  polysemy-zoo = prev.callPackage (./pkgs/polysemy-zoo.nix) { };
 
-  postgresql-simple = doJailbreak (prev.callHackage "postgresql-simple" "0.6.4" { });
+  postgresql-libpq = prev.callPackage (./pkgs/postgresql-libpq.nix) { };
 
-  pretty-simple = dontCheck (prev.callHackage "pretty-simple" "4.1.1.0" { });
+  postgresql-simple = prev.callPackage (./pkgs/postgresql-simple.nix) { };
 
-  prettyprinter-ansi-terminal = dontCheck (prev.callHackage "prettyprinter-ansi-terminal" "1.1.3" { });
+  pretty-simple = prev.callPackage (./pkgs/pretty-simple.nix) { };
 
-  primitive = dontCheck (prev.callHackage "primitive" "0.7.4.0" { });
+  prettyprinter-ansi-terminal = prev.callPackage (./pkgs/prettyprinter-ansi-terminal.nix) { };
 
-  proteaaudio-sdl = doJailbreak (prev.callHackage "proteaaudio-sdl" "0.9.2" { });
+  primitive = prev.callPackage (./pkgs/primitive.nix) { };
 
-  quickcheck-dynamic = prev.callCabal2nix "quickcheck-dynamic" (inputs.quickcheck-dynamic + /quickcheck-dynamic) { };
+  proteaaudio-sdl = prev.callPackage (./pkgs/proteaaudio-sdl.nix) { };
 
-  quickcheck-instances = doJailbreak (prev.callHackage "quickcheck-instances" "0.3.28" { });
+  quickcheck-dynamic = prev.callPackage (./pkgs/quickcheck-dynamic.nix) { };
 
-  rebase = doJailbreak (prev.callHackage "rebase" "1.16" { });
+  quickcheck-instances = prev.callPackage (./pkgs/quickcheck-instances.nix) { };
 
-  rerebase = doJailbreak (prev.callHackage "rerebase" "1.15.0.3" { });
+  rebase = prev.callPackage (./pkgs/rebase.nix) { };
 
-  relude = doJailbreak (dontCheck (prev.callHackage "relude" "1.1.0.0" { }));
+  relude = prev.callPackage (./pkgs/relude.nix) { };
 
-  retry = dontCheck (prev.callHackage "retry" "0.9.3.0" { });
+  rerebase = prev.callPackage (./pkgs/rerebase.nix) { };
 
-  rope-utf16-splay = prev.callHackage "rope-utf16-splay" "0.4.0.0" { };
+  retry = prev.callPackage (./pkgs/retry.nix) { };
 
-  safe-coloured-text = prev.callHackage "safe-coloured-text" "0.2.0.1" { };
+  rope-utf16-splay = prev.callPackage (./pkgs/rope-utf16-splay.nix) { };
 
-  saltine = addPkgconfigDepend (doJailbreak (prev.callHackage "saltine" "0.1.1.1" { })) pkgs.libsodium;
+  safe-coloured-text = prev.callPackage (./pkgs/safe-coloured-text.nix) { };
 
-  scotty = doJailbreak (prev.callHackage "scotty" "0.12" { });
+  saltine = prev.callPackage (./pkgs/saltine.nix) { };
 
-  scientific = prev.callHackage "scientific" "0.3.7.0" { };
+  scientific = prev.callPackage (./pkgs/scientific.nix) { };
 
-  sdl2 = doJailbreak (dontCheck (final.callHackage "sdl2" "2.5.3.3" { }));
+  scotty = prev.callPackage (./pkgs/scotty.nix) { };
 
-  sdl2-gfx = prev.callHackage "sdl2-gfx" "0.3.0.0" { };
+  sdl2 = prev.callPackage (./pkgs/sdl2.nix) { };
 
-  sdl2-image = prev.callHackage "sdl2-image" "2.1.0.0" { };
+  sdl2-gfx = prev.callPackage (./pkgs/sdl2-gfx.nix) { };
 
-  sdl2-mixer = prev.callHackage "sdl2-mixer" "1.2.0.0" { };
+  sdl2-image = prev.callPackage (./pkgs/sdl2-image.nix) { };
 
-  sdl2-ttf = prev.callHackage "sdl2-ttf" "2.1.3" { };
+  sdl2-mixer = prev.callPackage (./pkgs/sdl2-mixer.nix) { };
 
-  semialign = doJailbreak (prev.callHackage "semialign" "1.2.0.1" { });
+  sdl2-ttf = prev.callPackage (./pkgs/sdl2-ttf.nix) { };
 
-  servant = doJailbreak (prev.callCabal2nix "servant" (inputs.servant + /servant) { });
+  semialign = prev.callPackage (./pkgs/semialign.nix) { };
 
-  servant-server = doJailbreak (prev.callCabal2nix "servant-server" (inputs.servant + /servant-server) { });
+  serialise = prev.callPackage (./pkgs/serialise.nix) { };
 
-  servant-client-core = doJailbreak (prev.callCabal2nix "servant-client-core" (inputs.servant + /servant-client-core) { });
+  servant = prev.callPackage (./pkgs/servant.nix) { };
 
-  servant-client = doJailbreak (prev.callCabal2nix "servant-client" (inputs.servant + /servant-client) { });
+  servant-client = prev.callPackage (./pkgs/servant-client.nix) { };
 
-  servant-foreign = doJailbreak (prev.callCabal2nix "servant-foreign" (inputs.servant + /servant-foreign) { });
+  servant-client-core = prev.callPackage (./pkgs/servant-client-core.nix) { };
 
-  servant-lucid = doJailbreak (prev.callHackage "servant-lucid" "0.9.0.5" { });
+  servant-foreign = prev.callPackage (./pkgs/servant-foreign.nix) { };
 
-  servant-multipart = doJailbreak (prev.callHackage "servant-multipart" "0.12.1" { });
+  servant-lucid = prev.callPackage (./pkgs/servant-lucid.nix) { };
 
-  servant-multipart-api = doJailbreak (prev.callHackage "servant-multipart-api" "0.12.1" { });
+  servant-multipart = prev.callPackage (./pkgs/servant-multipart.nix) { };
 
-  serialise = doJailbreak (prev.callCabal2nix "serialise" (inputs.cborg + /serialise) { });
+  servant-multipart-api = prev.callPackage (./pkgs/servant-multipart-api.nix) { };
 
-  shake = dontCheck (prev.callHackage "shake" "0.19.6" { });
+  shake = prev.callPackage (./pkgs/shake.nix) { };
 
-  shelly = dontCheck (prev.callHackage "shelly" "1.10.0" { });
+  shelly = prev.callPackage (./pkgs/shelly.nix) { };
 
-  singleton-bool = doJailbreak (prev.callHackage "singleton-bool" "0.1.6" { });
+  singleton-bool = prev.callPackage (./pkgs/singleton-bool.nix) { };
 
-  singletons = prev.callHackage "singletons" "3.0.2" { };
+  singletons = prev.callPackage (./pkgs/singletons.nix) { };
 
-  some = doJailbreak (prev.callHackage "some" "1.0.4" { });
+  some = prev.callPackage (./pkgs/some.nix) { };
 
-  sop-core = doJailbreak (prev.callHackage "sop-core" "0.5.0.1" { });
+  sop-core = prev.callPackage (./pkgs/sop-core.nix) { };
 
-  split = doJailbreak (prev.callHackage "split" "0.2.3.3" { });
+  split = prev.callPackage (./pkgs/split.nix) { };
 
-  splitmix = doJailbreak (dontCheck (prev.splitmix));
+  streaming-commons = prev.callPackage (./pkgs/streaming-commons.nix) { };
 
-  streaming-commons = dontCheck (prev.callHackage "streaming-commons" "0.2.2.4" { });
+  string-interpolate = prev.callPackage (./pkgs/string-interpolate.nix) { };
 
-  string-interpolate = prev.callHackage "string-interpolate" "0.3.1.2" { };
+  string-qq = prev.callPackage (./pkgs/string-qq.nix) { };
 
-  string-qq = doJailbreak (prev.callHackage "string-qq" "0.0.4" { });
+  stylish-haskell = prev.callPackage (./pkgs/stylish-haskell.nix) { };
 
-  stylish-haskell = doJailbreak (prev.callHackage "stylish-haskell" "0.14.2.0" { });
+  syb = prev.callPackage (./pkgs/syb.nix) { };
 
-  syb = dontCheck (prev.callHackage "syb" "0.7.2.1" { });
+  sydtest = prev.callPackage (./pkgs/sydtest.nix) { };
 
-  sydtest = dontCheck (prev.callCabal2nix "sydtest" (inputs.sydtest + /sydtest) { });
+  sydtest-discover = prev.callPackage (./pkgs/sydtest-discover.nix) { };
 
-  sydtest-discover = prev.callCabal2nix "sydtest-discover" (inputs.sydtest + /sydtest-discover) { };
+  tasty = prev.callPackage (./pkgs/tasty.nix) { };
 
-  tasty = doJailbreak (prev.callCabal2nix "tasty" (inputs.tasty + /core) { });
+  tasty-discover = prev.callPackage (./pkgs/tasty-discover.nix) { };
 
-  tasty-discover = doJailbreak (prev.callHackage "tasty-discover" "5.0.0" { });
+  tasty-hedgehog = prev.callPackage (./pkgs/tasty-hedgehog.nix) { };
 
-  tasty-hedgehog = doJailbreak (prev.callCabal2nix "tasty-hedgehog" inputs.tasty-hedgehog { });
+  tasty-hunit = prev.callPackage (./pkgs/tasty-hunit.nix) { };
 
-  tasty-hunit = doJailbreak (prev.callCabal2nix "tasty" (inputs.tasty + /hunit) { });
+  tasty-wai = prev.callPackage (./pkgs/tasty-wai.nix) { };
 
-  tasty-wai = doJailbreak (prev.callHackage "tasty-wai" "0.1.2.0" { });
+  text-zipper = prev.callPackage (./pkgs/text-zipper.nix) { };
 
-  text-zipper = prev.callHackage "text-zipper" "0.12" { };
+  th-extras = prev.callPackage (./pkgs/th-extras.nix) { };
 
-  these = doJailbreak (prev.callHackage "these" "1.1.1.1" { });
+  th-lift-instances = prev.callPackage (./pkgs/th-lift-instances.nix) { };
 
-  th-extras = doJailbreak (prev.callHackage "th-extras" "0.0.0.6" { });
+  these = prev.callPackage (./pkgs/these.nix) { };
 
-  th-lift-instances = prev.callHackage "th-lift-instances" "0.1.20" { };
+  tidal = prev.callPackage (./pkgs/tidal.nix) { };
 
-  tidal = doJailbreak (prev.callHackage "tidal" "1.8.1" { });
+  time-compat = prev.callPackage (./pkgs/time-compat.nix) { };
 
-  time-compat = doJailbreak (prev.callHackage "time-compat" "1.9.6.1" { });
+  type-equality = prev.callPackage (./pkgs/type-equality.nix) { };
 
-  type-errors-pretty = dontCheck (doJailbreak (prev.callHackage "type-errors-pretty" "0.0.1.2" { }));
+  type-errors = prev.callPackage (./pkgs/type-errors.nix) { };
 
-  type-errors = dontCheck (doJailbreak (prev.callHackage "type-errors" "0.2.0.0" { }));
+  type-errors-pretty = prev.callPackage (./pkgs/type-errors-pretty.nix) { };
 
-  type-equality = doJailbreak (prev.callHackage "type-equality" "1" { });
+  unicode-collation = prev.callPackage (./pkgs/unicode-collation.nix) { };
 
-  unicode-data = dontCheck (prev.callCabal2nix "unicode-data" (inputs.unicode-data + /unicode-data) { });
+  unicode-data = prev.callPackage (./pkgs/unicode-data.nix) { };
 
-  unicode-collation = doJailbreak (prev.callHackage "unicode-collation" "0.1.3.2" { });
+  unicode-transforms = prev.callPackage (./pkgs/unicode-transforms.nix) { };
 
-  unicode-transforms = doJailbreak (dontCheck (prev.callHackage "unicode-transforms" "0.4.0.1" { }));
+  unordered-containers = prev.callPackage (./pkgs/unordered-containers.nix) { };
 
-  unordered-containers = doJailbreak (prev.callHackage "unordered-containers" "0.2.19.1" { });
+  vault = prev.callPackage (./pkgs/vault.nix) { };
 
-  vault = doJailbreak (prev.callHackage "vault" "0.3.1.5" { });
+  vector = prev.callPackage (./pkgs/vector.nix) { };
 
-  vector = dontCheck (prev.callHackage "vector" "0.13.0.0" { });
+  vector-algorithms = prev.callPackage (./pkgs/vector-algorithms.nix) { };
 
-  vector-algorithms = prev.callHackage "vector-algorithms" "0.9.0.1" { };
+  vinyl = prev.callPackage (./pkgs/vinyl.nix) { };
 
-  vinyl = final.callHackage "vinyl" "0.14.3" { };
+  vty = prev.callPackage (./pkgs/vty.nix) { };
 
-  vty = prev.callHackage "vty" "5.37" { };
+  wai-middleware-static = prev.callPackage (./pkgs/wai-middleware-static.nix) { };
 
-  wai-middleware-static = prev.callHackage "wai-middleware-static" "0.9.2" { };
+  warp = prev.callPackage (./pkgs/warp.nix) { };
 
-  warp = dontCheck (prev.callHackage "warp" "3.3.22" { });
+  warp-tls = prev.callPackage (./pkgs/warp-tls.nix) { };
 
-  warp-tls = dontCheck (prev.callHackage "warp-tls" "3.3.3" { });
+  with-utf8 = prev.callPackage (./pkgs/with-utf8.nix) { };
 
-  witherable = dontCheck (prev.callHackage "witherable" "0.4.2" { });
-  
-  with-utf8 = doJailbreak (prev.callHackage "with-utf8" "1.0.2.3" { });
+  witherable = prev.callPackage (./pkgs/witherable.nix) { };
 
-  xml-conduit = dontCheck (prev.callHackage "xml-conduit" "1.9.1.1" { });
+  xml-conduit = prev.callPackage (./pkgs/xml-conduit.nix) { };
 
 }
diff --git a/pkgs/Cabal-QuickCheck.nix b/pkgs/Cabal-QuickCheck.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4c696ea4d072134b186a7b0a859d77d4ff78cb99
--- /dev/null
+++ b/pkgs/Cabal-QuickCheck.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, bytestring
+, Cabal
+, Cabal-syntax
+, fetchgit
+, lib
+, QuickCheck
+}:
+mkDerivation {
+  pname = "Cabal-QuickCheck";
+  version = "3.9.0.0";
+  src = fetchgit {
+    url = "https://gitlab.haskell.org/ghc/packages/Cabal";
+    sha256 = "1h6bzv5zdbjhmrnqa3n14s1zybjxvspiqq228ksqcm2jfs4mbf96";
+    rev = "06cbab69946768e766447b66a7ea168469a2c1a9";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/Cabal-QuickCheck/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    Cabal
+    Cabal-syntax
+    QuickCheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "QuickCheck instances for types in Cabal";
+  license = "unknown";
+}
diff --git a/pkgs/Cabal-described.nix b/pkgs/Cabal-described.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d4fbfde87a938544684653d6736ae68e52fedc9a
--- /dev/null
+++ b/pkgs/Cabal-described.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, base
+, Cabal
+, Cabal-syntax
+, containers
+, fetchgit
+, lib
+, pretty
+, QuickCheck
+, rere
+, tasty
+, tasty-quickcheck
+, transformers
+}:
+mkDerivation {
+  pname = "Cabal-described";
+  version = "3.9.0.0";
+  src = fetchgit {
+    url = "https://gitlab.haskell.org/ghc/packages/Cabal";
+    sha256 = "1h6bzv5zdbjhmrnqa3n14s1zybjxvspiqq228ksqcm2jfs4mbf96";
+    rev = "06cbab69946768e766447b66a7ea168469a2c1a9";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/Cabal-described/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    Cabal
+    Cabal-syntax
+    containers
+    pretty
+    QuickCheck
+    rere
+    tasty
+    tasty-quickcheck
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Described functionality for types in Cabal";
+  license = "unknown";
+}
diff --git a/pkgs/Cabal-syntax.nix b/pkgs/Cabal-syntax.nix
new file mode 100644
index 0000000000000000000000000000000000000000..298860bb291d19f6abff1a1a014fd0548b8e2202
--- /dev/null
+++ b/pkgs/Cabal-syntax.nix
@@ -0,0 +1,54 @@
+{ mkDerivation
+, array
+, base
+, binary
+, bytestring
+, containers
+, deepseq
+, directory
+, fetchgit
+, filepath
+, lib
+, mtl
+, parsec
+, pretty
+, text
+, time
+, transformers
+, unix
+}:
+mkDerivation {
+  pname = "Cabal-syntax";
+  version = "3.9.0.0";
+  src = fetchgit {
+    url = "https://gitlab.haskell.org/ghc/packages/Cabal";
+    sha256 = "1h6bzv5zdbjhmrnqa3n14s1zybjxvspiqq228ksqcm2jfs4mbf96";
+    rev = "06cbab69946768e766447b66a7ea168469a2c1a9";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/Cabal-syntax/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    array
+    base
+    binary
+    bytestring
+    containers
+    deepseq
+    directory
+    filepath
+    mtl
+    parsec
+    pretty
+    text
+    time
+    transformers
+    unix
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/cabal/";
+  description = "A library for working with .cabal files";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/Cabal-tree-diff.nix b/pkgs/Cabal-tree-diff.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fb503ac99c31364664c5c92dfb026c8d566a36a9
--- /dev/null
+++ b/pkgs/Cabal-tree-diff.nix
@@ -0,0 +1,26 @@
+{ mkDerivation
+, base
+, Cabal
+, Cabal-syntax
+, fetchgit
+, lib
+, tree-diff
+}:
+mkDerivation {
+  pname = "Cabal-tree-diff";
+  version = "3.9.0.0";
+  src = fetchgit {
+    url = "https://gitlab.haskell.org/ghc/packages/Cabal";
+    sha256 = "1h6bzv5zdbjhmrnqa3n14s1zybjxvspiqq228ksqcm2jfs4mbf96";
+    rev = "06cbab69946768e766447b66a7ea168469a2c1a9";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/Cabal-tree-diff/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [ base Cabal Cabal-syntax tree-diff ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "QuickCheck instances for types in Cabal";
+  license = "unknown";
+}
diff --git a/pkgs/Cabal.nix b/pkgs/Cabal.nix
new file mode 100644
index 0000000000000000000000000000000000000000..67d963aa15c1e2459b7550e718d6786e991f2bd5
--- /dev/null
+++ b/pkgs/Cabal.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, Cabal-syntax
+, containers
+, deepseq
+, directory
+, filepath
+, lib
+, mtl
+, parsec
+, pretty
+, process
+, text
+, time
+, transformers
+, unix
+}:
+mkDerivation {
+  pname = "Cabal";
+  version = "3.8.1.0";
+  sha256 = "7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608";
+  setupHaskellDepends = [ mtl parsec ];
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    Cabal-syntax
+    containers
+    deepseq
+    directory
+    filepath
+    mtl
+    parsec
+    pretty
+    process
+    text
+    time
+    transformers
+    unix
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/cabal/";
+  description = "A framework for packaging Haskell software";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ChasingBottoms.nix b/pkgs/ChasingBottoms.nix
new file mode 100644
index 0000000000000000000000000000000000000000..83ef3cd2688810116170f81da5d6ce23427deb75
--- /dev/null
+++ b/pkgs/ChasingBottoms.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, array
+, base
+, containers
+, lib
+, mtl
+, QuickCheck
+, random
+, syb
+}:
+mkDerivation {
+  pname = "ChasingBottoms";
+  version = "1.3.1.12";
+  sha256 = "a018538c0196390c7ebb5c677ff5b81bd760d75ae2b21bae8ab8a47b00f6c9ef";
+  libraryHaskellDepends = [
+    base
+    containers
+    mtl
+    QuickCheck
+    random
+    syb
+  ];
+  testHaskellDepends = [
+    array
+    base
+    containers
+    mtl
+    QuickCheck
+    random
+    syb
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "For testing partial and infinite values";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/HTTP.nix b/pkgs/HTTP.nix
new file mode 100644
index 0000000000000000000000000000000000000000..29e12d3772e5291f9cc64072b10e39452565ba0a
--- /dev/null
+++ b/pkgs/HTTP.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, deepseq
+, httpd-shed
+, HUnit
+, lib
+, mtl
+, network
+, network-uri
+, parsec
+, pureMD5
+, split
+, test-framework
+, test-framework-hunit
+, time
+, transformers
+}:
+mkDerivation {
+  pname = "HTTP";
+  version = "4000.4.1";
+  sha256 = "df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453";
+  revision = "1";
+  editedCabalFile = "04y04vbxbnblpmqqmpl8km4bkcjaj96nbxkssdr1zgbhqisxay5q";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    mtl
+    network
+    network-uri
+    parsec
+    time
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    httpd-shed
+    HUnit
+    mtl
+    network
+    network-uri
+    pureMD5
+    split
+    test-framework
+    test-framework-hunit
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/HTTP";
+  description = "A library for client-side HTTP";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/JuicyPixels.nix b/pkgs/JuicyPixels.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3fbc354ea067e64cb4fac9f16f86c52da0c419e7
--- /dev/null
+++ b/pkgs/JuicyPixels.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, base
+, binary
+, bytestring
+, containers
+, deepseq
+, lib
+, mtl
+, primitive
+, transformers
+, vector
+, zlib
+}:
+mkDerivation {
+  pname = "JuicyPixels";
+  version = "3.3.8";
+  sha256 = "d3a0f6ca3515a1b3d526cbf79f2e0b0aab57f208ab216f9c26437bbcd86fb63e";
+  libraryHaskellDepends = [
+    base
+    binary
+    bytestring
+    containers
+    deepseq
+    mtl
+    primitive
+    transformers
+    vector
+    zlib
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Twinside/Juicy.Pixels";
+  description = "Picture loading/serialization (in png, jpeg, bitmap, gif, tga, tiff and radiance)";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/OneTuple.nix b/pkgs/OneTuple.nix
new file mode 100644
index 0000000000000000000000000000000000000000..431da819a3cbe09ad778b4d4993c81bd1e2df41a
--- /dev/null
+++ b/pkgs/OneTuple.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, ghc-prim, hashable, lib, template-haskell }:
+mkDerivation {
+  pname = "OneTuple";
+  version = "0.3.1";
+  sha256 = "98853682d52fb4cc37a45cd186fbd77cf2565d3df5171acc4cf026427e103eef";
+  revision = "3";
+  editedCabalFile = "0g4siv8s6dlrdsivap2qy6ig08y5bjbs93jk192zmgkp8iscncpw";
+  libraryHaskellDepends = [ base ghc-prim template-haskell ];
+  testHaskellDepends = [ base hashable template-haskell ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Singleton Tuple";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/OpenGLRaw.nix b/pkgs/OpenGLRaw.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ec7d9567edd7f844c6e20547d23768cbbe79ba46
--- /dev/null
+++ b/pkgs/OpenGLRaw.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, fixed
+, half
+, lib
+, libGL
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "OpenGLRaw";
+  version = "3.3.4.1";
+  sha256 = "121abdea149ac74514efb2c1c1c319466757242d1b72a8bdf99d49535f06d31e";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    fixed
+    half
+    text
+    transformers
+  ];
+  librarySystemDepends = [ libGL ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/haskellwiki/Opengl";
+  description = "A raw binding for the OpenGL graphics system";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/aeson.nix b/pkgs/aeson.nix
new file mode 100644
index 0000000000000000000000000000000000000000..81eff4df555601f2068530b20020429e8d5ebf52
--- /dev/null
+++ b/pkgs/aeson.nix
@@ -0,0 +1,132 @@
+{ mkDerivation
+, attoparsec
+, base
+, base-compat
+, base-compat-batteries
+, base-orphans
+, base16-bytestring
+, bytestring
+, containers
+, data-fix
+, deepseq
+, Diff
+, directory
+, dlist
+, filepath
+, generic-deriving
+, generically
+, ghc-prim
+, hashable
+, indexed-traversable
+, integer-logarithms
+, lib
+, OneTuple
+, primitive
+, QuickCheck
+, quickcheck-instances
+, scientific
+, semialign
+, strict
+, tagged
+, tasty
+, tasty-golden
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, text
+, text-short
+, th-abstraction
+, these
+, time
+, time-compat
+, unordered-containers
+, uuid-types
+, vector
+, witherable
+}:
+mkDerivation {
+  pname = "aeson";
+  version = "2.1.0.0";
+  sha256 = "0a763ef5fa16da678e5a1ee8c394825b6723182a9a755709170edc08b8f73c94";
+  revision = "2";
+  editedCabalFile = "0yp12cmkj5sz25kxzn6g1fz2d6acbq5rvff5dg2wg5zkjwfkhzqj";
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    base-compat-batteries
+    bytestring
+    containers
+    data-fix
+    deepseq
+    dlist
+    generically
+    ghc-prim
+    hashable
+    indexed-traversable
+    OneTuple
+    primitive
+    QuickCheck
+    scientific
+    semialign
+    strict
+    tagged
+    template-haskell
+    text
+    text-short
+    th-abstraction
+    these
+    time
+    time-compat
+    unordered-containers
+    uuid-types
+    vector
+    witherable
+  ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    base-compat
+    base-orphans
+    base16-bytestring
+    bytestring
+    containers
+    data-fix
+    Diff
+    directory
+    dlist
+    filepath
+    generic-deriving
+    generically
+    ghc-prim
+    hashable
+    indexed-traversable
+    integer-logarithms
+    OneTuple
+    primitive
+    QuickCheck
+    quickcheck-instances
+    scientific
+    strict
+    tagged
+    tasty
+    tasty-golden
+    tasty-hunit
+    tasty-quickcheck
+    template-haskell
+    text
+    text-short
+    these
+    time
+    time-compat
+    unordered-containers
+    uuid-types
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/aeson";
+  description = "Fast JSON parsing and encoding";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ansi-terminal.nix b/pkgs/ansi-terminal.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ccbf7506374f9cdca0409b226355a1b5c5d8ab2d
--- /dev/null
+++ b/pkgs/ansi-terminal.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, colour, lib }:
+mkDerivation {
+  pname = "ansi-terminal";
+  version = "0.11.3";
+  sha256 = "f4d563ecf71fb1d304bcdcad478d97efd9f61f6d9d4797a5d56e7722a92a9e6b";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base colour ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/UnkindPartition/ansi-terminal";
+  description = "Simple ANSI terminal support, with Windows compatibility";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/apecs.nix b/pkgs/apecs.nix
new file mode 100644
index 0000000000000000000000000000000000000000..dd571d31ee7133ba44f2104d93b72a657f107741
--- /dev/null
+++ b/pkgs/apecs.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, array
+, base
+, containers
+, criterion
+, exceptions
+, lib
+, linear
+, mtl
+, QuickCheck
+, template-haskell
+, vector
+}:
+mkDerivation {
+  pname = "apecs";
+  version = "0.9.4";
+  sha256 = "7e134eea093551112539ab5727bb127b7a4a6906c96636024f8c0966a06b9740";
+  revision = "1";
+  editedCabalFile = "1n0sz1230fp65dv462ss15yma6g1dxxlamj7idgl3kg9gdwv70sn";
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    exceptions
+    mtl
+    template-haskell
+    vector
+  ];
+  testHaskellDepends = [ base containers linear QuickCheck vector ];
+  benchmarkHaskellDepends = [ base criterion linear ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jonascarpay/apecs#readme";
+  description = "Fast Entity-Component-System library for game programming";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/assoc.nix b/pkgs/assoc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5e1df3f2e2e7d712ebb84da7159cdf0f1825772e
--- /dev/null
+++ b/pkgs/assoc.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, bifunctors, lib, tagged }:
+mkDerivation {
+  pname = "assoc";
+  version = "1.0.2";
+  sha256 = "d8988dc6e8718c7a3456515b769c9336aeeec730cf86fc5175247969ff8f144f";
+  revision = "3";
+  editedCabalFile = "0mrb12dx316q4gxyn68x2rl8jq0gd77zffd12r8j1r41l0xd9f4k";
+  libraryHaskellDepends = [ base bifunctors tagged ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "swap and assoc: Symmetric and Semigroupy Bifunctors";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/async.nix b/pkgs/async.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e0fe384ebe6bf26881d688120c68a7afe3891bcd
--- /dev/null
+++ b/pkgs/async.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, hashable
+, HUnit
+, lib
+, stm
+, test-framework
+, test-framework-hunit
+}:
+mkDerivation {
+  pname = "async";
+  version = "2.2.4";
+  sha256 = "484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725";
+  revision = "2";
+  editedCabalFile = "1j93w1krkadqijn59yjiws1366yhcn2mad1irqrk50in6l10k51b";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base hashable stm ];
+  testHaskellDepends = [
+    base
+    HUnit
+    stm
+    test-framework
+    test-framework-hunit
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/simonmar/async";
+  description = "Run IO operations asynchronously and wait for their results";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/autodocodec-yaml.nix b/pkgs/autodocodec-yaml.nix
new file mode 100644
index 0000000000000000000000000000000000000000..cf0756d16a7087673e9d494a1b4adfb6d4016ab8
--- /dev/null
+++ b/pkgs/autodocodec-yaml.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, autodocodec
+, autodocodec-schema
+, base
+, bytestring
+, containers
+, lib
+, path
+, path-io
+, safe-coloured-text
+, scientific
+, text
+, unordered-containers
+, vector
+, yaml
+}:
+mkDerivation {
+  pname = "autodocodec-yaml";
+  version = "0.2.0.2";
+  sha256 = "3d5f811541866f95f44842227bc5d643e7dfa316f1b3075c22d9f3dc6fcd9698";
+  libraryHaskellDepends = [
+    autodocodec
+    autodocodec-schema
+    base
+    bytestring
+    containers
+    path
+    path-io
+    safe-coloured-text
+    scientific
+    text
+    unordered-containers
+    vector
+    yaml
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/autodocodec#readme";
+  description = "Autodocodec interpreters for yaml";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/base-compat-batteries.nix b/pkgs/base-compat-batteries.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e9a13f4110e37c71f5b7b5694b0c7e7d5d833a30
--- /dev/null
+++ b/pkgs/base-compat-batteries.nix
@@ -0,0 +1,23 @@
+{ mkDerivation
+, base
+, base-compat
+, ghc-prim
+, hspec
+, hspec-discover
+, lib
+, QuickCheck
+}:
+mkDerivation {
+  pname = "base-compat-batteries";
+  version = "0.12.2";
+  sha256 = "ede9092e07f904e0759160bf1ecd3fb7eb043bae6dc89a37c3dc94829ec5eb99";
+  libraryHaskellDepends = [ base base-compat ghc-prim ];
+  testHaskellDepends = [ base hspec QuickCheck ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "base-compat with extra batteries";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/base-compat.nix b/pkgs/base-compat.nix
new file mode 100644
index 0000000000000000000000000000000000000000..00cfe3212fa8d82be168a1f9ec692879bd621069
--- /dev/null
+++ b/pkgs/base-compat.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, base, ghc-prim, lib, unix }:
+mkDerivation {
+  pname = "base-compat";
+  version = "0.12.2";
+  sha256 = "a62adc883a5ac436f80e4ae02c3c56111cf1007492f267c291139a668d2150bd";
+  libraryHaskellDepends = [ base ghc-prim unix ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "A compatibility layer for base";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/base64.nix b/pkgs/base64.nix
new file mode 100644
index 0000000000000000000000000000000000000000..cdf1df4a7140954ececfa482c584789e261f279c
--- /dev/null
+++ b/pkgs/base64.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, base
+, base64-bytestring
+, bytestring
+, criterion
+, deepseq
+, lib
+, QuickCheck
+, random-bytestring
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, text-short
+}:
+mkDerivation {
+  pname = "base64";
+  version = "0.4.2.4";
+  sha256 = "640a2d0afcb07e1de2e0a13a5e942b0265781c5942bd642a8793e7b019be3585";
+  revision = "2";
+  editedCabalFile = "0cz3zzz9k490w9nfn4hpgdw4zx4w70fwqrwsfx8svcwqssqibqw3";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    text
+    text-short
+  ];
+  testHaskellDepends = [
+    base
+    base64-bytestring
+    bytestring
+    QuickCheck
+    random-bytestring
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    text-short
+  ];
+  benchmarkHaskellDepends = [
+    base
+    base64-bytestring
+    bytestring
+    criterion
+    deepseq
+    random-bytestring
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/emilypi/base64";
+  description = "A modern RFC 4648-compliant Base64 library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/basement.nix b/pkgs/basement.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8beff1f5e0d89b642bf428e119d6b255c9ced02c
--- /dev/null
+++ b/pkgs/basement.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, ghc-prim, lib }:
+mkDerivation {
+  pname = "basement";
+  version = "0.0.15";
+  sha256 = "56c2afb6754e8d16a627331a8a5d473b3d26fd04ba5c9e0fb3475f595b915db4";
+  libraryHaskellDepends = [ base ghc-prim ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-foundation/foundation#readme";
+  description = "Foundation scrap box of array & string";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/bimap.nix b/pkgs/bimap.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6c588f4fedda854d26bfe8ab5a276a9d93cb320f
--- /dev/null
+++ b/pkgs/bimap.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, containers
+, deepseq
+, exceptions
+, lib
+, QuickCheck
+, template-haskell
+}:
+mkDerivation {
+  pname = "bimap";
+  version = "0.5.0";
+  sha256 = "b0b44b0f2eaceb83f46dfa3d1747e080c45204c64d18bb9e63747299266f0c95";
+  libraryHaskellDepends = [ base containers deepseq exceptions ];
+  testHaskellDepends = [
+    base
+    containers
+    deepseq
+    exceptions
+    QuickCheck
+    template-haskell
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/joelwilliamson/bimap";
+  description = "Bidirectional mapping between two key types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/binary-orphans.nix b/pkgs/binary-orphans.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8aa7392ed699879214ac85c0c700b4f4fd438a5a
--- /dev/null
+++ b/pkgs/binary-orphans.nix
@@ -0,0 +1,34 @@
+{ mkDerivation
+, base
+, binary
+, lib
+, OneTuple
+, QuickCheck
+, quickcheck-instances
+, tagged
+, tasty
+, tasty-quickcheck
+, transformers
+}:
+mkDerivation {
+  pname = "binary-orphans";
+  version = "1.0.3";
+  sha256 = "e2e554823ce6758cbbfb64acb8b5905d3c226eab18b5fcaf5d7c79252114602c";
+  libraryHaskellDepends = [ base binary transformers ];
+  testHaskellDepends = [
+    base
+    binary
+    OneTuple
+    QuickCheck
+    quickcheck-instances
+    tagged
+    tasty
+    tasty-quickcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Compatibility package for binary; provides instances";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/blaze-markup.nix b/pkgs/blaze-markup.nix
new file mode 100644
index 0000000000000000000000000000000000000000..715005f49227f4a8e9a61e2add595c7647003043
--- /dev/null
+++ b/pkgs/blaze-markup.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, blaze-builder
+, bytestring
+, containers
+, HUnit
+, lib
+, QuickCheck
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+}:
+mkDerivation {
+  pname = "blaze-markup";
+  version = "0.8.2.8";
+  sha256 = "43fc3f6872dc8d1be8d0fe091bd4775139b42179987f33d6490a7c5f1e07a349";
+  revision = "3";
+  editedCabalFile = "1hn694kk615prqdn7bfzl0wvbw8bksxk4cxwmx8yhwpl0cq3fiwa";
+  libraryHaskellDepends = [ base blaze-builder bytestring text ];
+  testHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    containers
+    HUnit
+    QuickCheck
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://jaspervdj.be/blaze";
+  description = "A blazingly fast markup combinator library for Haskell";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/boring.nix b/pkgs/boring.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0e7722d27164b8522477ffc36c8ad7fce1648dad
--- /dev/null
+++ b/pkgs/boring.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, lib, tagged, transformers }:
+mkDerivation {
+  pname = "boring";
+  version = "0.2";
+  sha256 = "0bac533b66e754d4fc65ab8d7557eea6f7b35d16998e5e74579b25a372aa4c34";
+  revision = "2";
+  editedCabalFile = "04pn94i3mysi7px93k86sf29vw99sf38sl4n0gy2nma0iqsik828";
+  libraryHaskellDepends = [ base tagged transformers ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/boring";
+  description = "Boring and Absurd types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/brick.nix b/pkgs/brick.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2b24289f616261e6b4e1c87c4abb4cfe70062231
--- /dev/null
+++ b/pkgs/brick.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, base
+, bimap
+, bytestring
+, config-ini
+, containers
+, contravariant
+, data-clist
+, deepseq
+, directory
+, exceptions
+, filepath
+, lib
+, microlens
+, microlens-mtl
+, microlens-th
+, mtl
+, QuickCheck
+, stm
+, template-haskell
+, text
+, text-zipper
+, unix
+, vector
+, vty
+, word-wrap
+}:
+mkDerivation {
+  pname = "brick";
+  version = "1.3";
+  sha256 = "4b4320ff8e6161dfe7034c7deb911f4187551c389c1d6b14501b285f9031ed52";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bimap
+    bytestring
+    config-ini
+    containers
+    contravariant
+    data-clist
+    deepseq
+    directory
+    exceptions
+    filepath
+    microlens
+    microlens-mtl
+    microlens-th
+    mtl
+    stm
+    template-haskell
+    text
+    text-zipper
+    unix
+    vector
+    vty
+    word-wrap
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    microlens
+    QuickCheck
+    vector
+    vty
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jtdaugherty/brick/";
+  description = "A declarative terminal user interface library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/bsb-http-chunked.nix b/pkgs/bsb-http-chunked.nix
new file mode 100644
index 0000000000000000000000000000000000000000..935384ab5f4dc0db6e0705245fa218306256ee12
--- /dev/null
+++ b/pkgs/bsb-http-chunked.nix
@@ -0,0 +1,49 @@
+{ mkDerivation
+, attoparsec
+, base
+, blaze-builder
+, bytestring
+, deepseq
+, doctest
+, gauge
+, hedgehog
+, lib
+, semigroups
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+}:
+mkDerivation {
+  pname = "bsb-http-chunked";
+  version = "0.0.0.4";
+  sha256 = "148309e23eb8b261c1de374712372d62d8c8dc8ee504c392809c7ec33c0a0e7c";
+  revision = "3";
+  editedCabalFile = "15hg352id2f4x0dnvv47bdiz6gv5hp5a2mki9yzmhc7ajpk31mdd";
+  libraryHaskellDepends = [ base bytestring ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    blaze-builder
+    bytestring
+    doctest
+    hedgehog
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+  ];
+  benchmarkHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    deepseq
+    gauge
+    semigroups
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/sjakobi/bsb-http-chunked";
+  description = "Chunked HTTP transfer encoding for bytestring builders";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/bytes.nix b/pkgs/bytes.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3455ea2cd6e06aecba7424eacac3b6d3739818e8
--- /dev/null
+++ b/pkgs/bytes.nix
@@ -0,0 +1,49 @@
+{ mkDerivation
+, base
+, binary
+, binary-orphans
+, bytestring
+, cereal
+, containers
+, hashable
+, lib
+, mtl
+, scientific
+, text
+, time
+, transformers
+, transformers-compat
+, unordered-containers
+, void
+}:
+mkDerivation {
+  pname = "bytes";
+  version = "0.17.2";
+  sha256 = "bc55f41edad589bc0ba389e8b106d7425a87390dcd5f1371e3194a9cc2c4781a";
+  revision = "1";
+  editedCabalFile = "0frs6ag93kmg2fw3vd686czx8g7h9qmdn1ip6wdk96d94ap0fz9i";
+  libraryHaskellDepends = [
+    base
+    binary
+    binary-orphans
+    bytestring
+    cereal
+    containers
+    hashable
+    mtl
+    scientific
+    text
+    time
+    transformers
+    transformers-compat
+    unordered-containers
+    void
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ekmett/bytes";
+  description = "Sharing code for serialization between binary and cereal";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cabal-doctest.nix b/pkgs/cabal-doctest.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f89090867d7704268ba829c87644951b1dd00578
--- /dev/null
+++ b/pkgs/cabal-doctest.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, Cabal, directory, filepath, lib }:
+mkDerivation {
+  pname = "cabal-doctest";
+  version = "1.0.9";
+  sha256 = "5556088496111d33810c4ae6c4a065bb37fa3315e9e8891e8000b1ab6707ba73";
+  revision = "2";
+  editedCabalFile = "0868js0qgfhvmyw4hjzrvmlzyqsm8dfsbmqhybxb90x44xi3r0i1";
+  libraryHaskellDepends = [ base Cabal directory filepath ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/cabal-doctest";
+  description = "A Setup.hs helper for running doctests";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cabal-install-solver.nix b/pkgs/cabal-install-solver.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ee92b24b71d393c4100e7512b35af20321a4e0d3
--- /dev/null
+++ b/pkgs/cabal-install-solver.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, Cabal
+, Cabal-syntax
+, containers
+, edit-distance
+, filepath
+, lib
+, mtl
+, pretty
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, transformers
+}:
+mkDerivation {
+  pname = "cabal-install-solver";
+  version = "3.8.1.0";
+  sha256 = "df2369f6c37517a3b2625bc19057d9e206bbb40386bcb607f17dc7d2e588ffe7";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    Cabal
+    Cabal-syntax
+    containers
+    edit-distance
+    filepath
+    mtl
+    pretty
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    Cabal
+    Cabal-syntax
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/cabal/";
+  description = "The command-line interface for Cabal and Hackage";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cabal-install.nix b/pkgs/cabal-install.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2fe4c97c5fd7de099b04974a8082512bb68d7194
--- /dev/null
+++ b/pkgs/cabal-install.nix
@@ -0,0 +1,147 @@
+{ mkDerivation
+, array
+, async
+, base
+, base16-bytestring
+, binary
+, bytestring
+, Cabal
+, Cabal-described
+, cabal-install-solver
+, Cabal-QuickCheck
+, Cabal-syntax
+, Cabal-tree-diff
+, containers
+, cryptohash-sha256
+, directory
+, echo
+, edit-distance
+, exceptions
+, filepath
+, hackage-security
+, hashable
+, HTTP
+, lib
+, lukko
+, mtl
+, network-uri
+, parsec
+, pretty
+, pretty-show
+, process
+, QuickCheck
+, random
+, regex-base
+, regex-posix
+, resolv
+, safe-exceptions
+, stm
+, tagged
+, tar
+, tasty
+, tasty-expected-failure
+, tasty-golden
+, tasty-hunit
+, tasty-quickcheck
+, text
+, time
+, tree-diff
+, unix
+, zlib
+}:
+mkDerivation {
+  pname = "cabal-install";
+  version = "3.8.1.0";
+  sha256 = "61ce436f2e14e12bf07ea1c81402362f46275014cd841a76566f0766d0ea67e6";
+  revision = "1";
+  editedCabalFile = "0d6g8q9g8xv69dk51d2jjnc2bv9ah59vn1p5xg1hn42filh35sa1";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    array
+    async
+    base
+    base16-bytestring
+    binary
+    bytestring
+    Cabal
+    cabal-install-solver
+    Cabal-syntax
+    containers
+    cryptohash-sha256
+    directory
+    echo
+    edit-distance
+    exceptions
+    filepath
+    hackage-security
+    hashable
+    HTTP
+    lukko
+    mtl
+    network-uri
+    parsec
+    pretty
+    process
+    random
+    regex-base
+    regex-posix
+    resolv
+    safe-exceptions
+    stm
+    tar
+    text
+    time
+    unix
+    zlib
+  ];
+  executableHaskellDepends = [
+    base
+    Cabal
+    Cabal-syntax
+    directory
+    filepath
+  ];
+  testHaskellDepends = [
+    array
+    base
+    bytestring
+    Cabal
+    Cabal-described
+    cabal-install-solver
+    Cabal-QuickCheck
+    Cabal-syntax
+    Cabal-tree-diff
+    containers
+    directory
+    filepath
+    hashable
+    mtl
+    network-uri
+    pretty-show
+    QuickCheck
+    random
+    tagged
+    tar
+    tasty
+    tasty-expected-failure
+    tasty-golden
+    tasty-hunit
+    tasty-quickcheck
+    time
+    tree-diff
+    zlib
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  postInstall = ''
+    mkdir -p $out/share/bash-completion
+    mv bash-completion $out/share/bash-completion/completions
+  '';
+  homepage = "http://www.haskell.org/cabal/";
+  description = "The command-line interface for Cabal and Hackage";
+  license = lib.licenses.bsd3;
+  mainProgram = "cabal";
+}
diff --git a/pkgs/cborg-json.nix b/pkgs/cborg-json.nix
new file mode 100644
index 0000000000000000000000000000000000000000..39103b81d1f5f884b38748ebd52b8ab600f13b08
--- /dev/null
+++ b/pkgs/cborg-json.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, base
+, bytestring
+, cborg
+, criterion
+, deepseq
+, directory
+, lib
+, process
+, scientific
+, text
+, unordered-containers
+, vector
+, zlib
+}:
+mkDerivation {
+  pname = "cborg-json";
+  version = "0.2.5.0";
+  sha256 = "58c373453f06fd8558e062c4fbe6dd862cb0ae28ac3c02ba3b607573bd077cd4";
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    base
+    cborg
+    scientific
+    text
+    unordered-containers
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    aeson
+    base
+    bytestring
+    cborg
+    criterion
+    deepseq
+    directory
+    process
+    zlib
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/well-typed/cborg";
+  description = "A library for encoding JSON as CBOR";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cborg.nix b/pkgs/cborg.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9f508ba2f7180c1672b5ab1e0f33e0122ee8de1f
--- /dev/null
+++ b/pkgs/cborg.nix
@@ -0,0 +1,66 @@
+{ mkDerivation
+, aeson
+, array
+, base
+, base-orphans
+, base16-bytestring
+, base64-bytestring
+, bytestring
+, containers
+, deepseq
+, ghc-bignum
+, ghc-prim
+, half
+, lib
+, primitive
+, QuickCheck
+, random
+, scientific
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, vector
+}:
+mkDerivation {
+  pname = "cborg";
+  version = "0.2.8.0";
+  sha256 = "2e59c827c273b57af0fcbbfb62f6d15faeb399e0d89d57baf8adcc60e62ab01e";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    deepseq
+    ghc-bignum
+    ghc-prim
+    half
+    primitive
+    text
+  ];
+  testHaskellDepends = [
+    aeson
+    array
+    base
+    base-orphans
+    base16-bytestring
+    base64-bytestring
+    bytestring
+    deepseq
+    half
+    QuickCheck
+    random
+    scientific
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Concise Binary Object Representation (CBOR)";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cereal.nix b/pkgs/cereal.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bcc990342c87b278236a4a3b250b0c1287c86651
--- /dev/null
+++ b/pkgs/cereal.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, ghc-prim
+, lib
+, QuickCheck
+, test-framework
+, test-framework-quickcheck2
+}:
+mkDerivation {
+  pname = "cereal";
+  version = "0.5.8.3";
+  sha256 = "99905220661b26e5bd91130bd9772554938608a5b1d717240a6eb331121e0f6a";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    ghc-prim
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    QuickCheck
+    test-framework
+    test-framework-quickcheck2
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/GaloisInc/cereal";
+  description = "A binary serialization library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/citeproc.nix b/pkgs/citeproc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a0b4ab88aa687e42c31a2c225e32ef206902d638
--- /dev/null
+++ b/pkgs/citeproc.nix
@@ -0,0 +1,73 @@
+{ mkDerivation
+, aeson
+, attoparsec
+, base
+, bytestring
+, case-insensitive
+, containers
+, data-default
+, Diff
+, directory
+, file-embed
+, filepath
+, lib
+, mtl
+, pandoc-types
+, pretty
+, safe
+, scientific
+, text
+, timeit
+, transformers
+, unicode-collation
+, uniplate
+, vector
+, xml-conduit
+}:
+mkDerivation {
+  pname = "citeproc";
+  version = "0.8.0.1";
+  sha256 = "67a852a7a9e0fa00713996e546045c11360ad9374e450cfe35154e69a0bfbfb7";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    attoparsec
+    base
+    bytestring
+    case-insensitive
+    containers
+    data-default
+    file-embed
+    filepath
+    pandoc-types
+    safe
+    scientific
+    text
+    transformers
+    unicode-collation
+    uniplate
+    vector
+    xml-conduit
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    Diff
+    directory
+    filepath
+    mtl
+    pretty
+    text
+    timeit
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Generates citations and bibliography from CSL styles";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/co-log-core.nix b/pkgs/co-log-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e39a227e8eedfcaa15b997581b5a1ea3a12d5fd0
--- /dev/null
+++ b/pkgs/co-log-core.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, doctest, Glob, lib }:
+mkDerivation {
+  pname = "co-log-core";
+  version = "0.3.1.0";
+  sha256 = "29720bee51dd0c89f35e27b89985a469a0436dc58750f4825874572e2a6317ec";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base doctest Glob ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/co-log/co-log-core";
+  description = "Composable Contravariant Comonadic Logging Library";
+  license = lib.licenses.mpl20;
+}
diff --git a/pkgs/comonad.nix b/pkgs/comonad.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b26e36ba11097d5c59f3a869bb693813051edbc8
--- /dev/null
+++ b/pkgs/comonad.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, containers
+, distributive
+, indexed-traversable
+, lib
+, tagged
+, transformers
+, transformers-compat
+}:
+mkDerivation {
+  pname = "comonad";
+  version = "5.0.8";
+  sha256 = "ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13";
+  revision = "1";
+  editedCabalFile = "0zlgkcd61cwsdbgjz03pfbjxhj6dc25792h7rwh0zy677vbsn6hz";
+  libraryHaskellDepends = [
+    base
+    containers
+    distributive
+    indexed-traversable
+    tagged
+    transformers
+    transformers-compat
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/comonad/";
+  description = "Comonads";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/compact.nix b/pkgs/compact.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bac9585bb9e5e67c554584a5ff1db293d681deb3
--- /dev/null
+++ b/pkgs/compact.nix
@@ -0,0 +1,24 @@
+{ mkDerivation
+, base
+, binary
+, bytestring
+, directory
+, ghc-compact
+, lib
+}:
+mkDerivation {
+  pname = "compact";
+  version = "0.2.0.0";
+  sha256 = "03a6b534f4f8f06fe1f3921be74f90c2fab9da7f28e7520612c91c28da266277";
+  revision = "1";
+  editedCabalFile = "1013dkawaw3c6hvlfn9x584pq8z65fvbnp79dl6ll6r0a75rivvm";
+  libraryHaskellDepends = [ base binary bytestring ghc-compact ];
+  testHaskellDepends = [ base directory ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ezyang/compact";
+  description = "Non-GC'd, contiguous storage for immutable data structures";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/compactable.nix b/pkgs/compactable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d632014a1a01e5aa555b8d98756521dfaaafc2a5
--- /dev/null
+++ b/pkgs/compactable.nix
@@ -0,0 +1,69 @@
+{ mkDerivation
+, aeson
+, base
+, base-compat
+, bifunctors
+, containers
+, contravariant
+, data-default-class
+, deepseq
+, genvalidity
+, genvalidity-sydtest
+, hashable
+, keys
+, lens
+, lib
+, QuickCheck
+, semigroupoids
+, sydtest
+, sydtest-discover
+, these
+, transformers
+, transformers-compat
+, unordered-containers
+, vector
+, vector-instances
+}:
+mkDerivation {
+  pname = "compactable";
+  version = "0.2.0.0";
+  sha256 = "871c6e5a6d0b9a27624a3393a0b048358cf9289b8e35535bb11c469f56cdec59";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base-compat
+    bifunctors
+    containers
+    contravariant
+    data-default-class
+    deepseq
+    hashable
+    keys
+    lens
+    QuickCheck
+    semigroupoids
+    these
+    transformers
+    transformers-compat
+    unordered-containers
+    vector
+    vector-instances
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    genvalidity
+    genvalidity-sydtest
+    QuickCheck
+    sydtest
+    sydtest-discover
+    these
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "A typeclass for structures which can be catMaybed, filtered, and partitioned";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/composite-base.nix b/pkgs/composite-base.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b1512872654a1cb9d0d1db9d246d9019f5e960bd
--- /dev/null
+++ b/pkgs/composite-base.nix
@@ -0,0 +1,62 @@
+{ mkDerivation
+, base
+, deepseq
+, exceptions
+, hspec
+, lens
+, lib
+, monad-control
+, mtl
+, profunctors
+, QuickCheck
+, template-haskell
+, text
+, transformers
+, transformers-base
+, unliftio-core
+, vinyl
+}:
+mkDerivation {
+  pname = "composite-base";
+  version = "0.8.1.0";
+  sha256 = "a8de050a65b8d3febfd48ea0d7b9bb215c8473b7dda7760d7c2df279a92258a3";
+  libraryHaskellDepends = [
+    base
+    deepseq
+    exceptions
+    lens
+    monad-control
+    mtl
+    profunctors
+    template-haskell
+    text
+    transformers
+    transformers-base
+    unliftio-core
+    vinyl
+  ];
+  testHaskellDepends = [
+    base
+    deepseq
+    exceptions
+    hspec
+    lens
+    monad-control
+    mtl
+    profunctors
+    QuickCheck
+    template-haskell
+    text
+    transformers
+    transformers-base
+    unliftio-core
+    vinyl
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/composite-hs/composite-base#readme";
+  description = "Shared utilities for composite-* packages";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/composite-cassava.nix b/pkgs/composite-cassava.nix
new file mode 100644
index 0000000000000000000000000000000000000000..508ae206415ff1eb3e56828ae57fb17fec67e028
--- /dev/null
+++ b/pkgs/composite-cassava.nix
@@ -0,0 +1,42 @@
+{ mkDerivation
+, base
+, bytestring
+, cassava
+, composite-base
+, lib
+, tasty
+, tasty-hunit
+, text
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "composite-cassava";
+  version = "0.0.3.1";
+  sha256 = "aa776b23dcf8ad3833159777eb5e0230dd2681527d7089fd072a618cca791e8d";
+  libraryHaskellDepends = [
+    base
+    cassava
+    composite-base
+    text
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    cassava
+    composite-base
+    tasty
+    tasty-hunit
+    text
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Csv parsing functionality for composite";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/composite-dhall.nix b/pkgs/composite-dhall.nix
new file mode 100644
index 0000000000000000000000000000000000000000..331ff31eace8690d07c6bebe81225704e3d7fab9
--- /dev/null
+++ b/pkgs/composite-dhall.nix
@@ -0,0 +1,31 @@
+{ mkDerivation
+, base
+, composite-base
+, dhall
+, lib
+, tasty
+, tasty-hunit
+, text
+, vinyl
+}:
+mkDerivation {
+  pname = "composite-dhall";
+  version = "0.1.0.1";
+  sha256 = "aa6c8a8a05c5aa5cc7c76440f57f9459f7f3aa07b1f4b290549a17c196c2eb34";
+  libraryHaskellDepends = [ base composite-base dhall text vinyl ];
+  testHaskellDepends = [
+    base
+    composite-base
+    dhall
+    tasty
+    tasty-hunit
+    text
+    vinyl
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Dhall instances for composite records";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/composite-lens-extra.nix b/pkgs/composite-lens-extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..61327548013fe2743937b18496e7864d523605e1
--- /dev/null
+++ b/pkgs/composite-lens-extra.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, base, composite-base, lens, lib, vinyl }:
+mkDerivation {
+  pname = "composite-lens-extra";
+  version = "0.1.0.0";
+  sha256 = "778c01cc88cd62f9302968164e76c7bd7e0642924f5f0c1a2e880c3877fc4b24";
+  libraryHaskellDepends = [ base composite-base lens vinyl ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Extra lens functions for composite";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/composite-tuple.nix b/pkgs/composite-tuple.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0f51d1cff3e091feeafe00e260ffd038645d4835
--- /dev/null
+++ b/pkgs/composite-tuple.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, composite-base, lib }:
+mkDerivation {
+  pname = "composite-tuple";
+  version = "0.1.2.0";
+  sha256 = "8164e73058eab642b22244057c1b4b26359d02cda53637bc1c9c8a5f30f9bd78";
+  revision = "1";
+  editedCabalFile = "0j7mj8g3v4x0vy4rbx00kxb7d41r3s3djbfin9f1h592ahyap1va";
+  libraryHaskellDepends = [ base composite-base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Tuple functions for composite records";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/conduit-extra.nix b/pkgs/conduit-extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..924aeb8ce684402b4e8be1bbad75509d66c2e762
--- /dev/null
+++ b/pkgs/conduit-extra.nix
@@ -0,0 +1,84 @@
+{ mkDerivation
+, async
+, attoparsec
+, base
+, bytestring
+, conduit
+, directory
+, exceptions
+, filepath
+, gauge
+, hspec
+, hspec-discover
+, lib
+, network
+, primitive
+, process
+, QuickCheck
+, resourcet
+, stm
+, streaming-commons
+, text
+, transformers
+, transformers-base
+, typed-process
+, unliftio-core
+}:
+mkDerivation {
+  pname = "conduit-extra";
+  version = "1.3.6";
+  sha256 = "8950c38049d892c38590d389bed49ecf880671f58ec63dd4709d9fe3d4b8f153";
+  libraryHaskellDepends = [
+    async
+    attoparsec
+    base
+    bytestring
+    conduit
+    directory
+    filepath
+    network
+    primitive
+    process
+    resourcet
+    stm
+    streaming-commons
+    text
+    transformers
+    typed-process
+    unliftio-core
+  ];
+  testHaskellDepends = [
+    async
+    attoparsec
+    base
+    bytestring
+    conduit
+    directory
+    exceptions
+    filepath
+    hspec
+    process
+    QuickCheck
+    resourcet
+    stm
+    streaming-commons
+    text
+    transformers
+    transformers-base
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    conduit
+    gauge
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/snoyberg/conduit";
+  description = "Batteries included conduit: adapters for common libraries";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/conduit.nix b/pkgs/conduit.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b4459b91ea7534784e1e6a37b6421289ea0e3921
--- /dev/null
+++ b/pkgs/conduit.nix
@@ -0,0 +1,87 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, deepseq
+, directory
+, exceptions
+, filepath
+, gauge
+, hspec
+, kan-extensions
+, lib
+, mono-traversable
+, mtl
+, mwc-random
+, primitive
+, QuickCheck
+, resourcet
+, safe
+, silently
+, split
+, text
+, transformers
+, unix
+, unliftio
+, unliftio-core
+, vector
+}:
+mkDerivation {
+  pname = "conduit";
+  version = "1.3.4.2";
+  sha256 = "2cb9832f27c7cd50daed1309f688afc4da1bd49697cbeda8ec3f81ab0bcf2197";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    directory
+    exceptions
+    filepath
+    mono-traversable
+    mtl
+    primitive
+    resourcet
+    text
+    transformers
+    unix
+    unliftio-core
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    directory
+    exceptions
+    filepath
+    hspec
+    mono-traversable
+    mtl
+    QuickCheck
+    resourcet
+    safe
+    silently
+    split
+    text
+    transformers
+    unliftio
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    base
+    containers
+    deepseq
+    gauge
+    hspec
+    kan-extensions
+    mwc-random
+    transformers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/snoyberg/conduit";
+  description = "Streaming data processing library";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/config-ini.nix b/pkgs/config-ini.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a9f1909358db064a5b1f03f390b5ed7b4346483c
--- /dev/null
+++ b/pkgs/config-ini.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, base
+, containers
+, directory
+, hedgehog
+, ini
+, lib
+, megaparsec
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "config-ini";
+  version = "0.2.5.0";
+  sha256 = "6f7ce53c22392b5b41e3c0a9853e4183c3bbcb18010f9630f48a90f69bbf6f1f";
+  libraryHaskellDepends = [
+    base
+    containers
+    megaparsec
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    directory
+    hedgehog
+    ini
+    text
+    unordered-containers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/aisamanra/config-ini";
+  description = "A library for simple INI-based configuration files";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/constraints.nix b/pkgs/constraints.nix
new file mode 100644
index 0000000000000000000000000000000000000000..07598782bb65b51bb130746d4c84e147a5848b5c
--- /dev/null
+++ b/pkgs/constraints.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, binary
+, deepseq
+, ghc-prim
+, hashable
+, hspec
+, hspec-discover
+, lib
+, mtl
+, transformers
+, transformers-compat
+, type-equality
+}:
+mkDerivation {
+  pname = "constraints";
+  version = "0.13.4";
+  sha256 = "4186946df4b88c5d7cae3a42aa426f30fd5d249835ea1d290e139cebbf464434";
+  libraryHaskellDepends = [
+    base
+    binary
+    deepseq
+    ghc-prim
+    hashable
+    mtl
+    transformers
+    transformers-compat
+    type-equality
+  ];
+  testHaskellDepends = [ base hspec ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/constraints/";
+  description = "Constraint manipulation";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/cryptohash-sha1.nix b/pkgs/cryptohash-sha1.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9637e672a8d4b67852253291579ccb2551a7c069
--- /dev/null
+++ b/pkgs/cryptohash-sha1.nix
@@ -0,0 +1,36 @@
+{ mkDerivation
+, base
+, base16-bytestring
+, bytestring
+, criterion
+, lib
+, SHA
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+}:
+mkDerivation {
+  pname = "cryptohash-sha1";
+  version = "0.11.101.0";
+  sha256 = "a4042c97ad02eb68e766577ca35c01970c33e96cfd74ccb4dd403e3476a23241";
+  revision = "1";
+  editedCabalFile = "0bz9rfl7b2iwn45m0lxcmsyi5rrv3xdgzx2lzr79bds91dw6i25b";
+  libraryHaskellDepends = [ base bytestring ];
+  testHaskellDepends = [
+    base
+    base16-bytestring
+    bytestring
+    SHA
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  benchmarkHaskellDepends = [ base bytestring criterion ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/hvr/cryptohash-sha1";
+  description = "Fast, pure and practical SHA-1 implementation";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cryptonite.nix b/pkgs/cryptonite.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e6660effa51fa9864e9880dae4161db55669c651
--- /dev/null
+++ b/pkgs/cryptonite.nix
@@ -0,0 +1,54 @@
+{ mkDerivation
+, base
+, basement
+, bytestring
+, deepseq
+, gauge
+, ghc-prim
+, integer-gmp
+, lib
+, memory
+, random
+, tasty
+, tasty-hunit
+, tasty-kat
+, tasty-quickcheck
+}:
+mkDerivation {
+  pname = "cryptonite";
+  version = "0.30";
+  sha256 = "56099c8a8aa01d2ee914b670c97c1f818186dbb886e2025b73d9c2afe3496b1d";
+  libraryHaskellDepends = [
+    base
+    basement
+    bytestring
+    deepseq
+    ghc-prim
+    integer-gmp
+    memory
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    memory
+    tasty
+    tasty-hunit
+    tasty-kat
+    tasty-quickcheck
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    gauge
+    memory
+    random
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-crypto/cryptonite";
+  description = "Cryptography Primitives sink";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/data-fix.nix b/pkgs/data-fix.nix
new file mode 100644
index 0000000000000000000000000000000000000000..61d17d73b6319cbe281aacf46f95adca155fe68c
--- /dev/null
+++ b/pkgs/data-fix.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, deepseq, hashable, lib }:
+mkDerivation {
+  pname = "data-fix";
+  version = "0.3.2";
+  sha256 = "3a172d3bc0639c327345e965f9d9023e099425814b28dcdb7b60ff66d66219cc";
+  revision = "3";
+  editedCabalFile = "0z77i9y86wlc13396akl8qxq39rwpkhhcs5fadzk47bwn7v1gsmx";
+  libraryHaskellDepends = [ base deepseq hashable ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/spell-music/data-fix";
+  description = "Fixpoint data types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/dec.nix b/pkgs/dec.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d44d4289e5e4478bf4badefc028f66b261ff8520
--- /dev/null
+++ b/pkgs/dec.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, boring, lib }:
+mkDerivation {
+  pname = "dec";
+  version = "0.0.5";
+  sha256 = "e18043c7c7e68168489f164921a02efede0c0175a5012ed5451ec2242338df88";
+  libraryHaskellDepends = [ base boring ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/vec";
+  description = "Decidable propositions";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/dhall.nix b/pkgs/dhall.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fe73f8c6a62560f5bf7b46449ba914ef919c5d9a
--- /dev/null
+++ b/pkgs/dhall.nix
@@ -0,0 +1,317 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, ansi-terminal
+, atomic-write
+, base
+, base16-bytestring
+, bytestring
+, case-insensitive
+, cborg
+, cborg-json
+, containers
+, contravariant
+, cryptohash-sha256
+, data-fix
+, deepseq
+, Diff
+, directory
+, doctest
+, dotgen
+, either
+, exceptions
+, filepath
+, foldl
+, gauge
+, generic-random
+, half
+, hashable
+, haskeline
+, http-client
+, http-client-tls
+, http-types
+, indexed-traversable
+, lens-family-core
+, lib
+, megaparsec
+, mmorph
+, mockery
+, mtl
+, network-uri
+, optparse-applicative
+, parser-combinators
+, parsers
+, pretty-simple
+, prettyprinter
+, prettyprinter-ansi-terminal
+, profunctors
+, QuickCheck
+, quickcheck-instances
+, repline
+, scientific
+, serialise
+, special-values
+, spoon
+, system-filepath
+, tasty
+, tasty-expected-failure
+, tasty-hunit
+, tasty-quickcheck
+, tasty-silver
+, template-haskell
+, temporary
+, text
+, text-manipulate
+, text-short
+, th-lift-instances
+, time
+, transformers
+, turtle
+, unordered-containers
+, uri-encode
+, vector
+}:
+mkDerivation {
+  pname = "dhall";
+  version = "1.41.2";
+  sha256 = "6a9a026e698e5c1a1e103fcb376e8494615b03ef2450f0b6c5e6b43877cea592";
+  revision = "1";
+  editedCabalFile = "1gi2j6d3mh0wqx6756cp04c676843wdibfwv3i2wypvsk74dlvjm";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    ansi-terminal
+    atomic-write
+    base
+    base16-bytestring
+    bytestring
+    case-insensitive
+    cborg
+    cborg-json
+    containers
+    contravariant
+    cryptohash-sha256
+    data-fix
+    deepseq
+    Diff
+    directory
+    dotgen
+    either
+    exceptions
+    filepath
+    half
+    hashable
+    haskeline
+    http-client
+    http-client-tls
+    http-types
+    indexed-traversable
+    lens-family-core
+    megaparsec
+    mmorph
+    mtl
+    network-uri
+    optparse-applicative
+    parser-combinators
+    parsers
+    pretty-simple
+    prettyprinter
+    prettyprinter-ansi-terminal
+    profunctors
+    repline
+    scientific
+    serialise
+    template-haskell
+    text
+    text-manipulate
+    text-short
+    th-lift-instances
+    time
+    transformers
+    unordered-containers
+    uri-encode
+    vector
+  ];
+  executableHaskellDepends = [
+    aeson
+    aeson-pretty
+    ansi-terminal
+    atomic-write
+    base
+    base16-bytestring
+    bytestring
+    case-insensitive
+    cborg
+    cborg-json
+    containers
+    contravariant
+    data-fix
+    deepseq
+    Diff
+    directory
+    dotgen
+    either
+    exceptions
+    filepath
+    half
+    hashable
+    haskeline
+    indexed-traversable
+    lens-family-core
+    megaparsec
+    mmorph
+    mtl
+    network-uri
+    optparse-applicative
+    parser-combinators
+    parsers
+    pretty-simple
+    prettyprinter
+    prettyprinter-ansi-terminal
+    profunctors
+    repline
+    scientific
+    serialise
+    template-haskell
+    text
+    text-manipulate
+    text-short
+    th-lift-instances
+    time
+    transformers
+    unordered-containers
+    uri-encode
+    vector
+  ];
+  testHaskellDepends = [
+    aeson
+    aeson-pretty
+    ansi-terminal
+    atomic-write
+    base
+    base16-bytestring
+    bytestring
+    case-insensitive
+    cborg
+    cborg-json
+    containers
+    contravariant
+    data-fix
+    deepseq
+    Diff
+    directory
+    doctest
+    dotgen
+    either
+    exceptions
+    filepath
+    foldl
+    generic-random
+    half
+    hashable
+    haskeline
+    http-client
+    http-client-tls
+    indexed-traversable
+    lens-family-core
+    megaparsec
+    mmorph
+    mockery
+    mtl
+    network-uri
+    optparse-applicative
+    parser-combinators
+    parsers
+    pretty-simple
+    prettyprinter
+    prettyprinter-ansi-terminal
+    profunctors
+    QuickCheck
+    quickcheck-instances
+    repline
+    scientific
+    serialise
+    special-values
+    spoon
+    system-filepath
+    tasty
+    tasty-expected-failure
+    tasty-hunit
+    tasty-quickcheck
+    tasty-silver
+    template-haskell
+    temporary
+    text
+    text-manipulate
+    text-short
+    th-lift-instances
+    time
+    transformers
+    turtle
+    unordered-containers
+    uri-encode
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    aeson
+    aeson-pretty
+    ansi-terminal
+    atomic-write
+    base
+    base16-bytestring
+    bytestring
+    case-insensitive
+    cborg
+    cborg-json
+    containers
+    contravariant
+    data-fix
+    deepseq
+    Diff
+    directory
+    dotgen
+    either
+    exceptions
+    filepath
+    gauge
+    half
+    hashable
+    haskeline
+    indexed-traversable
+    lens-family-core
+    megaparsec
+    mmorph
+    mtl
+    network-uri
+    optparse-applicative
+    parser-combinators
+    parsers
+    pretty-simple
+    prettyprinter
+    prettyprinter-ansi-terminal
+    profunctors
+    repline
+    scientific
+    serialise
+    template-haskell
+    text
+    text-manipulate
+    text-short
+    th-lift-instances
+    time
+    transformers
+    unordered-containers
+    uri-encode
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "A configuration language guaranteed to terminate";
+  license = lib.licenses.bsd3;
+  mainProgram = "dhall";
+}
diff --git a/pkgs/dimensional.nix b/pkgs/dimensional.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fbe1ad869f94ddc89957ade42c0a87d6f87e44db
--- /dev/null
+++ b/pkgs/dimensional.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, criterion
+, deepseq
+, doctest
+, exact-pi
+, Glob
+, hspec
+, hspec-discover
+, ieee754
+, lib
+, numtype-dk
+, QuickCheck
+, template-haskell
+, vector
+}:
+mkDerivation {
+  pname = "dimensional";
+  version = "1.5";
+  sha256 = "da9ad59b8feebbc038f824bc960a099fc5ccc8cb1d234f12c230044be906a599";
+  libraryHaskellDepends = [
+    base
+    deepseq
+    exact-pi
+    ieee754
+    numtype-dk
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    doctest
+    Glob
+    hspec
+    QuickCheck
+    template-haskell
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [ base criterion deepseq ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/bjornbm/dimensional/";
+  description = "Statically checked physical dimensions";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/doctest.nix b/pkgs/doctest.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0375527273f29a85023892743a2d2c3b4599425f
--- /dev/null
+++ b/pkgs/doctest.nix
@@ -0,0 +1,96 @@
+{ mkDerivation
+, base
+, base-compat
+, code-page
+, deepseq
+, directory
+, exceptions
+, fetchgit
+, filepath
+, ghc
+, ghc-paths
+, hspec
+, hspec-core
+, hspec-discover
+, HUnit
+, lib
+, mockery
+, process
+, QuickCheck
+, setenv
+, silently
+, stringbuilder
+, syb
+, transformers
+}:
+mkDerivation {
+  pname = "doctest";
+  version = "0.20.0";
+  src = fetchgit {
+    url = "https://github.com/sol/doctest";
+    sha256 = "1i29zi7qgbkjz7cg4s1qdgjblfvb601kcc7jizlh2vghskjmxi77";
+    rev = "4eb97c213acf7abe965a3a1b67397199ed155f3c";
+    fetchSubmodules = true;
+  };
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    base-compat
+    code-page
+    deepseq
+    directory
+    exceptions
+    filepath
+    ghc
+    ghc-paths
+    process
+    syb
+    transformers
+  ];
+  executableHaskellDepends = [
+    base
+    base-compat
+    code-page
+    deepseq
+    directory
+    exceptions
+    filepath
+    ghc
+    ghc-paths
+    process
+    syb
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    base-compat
+    code-page
+    deepseq
+    directory
+    exceptions
+    filepath
+    ghc
+    ghc-paths
+    hspec
+    hspec-core
+    HUnit
+    mockery
+    process
+    QuickCheck
+    setenv
+    silently
+    stringbuilder
+    syb
+    transformers
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/sol/doctest#readme";
+  description = "Test interactive Haskell examples";
+  license = lib.licenses.mit;
+  mainProgram = "doctest";
+}
diff --git a/pkgs/double-conversion.nix b/pkgs/double-conversion.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5f889a133edea9b94d24a0821263598cd70f8313
--- /dev/null
+++ b/pkgs/double-conversion.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, bytestring
+, fetchgit
+, ghc-prim
+, HUnit
+, lib
+, system-cxx-std-lib
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, text
+}:
+mkDerivation {
+  pname = "double-conversion";
+  version = "2.0.4.1";
+  src = fetchgit {
+    url = "https://github.com/haskell/double-conversion";
+    sha256 = "0z27zd1nyydz6hirbbdyhqmd4nbxcn7vcfx6jvlygrm4jwmhkr9b";
+    rev = "5d092e0664442eaac8ae1d101dba57ce9b1c9b03";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    bytestring
+    ghc-prim
+    system-cxx-std-lib
+    text
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    HUnit
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/double-conversion";
+  description = "Fast conversion between single and double precision floating point and text";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ed25519.nix b/pkgs/ed25519.nix
new file mode 100644
index 0000000000000000000000000000000000000000..978b4a71595bd8ab7c3f413c88c56e07ee343d48
--- /dev/null
+++ b/pkgs/ed25519.nix
@@ -0,0 +1,42 @@
+{ mkDerivation
+, base
+, bytestring
+, criterion
+, deepseq
+, directory
+, doctest
+, fetchgit
+, filepath
+, ghc-prim
+, hlint
+, lib
+, QuickCheck
+}:
+mkDerivation {
+  pname = "ed25519";
+  version = "0.0.5.0";
+  src = fetchgit {
+    url = "https://gitlab.homotopic.tech/horizon/adopted/ed25519";
+    sha256 = "1rfvp3jx1vv16yg4lnfzni380xx6jrghn6nq6s2vqm5nd40p5vyi";
+    rev = "faf8fe90aa1cd2492ea1e64c55f5c59fc0322210";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [ base bytestring ghc-prim ];
+  testHaskellDepends = [
+    base
+    bytestring
+    directory
+    doctest
+    filepath
+    hlint
+    QuickCheck
+  ];
+  benchmarkHaskellDepends = [ base bytestring criterion deepseq ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://thoughtpolice.github.com/hs-ed25519";
+  description = "Ed25519 cryptographic signatures";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/effectful-cache.nix b/pkgs/effectful-cache.nix
new file mode 100644
index 0000000000000000000000000000000000000000..df4587e3ddaa150bfe8f46605e40bb155da69e6e
--- /dev/null
+++ b/pkgs/effectful-cache.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, base
+, cache
+, effectful-core
+, fetchgit
+, hashable
+, lib
+, tasty
+, tasty-hunit
+}:
+mkDerivation {
+  pname = "effectful-cache";
+  version = "0.0.1.0";
+  src = fetchgit {
+    url = "https://github.com/haskell-effectful/cache-effectful";
+    sha256 = "01df89vls5653svqqfqq36wj45wc14qpw1dqwz4q9khglvc81ba9";
+    rev = "0a5581da7c21a05a9ab1762a6da6997090fe311d";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [ base cache effectful-core hashable ];
+  testHaskellDepends = [
+    base
+    cache
+    effectful-core
+    hashable
+    tasty
+    tasty-hunit
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-effectful/effectful-cache/tree/main/effectful-cache#readme";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/effectful-core.nix b/pkgs/effectful-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..de5471b2a09569627bf0b301c3c88376cd52ba0b
--- /dev/null
+++ b/pkgs/effectful-core.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, containers
+, exceptions
+, lib
+, monad-control
+, primitive
+, transformers-base
+, unliftio-core
+}:
+mkDerivation {
+  pname = "effectful-core";
+  version = "2.1.0.0";
+  sha256 = "93920bb5b58d6c92f51823c95e436a1a35c40fa677ee4f96014267698c43efd1";
+  libraryHaskellDepends = [
+    base
+    containers
+    exceptions
+    monad-control
+    primitive
+    transformers-base
+    unliftio-core
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "An easy to use, performant extensible effects library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/effectful-th.nix b/pkgs/effectful-th.nix
new file mode 100644
index 0000000000000000000000000000000000000000..65b61c5416a51a24318da8a2f3d545d346a160d8
--- /dev/null
+++ b/pkgs/effectful-th.nix
@@ -0,0 +1,31 @@
+{ mkDerivation
+, base
+, containers
+, effectful
+, exceptions
+, lib
+, template-haskell
+, th-abstraction
+}:
+mkDerivation {
+  pname = "effectful-th";
+  version = "1.0.0.0";
+  sha256 = "302605bbc2bb8a1b97308d9611faf5e121958b846cbeb9421e2657a902ef7a63";
+  revision = "3";
+  editedCabalFile = "1nqwvgdvqgh4dvkidyaga7jd95p3hn54hy5gwadsvyf9lll4vjck";
+  libraryHaskellDepends = [
+    base
+    containers
+    effectful
+    exceptions
+    template-haskell
+    th-abstraction
+  ];
+  testHaskellDepends = [ base effectful ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Template Haskell utilities for the effectful library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/effectful.nix b/pkgs/effectful.nix
new file mode 100644
index 0000000000000000000000000000000000000000..47c505f4361f799278fd643b95bd82c6d63fe63b
--- /dev/null
+++ b/pkgs/effectful.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, async
+, base
+, bytestring
+, containers
+, directory
+, effectful-core
+, exceptions
+, lib
+, lifted-base
+, process
+, stm
+, tasty
+, tasty-bench
+, tasty-hunit
+, text
+, time
+, unix
+, unliftio
+}:
+mkDerivation {
+  pname = "effectful";
+  version = "2.1.0.0";
+  sha256 = "76147d4d761d3267607a5f71c5925cbb2e8ae538aacaf6c6ddd9574eabec739b";
+  libraryHaskellDepends = [
+    async
+    base
+    bytestring
+    directory
+    effectful-core
+    process
+    stm
+    time
+    unliftio
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    effectful-core
+    exceptions
+    lifted-base
+    tasty
+    tasty-hunit
+    unliftio
+  ];
+  benchmarkHaskellDepends = [
+    async
+    base
+    tasty-bench
+    text
+    unix
+    unliftio
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "An easy to use, performant extensible effects library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ema.nix b/pkgs/ema.nix
new file mode 100644
index 0000000000000000000000000000000000000000..40f9ee99289da421e091c076a3789607cf2c117a
--- /dev/null
+++ b/pkgs/ema.nix
@@ -0,0 +1,113 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, blaze-html
+, blaze-markup
+, constraints-extras
+, containers
+, data-default
+, dependent-sum
+, dependent-sum-template
+, directory
+, fetchgit
+, file-embed
+, filepath
+, filepattern
+, fsnotify
+, generic-optics
+, generics-sop
+, http-types
+, lib
+, lvar
+, monad-logger
+, monad-logger-extras
+, mtl
+, neat-interpolation
+, optics-core
+, optparse-applicative
+, pandoc
+, pandoc-types
+, raw-strings-qq
+, relude
+, sop-core
+, template-haskell
+, text
+, time
+, unionmount
+, unliftio
+, url-slug
+, wai
+, wai-middleware-static
+, wai-websockets
+, warp
+, websockets
+}:
+mkDerivation {
+  pname = "ema";
+  version = "0.8.2.0";
+  src = fetchgit {
+    url = "https://github.com/EmaApps/ema";
+    sha256 = "0i7ijx85w1bhb98ppi5lj8ypq9jkhv2268cynj492dfd7hnbhzfv";
+    rev = "be89ffe306a15ab4a16494c8593d989fabcc4486";
+    fetchSubmodules = true;
+  };
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    async
+    base
+    blaze-html
+    blaze-markup
+    constraints-extras
+    containers
+    data-default
+    dependent-sum
+    dependent-sum-template
+    directory
+    file-embed
+    filepath
+    filepattern
+    fsnotify
+    generic-optics
+    generics-sop
+    http-types
+    lvar
+    monad-logger
+    monad-logger-extras
+    mtl
+    neat-interpolation
+    optics-core
+    optparse-applicative
+    pandoc
+    pandoc-types
+    relude
+    sop-core
+    template-haskell
+    text
+    time
+    unionmount
+    unliftio
+    url-slug
+    wai
+    wai-middleware-static
+    wai-websockets
+    warp
+    websockets
+  ];
+  testHaskellDepends = [
+    base
+    generics-sop
+    raw-strings-qq
+    template-haskell
+    text
+    url-slug
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://ema.srid.ca/";
+  description = "Static site generator library with hot reload";
+  license = lib.licenses.agpl3Only;
+}
diff --git a/pkgs/email-validate.nix b/pkgs/email-validate.nix
new file mode 100644
index 0000000000000000000000000000000000000000..05e17e100668b7c43936108667803c44955e625f
--- /dev/null
+++ b/pkgs/email-validate.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, attoparsec
+, base
+, bytestring
+, doctest
+, hspec
+, lib
+, QuickCheck
+, template-haskell
+}:
+mkDerivation {
+  pname = "email-validate";
+  version = "2.3.2.16";
+  sha256 = "b8e5f155c1ba78ae25be88858b201d138cd1363519572edd9a13a9d086f023b3";
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    bytestring
+    template-haskell
+  ];
+  testHaskellDepends = [ base bytestring doctest hspec QuickCheck ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Porges/email-validate-hs";
+  description = "Email address validation";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/extra.nix b/pkgs/extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3147160cd9c08dd107c77f127ec9fd2bb0517bf0
--- /dev/null
+++ b/pkgs/extra.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, base
+, clock
+, directory
+, filepath
+, lib
+, process
+, QuickCheck
+, quickcheck-instances
+, time
+, unix
+}:
+mkDerivation {
+  pname = "extra";
+  version = "1.7.12";
+  sha256 = "e571a9ec1d8865f0fbb0e0ba1eb575f783b0365c80db19b54a93600bae43b03c";
+  libraryHaskellDepends = [
+    base
+    clock
+    directory
+    filepath
+    process
+    time
+    unix
+  ];
+  testHaskellDepends = [
+    base
+    directory
+    filepath
+    QuickCheck
+    quickcheck-instances
+    unix
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ndmitchell/extra#readme";
+  description = "Extra functions I use";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/fcf-containers.nix b/pkgs/fcf-containers.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4eb346b79be39dc875648279bbbd3c325e917919
--- /dev/null
+++ b/pkgs/fcf-containers.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, doctest
+, first-class-families
+, ghc-prim
+, lib
+, mtl
+}:
+mkDerivation {
+  pname = "fcf-containers";
+  version = "0.7.1";
+  sha256 = "1a8fedce82b6daca5a0ea0e9b1913da3e908db2cea0f6efbfa9f1305d1df6488";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base first-class-families ghc-prim mtl ];
+  executableHaskellDepends = [ base first-class-families ];
+  testHaskellDepends = [
+    base
+    doctest
+    first-class-families
+    ghc-prim
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/gspia/fcf-containers";
+  description = "Data structures and algorithms for first-class-families";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/finite-field.nix b/pkgs/finite-field.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b55e72960d47c31a99298469e790fe380a0556f0
--- /dev/null
+++ b/pkgs/finite-field.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, containers
+, deepseq
+, hashable
+, lib
+, primes
+, QuickCheck
+, singletons
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, tasty-th
+, template-haskell
+}:
+mkDerivation {
+  pname = "finite-field";
+  version = "0.10.0";
+  sha256 = "b279ac001447da39cae504ecd3fc5efed43814fdf6f680c0d4a8afd7086882b3";
+  libraryHaskellDepends = [
+    base
+    deepseq
+    hashable
+    singletons
+    template-haskell
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    deepseq
+    hashable
+    primes
+    QuickCheck
+    singletons
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    tasty-th
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Finite Fields";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/first-class-families.nix b/pkgs/first-class-families.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a32fb46570c275dac59072b4fa93a9c67a44c174
--- /dev/null
+++ b/pkgs/first-class-families.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "first-class-families";
+  version = "0.8.0.1";
+  sha256 = "4a1c8fbdbe01757ea8dc3190050d7a4a72c86e205d23676182292fe192c1da72";
+  revision = "2";
+  editedCabalFile = "0idiqb4ckwa7hya827gc2cbjh83wmz3cppnl124834pkla2h99np";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/Lysxia/first-class-families#readme";
+  description = "First-class type families";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/foldl.nix b/pkgs/foldl.nix
new file mode 100644
index 0000000000000000000000000000000000000000..73c72080e72851dd49b175cf9a591aac2cf8085b
--- /dev/null
+++ b/pkgs/foldl.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, base
+, bytestring
+, comonad
+, containers
+, contravariant
+, criterion
+, doctest
+, hashable
+, lib
+, primitive
+, profunctors
+, random
+, semigroupoids
+, text
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "foldl";
+  version = "1.4.12";
+  sha256 = "4f59360d96fb9ff10861944dd8a89b2448ea2b7dedc376546f4de80125f5c47d";
+  revision = "5";
+  editedCabalFile = "1b97k85zryid7x2ygi92ilv480ahfjn5yf1f4blllwyxn7zgvjv4";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    comonad
+    containers
+    contravariant
+    hashable
+    primitive
+    profunctors
+    random
+    semigroupoids
+    text
+    transformers
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [ base doctest ];
+  benchmarkHaskellDepends = [ base criterion ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Composable, streaming, and efficient left folds";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/foundation.nix b/pkgs/foundation.nix
new file mode 100644
index 0000000000000000000000000000000000000000..09f3a18d75b22b260ce713ede96fd261504d264e
--- /dev/null
+++ b/pkgs/foundation.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, basement, gauge, ghc-prim, lib }:
+mkDerivation {
+  pname = "foundation";
+  version = "0.0.29";
+  sha256 = "34839bab424ffd5aed228271d75b15a84ed94eab515e44be909a9b37948173c1";
+  libraryHaskellDepends = [ base basement ghc-prim ];
+  testHaskellDepends = [ base basement ];
+  benchmarkHaskellDepends = [ base basement gauge ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-foundation/foundation";
+  description = "Alternative prelude with batteries and no dependencies";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/fourmolu.nix b/pkgs/fourmolu.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5f53ca1f81d2ee1a5874660da2b9a23a0aca2568
--- /dev/null
+++ b/pkgs/fourmolu.nix
@@ -0,0 +1,103 @@
+{ mkDerivation
+, aeson
+, ansi-terminal
+, array
+, base
+, bytestring
+, Cabal
+, containers
+, Diff
+, directory
+, dlist
+, exceptions
+, filepath
+, ghc-lib-parser
+, gitrev
+, hspec
+, hspec-discover
+, hspec-megaparsec
+, lib
+, megaparsec
+, MemoTrie
+, mtl
+, optparse-applicative
+, path
+, path-io
+, pretty
+, process
+, QuickCheck
+, syb
+, template-haskell
+, temporary
+, text
+, th-lift-instances
+, yaml
+}:
+mkDerivation {
+  pname = "fourmolu";
+  version = "0.8.2.0";
+  sha256 = "3dfa8569f16f5aa12f43442e25d1bce13e291b526b2ea941be005ce8fc90cef3";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    ansi-terminal
+    array
+    base
+    bytestring
+    Cabal
+    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 ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/parsonsmatt/fourmolu";
+  description = "A formatter for Haskell source code";
+  license = lib.licenses.bsd3;
+  mainProgram = "fourmolu";
+}
diff --git a/pkgs/generic-lens-core.nix b/pkgs/generic-lens-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3b899c2af0a90881729e9c5e3e4087a2333c4ec4
--- /dev/null
+++ b/pkgs/generic-lens-core.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, indexed-profunctors, lib, text }:
+mkDerivation {
+  pname = "generic-lens-core";
+  version = "2.2.1.0";
+  sha256 = "8ee6f17baa52db80763a46814be391418441861b2e519bed8c047db37c622422";
+  revision = "1";
+  editedCabalFile = "1dbjhd6k7ypqa9f4h9v2xndgb4mjhfli3n1vjm8r8ga0kfndbqfn";
+  libraryHaskellDepends = [ base indexed-profunctors text ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kcsongor/generic-lens";
+  description = "Generically derive traversals, lenses and prisms";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/generic-lens-lite.nix b/pkgs/generic-lens-lite.nix
new file mode 100644
index 0000000000000000000000000000000000000000..31bd80896e726f8630bee43f51ece06a87a7f61f
--- /dev/null
+++ b/pkgs/generic-lens-lite.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "generic-lens-lite";
+  version = "0.1";
+  sha256 = "865db698880aa050641e43124ce2f3aed064e33c25d3aec85aa040e3e105e01f";
+  revision = "4";
+  editedCabalFile = "1aw808ifylrwjpsf754gzq4npmh7c872cy2fsm7r2gpjgk7mkpp6";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/generic-lens-lite";
+  description = "Monomorphic field lens like with generic-lens";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/generic-optics-lite.nix b/pkgs/generic-optics-lite.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c3c3084bfda3b55e14fa1ad9f702577954ab5f78
--- /dev/null
+++ b/pkgs/generic-optics-lite.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, base, generic-lens-lite, lib, optics-core }:
+mkDerivation {
+  pname = "generic-optics-lite";
+  version = "0.1";
+  sha256 = "b1a75e89e612c8866e47e922db65a7250e3e3890b26309db4d466665c3d4c56d";
+  revision = "4";
+  editedCabalFile = "1k5lkdzzdqq743bcw0shhwxj2i7ywh7rihdgasy543i5mvcp0cr4";
+  libraryHaskellDepends = [ base generic-lens-lite optics-core ];
+  testHaskellDepends = [ base optics-core ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/generic-lens-lite";
+  description = "Monomorphic field opics like with generic-lens";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/generic-optics.nix b/pkgs/generic-optics.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8424519362328959d5a3b317407c000fbf9a12d6
--- /dev/null
+++ b/pkgs/generic-optics.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, base
+, doctest
+, generic-lens-core
+, HUnit
+, inspection-testing
+, lib
+, optics-core
+, text
+}:
+mkDerivation {
+  pname = "generic-optics";
+  version = "2.2.1.0";
+  sha256 = "5f1c422a22277d5f0fb5fb7493789e02b13e6d5b36ecd33fd44e8796e75a87af";
+  revision = "1";
+  editedCabalFile = "13wkbs8x0clkqzi4xqin89qywpky8jkpz9cxgwsglbpcyw11jvgq";
+  libraryHaskellDepends = [
+    base
+    generic-lens-core
+    optics-core
+    text
+  ];
+  testHaskellDepends = [
+    base
+    doctest
+    HUnit
+    inspection-testing
+    optics-core
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kcsongor/generic-lens";
+  description = "Generically derive traversals, lenses and prisms";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/generics-sop.nix b/pkgs/generics-sop.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4dd6281f4360f4577597994c1aa3d15bbe369ecc
--- /dev/null
+++ b/pkgs/generics-sop.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, base
+, criterion
+, deepseq
+, ghc-prim
+, lib
+, sop-core
+, template-haskell
+, th-abstraction
+}:
+mkDerivation {
+  pname = "generics-sop";
+  version = "0.5.1.2";
+  sha256 = "639d4140520d608a73a81186aca6db40fcb03ec8a818dbce79fcb0b39aa70b25";
+  revision = "1";
+  editedCabalFile = "1s8bx25yrjqy1cj9y1s1m8a8qlby9dxjzin16yymz7g39fqcqxz8";
+  libraryHaskellDepends = [
+    base
+    ghc-prim
+    sop-core
+    template-haskell
+    th-abstraction
+  ];
+  testHaskellDepends = [ base ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    deepseq
+    template-haskell
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Generic Programming using True Sums of Products";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/genvalidity-aeson.nix b/pkgs/genvalidity-aeson.nix
new file mode 100644
index 0000000000000000000000000000000000000000..62d3ef19725215b6c03bf541d84bea37f8fa0b8b
--- /dev/null
+++ b/pkgs/genvalidity-aeson.nix
@@ -0,0 +1,56 @@
+{ mkDerivation
+, aeson
+, base
+, criterion
+, deepseq
+, genvalidity
+, genvalidity-criterion
+, genvalidity-hspec
+, genvalidity-scientific
+, genvalidity-text
+, genvalidity-unordered-containers
+, genvalidity-vector
+, hspec
+, lib
+, QuickCheck
+, validity
+, validity-aeson
+}:
+mkDerivation {
+  pname = "genvalidity-aeson";
+  version = "1.0.0.1";
+  sha256 = "6101f09c02b925209673d6aed691e64e60a127f41aff1750b27dc7e18caeba48";
+  libraryHaskellDepends = [
+    aeson
+    base
+    genvalidity
+    genvalidity-scientific
+    genvalidity-text
+    genvalidity-unordered-containers
+    genvalidity-vector
+    QuickCheck
+    validity
+    validity-aeson
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    deepseq
+    genvalidity
+    genvalidity-hspec
+    hspec
+  ];
+  benchmarkHaskellDepends = [
+    aeson
+    base
+    criterion
+    genvalidity-criterion
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for aeson";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-bytestring.nix b/pkgs/genvalidity-bytestring.nix
new file mode 100644
index 0000000000000000000000000000000000000000..57eb5f05c2fb67dbf903363ef9668b2699ebe4cb
--- /dev/null
+++ b/pkgs/genvalidity-bytestring.nix
@@ -0,0 +1,54 @@
+{ mkDerivation
+, base
+, bytestring
+, criterion
+, deepseq
+, genvalidity
+, genvalidity-criterion
+, genvalidity-hspec
+, hspec
+, lib
+, QuickCheck
+, random
+, validity
+, validity-bytestring
+}:
+mkDerivation {
+  pname = "genvalidity-bytestring";
+  version = "1.0.0.1";
+  sha256 = "3311f83fabcd549785b009868c63e53723774fa35fe755fe7bfc537c082c6dbb";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    genvalidity
+    QuickCheck
+    random
+    validity
+    validity-bytestring
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    genvalidity
+    genvalidity-hspec
+    hspec
+    QuickCheck
+    validity
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    criterion
+    genvalidity
+    genvalidity-criterion
+    QuickCheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for ByteString";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-hspec.nix b/pkgs/genvalidity-hspec.nix
new file mode 100644
index 0000000000000000000000000000000000000000..07a5d281a3dc043711bcdbbb8c32bea1ff8a4e3b
--- /dev/null
+++ b/pkgs/genvalidity-hspec.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, genvalidity
+, genvalidity-property
+, hspec
+, hspec-core
+, lib
+, QuickCheck
+, transformers
+, validity
+}:
+mkDerivation {
+  pname = "genvalidity-hspec";
+  version = "1.0.0.2";
+  sha256 = "84f9a27f7345616162e80081b867961734fc750acdbac40e64c5db4d7f055b03";
+  libraryHaskellDepends = [
+    base
+    genvalidity
+    genvalidity-property
+    hspec
+    hspec-core
+    QuickCheck
+    transformers
+    validity
+  ];
+  testHaskellDepends = [
+    base
+    genvalidity
+    hspec
+    hspec-core
+    QuickCheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "Standard spec's for GenValidity instances";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-scientific.nix b/pkgs/genvalidity-scientific.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9bb4f8ada0d015fc9917f1be8d68472201190715
--- /dev/null
+++ b/pkgs/genvalidity-scientific.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, genvalidity
+, genvalidity-hspec
+, hspec
+, lib
+, QuickCheck
+, scientific
+, validity
+, validity-scientific
+}:
+mkDerivation {
+  pname = "genvalidity-scientific";
+  version = "1.0.0.0";
+  sha256 = "b85e13c3f54ed955f6d568503d9cda49162f3a4af7560acac62df8a565502176";
+  libraryHaskellDepends = [
+    base
+    genvalidity
+    QuickCheck
+    scientific
+    validity
+    validity-scientific
+  ];
+  testHaskellDepends = [
+    base
+    genvalidity
+    genvalidity-hspec
+    hspec
+    QuickCheck
+    scientific
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for Scientific";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-sydtest-aeson.nix b/pkgs/genvalidity-sydtest-aeson.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fe539e05a08aca29168a4c6500656cbf1dd9b07f
--- /dev/null
+++ b/pkgs/genvalidity-sydtest-aeson.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, deepseq
+, genvalidity
+, genvalidity-aeson
+, genvalidity-sydtest
+, genvalidity-text
+, lib
+, QuickCheck
+, sydtest
+, sydtest-discover
+, text
+, validity
+}:
+mkDerivation {
+  pname = "genvalidity-sydtest-aeson";
+  version = "1.0.0.0";
+  sha256 = "02ecfc0ecabc6310018ce8ecca220d6388367294c4a1e6b2bbfc9d5de00116d9";
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    deepseq
+    genvalidity
+    genvalidity-sydtest
+    QuickCheck
+    sydtest
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    genvalidity
+    genvalidity-aeson
+    genvalidity-sydtest
+    genvalidity-text
+    QuickCheck
+    sydtest
+    text
+    validity
+  ];
+  testToolDepends = [ sydtest-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://cs-syd.eu";
+  description = "Standard spec's for aeson-related instances in sydtest";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-text.nix b/pkgs/genvalidity-text.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5e420052dba0ed93b9cfa0f6e6274b2a8b4cca2d
--- /dev/null
+++ b/pkgs/genvalidity-text.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, array
+, base
+, criterion
+, genvalidity
+, genvalidity-criterion
+, genvalidity-hspec
+, hspec
+, lib
+, QuickCheck
+, random
+, text
+, validity
+, validity-text
+}:
+mkDerivation {
+  pname = "genvalidity-text";
+  version = "1.0.0.1";
+  sha256 = "96e19453e45d76cb89794801588a6d9726c5092fef5cd053e7abe4322f553be3";
+  libraryHaskellDepends = [
+    array
+    base
+    genvalidity
+    QuickCheck
+    random
+    text
+    validity
+    validity-text
+  ];
+  testHaskellDepends = [
+    base
+    genvalidity
+    genvalidity-hspec
+    hspec
+    QuickCheck
+    text
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    genvalidity
+    genvalidity-criterion
+    QuickCheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for Text";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-unordered-containers.nix b/pkgs/genvalidity-unordered-containers.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1875a45e015a0a345090a6053549d5bfaaac1efd
--- /dev/null
+++ b/pkgs/genvalidity-unordered-containers.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, base
+, genvalidity
+, genvalidity-hspec
+, hashable
+, hspec
+, lib
+, QuickCheck
+, unordered-containers
+, validity
+, validity-unordered-containers
+}:
+mkDerivation {
+  pname = "genvalidity-unordered-containers";
+  version = "1.0.0.0";
+  sha256 = "b325c19594853133b62019ad35ed86616b92ac1afd18a5f49a801e3e453fa6e9";
+  libraryHaskellDepends = [
+    base
+    genvalidity
+    hashable
+    QuickCheck
+    unordered-containers
+    validity
+    validity-unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    genvalidity
+    genvalidity-hspec
+    hspec
+    unordered-containers
+    validity
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for unordered-containers";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/genvalidity-vector.nix b/pkgs/genvalidity-vector.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7d244fd64a86e5d2825ae9eccf8f1d0e427132fc
--- /dev/null
+++ b/pkgs/genvalidity-vector.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, genvalidity
+, genvalidity-hspec
+, hspec
+, lib
+, QuickCheck
+, validity
+, validity-vector
+, vector
+}:
+mkDerivation {
+  pname = "genvalidity-vector";
+  version = "1.0.0.0";
+  sha256 = "fe0dd139da3cafe4a4e05ed19e3efb46743f92743f95615fefbd8027dd925fd0";
+  libraryHaskellDepends = [
+    base
+    genvalidity
+    QuickCheck
+    validity
+    validity-vector
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    genvalidity
+    genvalidity-hspec
+    hspec
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/validity#readme";
+  description = "GenValidity support for vector";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/ghc-byteorder.nix b/pkgs/ghc-byteorder.nix
new file mode 100644
index 0000000000000000000000000000000000000000..aca29e0ce3a8ed0119e0fc772713ab538d180198
--- /dev/null
+++ b/pkgs/ghc-byteorder.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "ghc-byteorder";
+  version = "4.11.0.0.10";
+  sha256 = "86e50a89798181db4f44ec3848fc52940c73098e88549a351ceb54fefc691fb6";
+  revision = "3";
+  editedCabalFile = "088rz5c0pq2r1w3msy0y9hl4gca8s8nblpcz7w2f5sx5pajg8flj";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "\"GHC.ByteOrder\" API Compatibility Layer";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-check.nix b/pkgs/ghc-check.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f7afb738049e4de11d36d2a41228c669fc6c50da
--- /dev/null
+++ b/pkgs/ghc-check.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, containers
+, directory
+, filepath
+, ghc
+, ghc-boot
+, ghc-paths
+, lib
+, process
+, safe-exceptions
+, template-haskell
+, th-compat
+, transformers
+}:
+mkDerivation {
+  pname = "ghc-check";
+  version = "0.5.0.8";
+  sha256 = "1025a8353fb7c318b27b8dc6b268d22f1f64c271031ed0ce4defb0f9100d7cd4";
+  libraryHaskellDepends = [
+    base
+    containers
+    directory
+    filepath
+    ghc
+    ghc-boot
+    ghc-paths
+    process
+    safe-exceptions
+    template-haskell
+    th-compat
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "detect mismatches between compile-time and run-time versions of the ghc api";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-exactprint.nix b/pkgs/ghc-exactprint.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7628f6187035fc002f2a2d7b49defb69ace8807c
--- /dev/null
+++ b/pkgs/ghc-exactprint.nix
@@ -0,0 +1,70 @@
+{ mkDerivation
+, base
+, bytestring
+, Cabal-syntax
+, containers
+, data-default
+, Diff
+, directory
+, fail
+, filemanip
+, filepath
+, free
+, ghc
+, ghc-boot
+, ghc-paths
+, HUnit
+, lib
+, mtl
+, ordered-containers
+, silently
+, syb
+}:
+mkDerivation {
+  pname = "ghc-exactprint";
+  version = "1.6.0";
+  sha256 = "8eb59736bbf052a380d5c72277abad05802730b37629ea67a4517b2d88dd40fa";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    data-default
+    directory
+    fail
+    filepath
+    free
+    ghc
+    ghc-boot
+    mtl
+    ordered-containers
+    syb
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    Cabal-syntax
+    containers
+    data-default
+    Diff
+    directory
+    fail
+    filemanip
+    filepath
+    ghc
+    ghc-boot
+    ghc-paths
+    HUnit
+    mtl
+    ordered-containers
+    silently
+    syb
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "ExactPrint for GHC";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-lib-parser-ex.nix b/pkgs/ghc-lib-parser-ex.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e715402f5ad0b3dd534defc453b216f741d3b87e
--- /dev/null
+++ b/pkgs/ghc-lib-parser-ex.nix
@@ -0,0 +1,42 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, directory
+, extra
+, filepath
+, ghc-lib-parser
+, lib
+, tasty
+, tasty-hunit
+, uniplate
+}:
+mkDerivation {
+  pname = "ghc-lib-parser-ex";
+  version = "9.4.0.0";
+  sha256 = "ce3ff339a0a259a18ae921c547b35732eaca1a567a33fba1a7c65c16c973191b";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    ghc-lib-parser
+    uniplate
+  ];
+  testHaskellDepends = [
+    base
+    directory
+    extra
+    filepath
+    ghc-lib-parser
+    tasty
+    tasty-hunit
+    uniplate
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme";
+  description = "Algorithms on GHC parse trees";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-lib-parser.nix b/pkgs/ghc-lib-parser.nix
new file mode 100644
index 0000000000000000000000000000000000000000..795e8fcf224fd57d1577d442afa0e0ecb2004344
--- /dev/null
+++ b/pkgs/ghc-lib-parser.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, alex
+, array
+, base
+, binary
+, bytestring
+, containers
+, deepseq
+, directory
+, exceptions
+, filepath
+, ghc-prim
+, happy
+, lib
+, parsec
+, pretty
+, process
+, time
+, transformers
+, unix
+}:
+mkDerivation {
+  pname = "ghc-lib-parser";
+  version = "9.4.2.20220822";
+  sha256 = "3eb1fd79734728fffb39c98a4a42747d0db2d35380fec8ab24bbea5d76b93847";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    array
+    base
+    binary
+    bytestring
+    containers
+    deepseq
+    directory
+    exceptions
+    filepath
+    ghc-prim
+    parsec
+    pretty
+    process
+    time
+    transformers
+    unix
+  ];
+  libraryToolDepends = [ alex happy ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/digital-asset/ghc-lib";
+  description = "The GHC API, decoupled from GHC versions";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-paths.nix b/pkgs/ghc-paths.nix
new file mode 100644
index 0000000000000000000000000000000000000000..27e88a00d73caf247e28fe98bcf377a566bdb5f5
--- /dev/null
+++ b/pkgs/ghc-paths.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, Cabal, directory, lib }:
+mkDerivation {
+  pname = "ghc-paths";
+  version = "0.1.0.12";
+  sha256 = "6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484";
+  revision = "4";
+  editedCabalFile = "1d5za4k498q48wk6cz0jm3d68rh5ldz6adr8vp24nn7jv17g770w";
+  setupHaskellDepends = [ base Cabal directory ];
+  libraryHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Knowledge of GHC's installation directories";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-tcplugins-extra.nix b/pkgs/ghc-tcplugins-extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..63eb1593c87b40984894d085298abcf6560a23b7
--- /dev/null
+++ b/pkgs/ghc-tcplugins-extra.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, ghc, lib }:
+mkDerivation {
+  pname = "ghc-tcplugins-extra";
+  version = "0.4.3";
+  sha256 = "e985cda6fc983f703c3ae319e62e1253e25422785ec11992cb3faaaad67480a1";
+  libraryHaskellDepends = [ base ghc ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/clash-lang/ghc-tcplugins-extra#readme";
+  description = "Utilities for writing GHC type-checker plugins";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/hackage-security.nix b/pkgs/hackage-security.nix
new file mode 100644
index 0000000000000000000000000000000000000000..967f1f018aede1cb57eddc529a4769efa7042077
--- /dev/null
+++ b/pkgs/hackage-security.nix
@@ -0,0 +1,94 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, base64-bytestring
+, bytestring
+, Cabal
+, Cabal-syntax
+, containers
+, cryptohash-sha256
+, directory
+, ed25519
+, filepath
+, ghc-prim
+, lib
+, lukko
+, mtl
+, network
+, network-uri
+, parsec
+, pretty
+, QuickCheck
+, tar
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, temporary
+, text
+, time
+, transformers
+, unordered-containers
+, vector
+, zlib
+}:
+mkDerivation {
+  pname = "hackage-security";
+  version = "0.6.2.2";
+  sha256 = "a833a31610220506557e96fb6e3e8b05a2e1db8e7ebc06e91bbb699ddde0b276";
+  revision = "1";
+  editedCabalFile = "01fhp3kzc1wfvixzgnz4y52bzm4sickk1cj7pksrwmbi90dghv0s";
+  libraryHaskellDepends = [
+    base
+    base16-bytestring
+    base64-bytestring
+    bytestring
+    Cabal
+    Cabal-syntax
+    containers
+    cryptohash-sha256
+    directory
+    ed25519
+    filepath
+    ghc-prim
+    lukko
+    mtl
+    network
+    network-uri
+    parsec
+    pretty
+    tar
+    template-haskell
+    time
+    transformers
+    zlib
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    Cabal
+    Cabal-syntax
+    containers
+    network-uri
+    QuickCheck
+    tar
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    temporary
+    text
+    time
+    unordered-containers
+    vector
+    zlib
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/hackage-security";
+  description = "Hackage security library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hashable.nix b/pkgs/hashable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..70854eb4cba9e6ed15d36e6e577a89844bbb619c
--- /dev/null
+++ b/pkgs/hashable.nix
@@ -0,0 +1,51 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, deepseq
+, ghc-bignum
+, ghc-prim
+, HUnit
+, lib
+, QuickCheck
+, random
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, text
+, unix
+}:
+mkDerivation {
+  pname = "hashable";
+  version = "1.4.1.0";
+  sha256 = "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    deepseq
+    ghc-bignum
+    ghc-prim
+    text
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    ghc-prim
+    HUnit
+    QuickCheck
+    random
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    text
+    unix
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/haskell-unordered-containers/hashable";
+  description = "A class for types that can be converted to a hash value";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hashing.nix b/pkgs/hashing.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c041019fac3d593e1cf7f4fe69ee389afb3c9b4b
--- /dev/null
+++ b/pkgs/hashing.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, cryptonite
+, lib
+, mtl
+, QuickCheck
+, template-haskell
+}:
+mkDerivation {
+  pname = "hashing";
+  version = "0.1.0.1";
+  sha256 = "e5a4a19c6cd6f0a0adda381db76d608d23f8d303e68f1d744735433f91f49410";
+  revision = "2";
+  editedCabalFile = "1rwl68jiivw7f2f5cg73sr3dawlbmklnwyiwivrcsihrg4b1z1lq";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ array base bytestring ];
+  executableHaskellDepends = [
+    array
+    base
+    bytestring
+    mtl
+    QuickCheck
+  ];
+  testHaskellDepends = [
+    array
+    base
+    bytestring
+    cryptonite
+    mtl
+    QuickCheck
+    template-haskell
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/wangbj/hashing";
+  description = "A pure haskell library implements several hash algorithms";
+  license = lib.licenses.mit;
+  mainProgram = "hashing-exe";
+}
diff --git a/pkgs/hashtables.nix b/pkgs/hashtables.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c40b0c141a2772dbf11a846c1d8313d7ae400001
--- /dev/null
+++ b/pkgs/hashtables.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, ghc-prim
+, hashable
+, HUnit
+, lib
+, mwc-random
+, primitive
+, QuickCheck
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, vector
+}:
+mkDerivation {
+  pname = "hashtables";
+  version = "1.3";
+  sha256 = "af785a6d13842ebbd804b0ec174dd957a2591b224434e3ce883f537321f90dd3";
+  libraryHaskellDepends = [
+    base
+    ghc-prim
+    hashable
+    primitive
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    ghc-prim
+    hashable
+    HUnit
+    mwc-random
+    primitive
+    QuickCheck
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/gregorycollins/hashtables";
+  description = "Mutable hash tables in the ST monad";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/haskell-src-meta.nix b/pkgs/haskell-src-meta.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2744558e3cc83d679b665947fe64797500953230
--- /dev/null
+++ b/pkgs/haskell-src-meta.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, base
+, containers
+, haskell-src-exts
+, HUnit
+, lib
+, pretty
+, syb
+, tasty
+, tasty-hunit
+, template-haskell
+, th-orphans
+}:
+mkDerivation {
+  pname = "haskell-src-meta";
+  version = "0.8.11";
+  sha256 = "3ca7fb27deceb3116682c24d9c122dc4c328a7566c39076c924f407556077af2";
+  libraryHaskellDepends = [
+    base
+    haskell-src-exts
+    pretty
+    syb
+    template-haskell
+    th-orphans
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    haskell-src-exts
+    HUnit
+    pretty
+    syb
+    tasty
+    tasty-hunit
+    template-haskell
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Parse source to template-haskell abstract syntax";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hedgehog-golden.nix b/pkgs/hedgehog-golden.nix
new file mode 100644
index 0000000000000000000000000000000000000000..589cb605e922fef2484df1463a189b407d22462d
--- /dev/null
+++ b/pkgs/hedgehog-golden.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, base
+, bytestring
+, containers
+, Diff
+, directory
+, extra
+, fetchgit
+, hedgehog
+, lib
+, text
+, with-utf8
+}:
+mkDerivation {
+  pname = "hedgehog-golden";
+  version = "1.0.2";
+  src = fetchgit {
+    url = "https://github.com/maybe-hedgehog-later/hedgehog-golden";
+    sha256 = "19np0pzvi70bkknnjh9pkcm7nwq11ia5cb7iy4h1in9n4szj3i3f";
+    rev = "4ab2906b3f0be5e31ee5a8585e45d43392694246";
+    fetchSubmodules = true;
+  };
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    base
+    bytestring
+    containers
+    Diff
+    directory
+    extra
+    hedgehog
+    text
+  ];
+  testHaskellDepends = [ aeson base hedgehog with-utf8 ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/felixmulder/hedgehog-golden";
+  description = "Golden testing capabilities for hedgehog using Aeson";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hedgehog.nix b/pkgs/hedgehog.nix
new file mode 100644
index 0000000000000000000000000000000000000000..50df676ac179ec2abf9a81dfb57fbb91679fb860
--- /dev/null
+++ b/pkgs/hedgehog.nix
@@ -0,0 +1,78 @@
+{ mkDerivation
+, ansi-terminal
+, async
+, barbies
+, base
+, bytestring
+, concurrent-output
+, containers
+, deepseq
+, directory
+, erf
+, exceptions
+, lib
+, lifted-async
+, mmorph
+, monad-control
+, mtl
+, pretty-show
+, primitive
+, random
+, resourcet
+, stm
+, template-haskell
+, text
+, time
+, transformers
+, transformers-base
+, wl-pprint-annotated
+}:
+mkDerivation {
+  pname = "hedgehog";
+  version = "1.2";
+  sha256 = "2859c7daa665250bb249614da7b55507c6315d9b80e456f1a74f33abfeaf8e7e";
+  libraryHaskellDepends = [
+    ansi-terminal
+    async
+    barbies
+    base
+    bytestring
+    concurrent-output
+    containers
+    deepseq
+    directory
+    erf
+    exceptions
+    lifted-async
+    mmorph
+    monad-control
+    mtl
+    pretty-show
+    primitive
+    random
+    resourcet
+    stm
+    template-haskell
+    text
+    time
+    transformers
+    transformers-base
+    wl-pprint-annotated
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    mmorph
+    mtl
+    pretty-show
+    text
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://hedgehog.qa";
+  description = "Release with confidence";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hie-compat.nix b/pkgs/hie-compat.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8e207544c31e13d28cbd9d5a9e0282acdadaa3b8
--- /dev/null
+++ b/pkgs/hie-compat.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, directory
+, filepath
+, ghc
+, ghc-boot
+, lib
+, transformers
+}:
+mkDerivation {
+  pname = "hie-compat";
+  version = "0.3.0.0";
+  sha256 = "ab02e969106971f7ef980515f802447c579c088b2e227eb8982999605f392199";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    directory
+    filepath
+    ghc
+    ghc-boot
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/haskell-language-server/tree/master/hie-compat#readme";
+  description = "HIE files for GHC 8.6 and other HIE file backports";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/hiedb.nix b/pkgs/hiedb.nix
new file mode 100644
index 0000000000000000000000000000000000000000..94a285ee46bf5e8f2780398176a1ce409994a2cc
--- /dev/null
+++ b/pkgs/hiedb.nix
@@ -0,0 +1,68 @@
+{ 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;
+  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
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Generates a references DB from .hie files";
+  license = lib.licenses.bsd3;
+  mainProgram = "hiedb";
+}
diff --git a/pkgs/hlint.nix b/pkgs/hlint.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1f422da015a210a3fa58a3964487b587c26b0f26
--- /dev/null
+++ b/pkgs/hlint.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, aeson
+, ansi-terminal
+, base
+, bytestring
+, cmdargs
+, containers
+, cpphs
+, data-default
+, deriving-aeson
+, directory
+, extra
+, file-embed
+, filepath
+, filepattern
+, ghc-lib-parser
+, ghc-lib-parser-ex
+, hscolour
+, lib
+, process
+, refact
+, text
+, transformers
+, uniplate
+, unordered-containers
+, utf8-string
+, vector
+, yaml
+}:
+mkDerivation {
+  pname = "hlint";
+  version = "3.5";
+  sha256 = "98bd120a10a086c17d6bf1176a510dc12b36581e5a901f1e024555bb3ccead4f";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    ansi-terminal
+    base
+    bytestring
+    cmdargs
+    containers
+    cpphs
+    data-default
+    deriving-aeson
+    directory
+    extra
+    file-embed
+    filepath
+    filepattern
+    ghc-lib-parser
+    ghc-lib-parser-ex
+    hscolour
+    process
+    refact
+    text
+    transformers
+    uniplate
+    unordered-containers
+    utf8-string
+    vector
+    yaml
+  ];
+  executableHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ndmitchell/hlint#readme";
+  description = "Source code suggestions";
+  license = lib.licenses.bsd3;
+  mainProgram = "hlint";
+}
diff --git a/pkgs/hnix.nix b/pkgs/hnix.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f8667fde20634a0c9c996004d6587df3901e4af9
--- /dev/null
+++ b/pkgs/hnix.nix
@@ -0,0 +1,214 @@
+{ mkDerivation
+, aeson
+, array
+, base
+, base16-bytestring
+, binary
+, bytestring
+, comonad
+, containers
+, criterion
+, cryptonite
+, data-fix
+, deepseq
+, deriving-compat
+, Diff
+, directory
+, exceptions
+, extra
+, fetchgit
+, filepath
+, free
+, gitrev
+, Glob
+, hashable
+, hashing
+, haskeline
+, hedgehog
+, hnix-store-core
+, hnix-store-remote
+, http-client
+, http-client-tls
+, http-types
+, lens-family
+, lens-family-core
+, lens-family-th
+, lib
+, logict
+, megaparsec
+, monad-control
+, monadlist
+, mtl
+, neat-interpolation
+, optparse-applicative
+, parser-combinators
+, pretty-show
+, prettyprinter
+, process
+, ref-tf
+, regex-tdfa
+, relude
+, repline
+, scientific
+, semialign
+, serialise
+, some
+, split
+, syb
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, tasty-th
+, template-haskell
+, text
+, th-lift-instances
+, these
+, time
+, transformers
+, transformers-base
+, unix-compat
+, unordered-containers
+, vector
+, xml
+}:
+mkDerivation {
+  pname = "hnix";
+  version = "0.16.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/hnix";
+    sha256 = "0k6dwf7aaigracwnjlvlbjcl4gb9xv3wqzzy293z2wpm3wsr02m3";
+    rev = "005568ee024eabee129d9cf4ca331c6da260610b";
+    fetchSubmodules = true;
+  };
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    array
+    base
+    base16-bytestring
+    binary
+    bytestring
+    comonad
+    containers
+    cryptonite
+    data-fix
+    deepseq
+    deriving-compat
+    directory
+    exceptions
+    extra
+    filepath
+    free
+    gitrev
+    hashable
+    hashing
+    hnix-store-core
+    hnix-store-remote
+    http-client
+    http-client-tls
+    http-types
+    lens-family
+    lens-family-core
+    lens-family-th
+    logict
+    megaparsec
+    monad-control
+    monadlist
+    mtl
+    neat-interpolation
+    optparse-applicative
+    parser-combinators
+    pretty-show
+    prettyprinter
+    process
+    ref-tf
+    regex-tdfa
+    relude
+    scientific
+    semialign
+    serialise
+    some
+    split
+    syb
+    template-haskell
+    text
+    th-lift-instances
+    these
+    time
+    transformers
+    transformers-base
+    unix-compat
+    unordered-containers
+    vector
+    xml
+  ];
+  executableHaskellDepends = [
+    aeson
+    base
+    comonad
+    containers
+    data-fix
+    deepseq
+    exceptions
+    filepath
+    free
+    haskeline
+    optparse-applicative
+    pretty-show
+    prettyprinter
+    ref-tf
+    relude
+    repline
+    serialise
+    template-haskell
+    time
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    data-fix
+    Diff
+    directory
+    exceptions
+    filepath
+    Glob
+    hedgehog
+    megaparsec
+    neat-interpolation
+    optparse-applicative
+    pretty-show
+    prettyprinter
+    process
+    relude
+    serialise
+    split
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    tasty-th
+    template-haskell
+    time
+    unix-compat
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    data-fix
+    exceptions
+    filepath
+    optparse-applicative
+    relude
+    serialise
+    template-haskell
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-nix/hnix#readme";
+  description = "Haskell implementation of the Nix language";
+  license = lib.licenses.bsd3;
+  mainProgram = "hnix";
+}
diff --git a/pkgs/hourglass.nix b/pkgs/hourglass.nix
new file mode 100644
index 0000000000000000000000000000000000000000..dfe7e6932880bf6d6897522758a0e6c3b4395a22
--- /dev/null
+++ b/pkgs/hourglass.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, base
+, bytestring
+, deepseq
+, gauge
+, lib
+, mtl
+, old-locale
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, time
+}:
+mkDerivation {
+  pname = "hourglass";
+  version = "0.2.12";
+  sha256 = "44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a";
+  libraryHaskellDepends = [ base deepseq ];
+  testHaskellDepends = [
+    base
+    deepseq
+    mtl
+    old-locale
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    time
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    gauge
+    mtl
+    old-locale
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/vincenthz/hs-hourglass";
+  description = "simple performant time related library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/hslua-aeson.nix b/pkgs/hslua-aeson.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9658c7157b8133224bb97ac916638b1438fd3ead
--- /dev/null
+++ b/pkgs/hslua-aeson.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, containers
+, hashable
+, hslua-core
+, hslua-marshalling
+, lib
+, mtl
+, QuickCheck
+, quickcheck-instances
+, scientific
+, tasty
+, tasty-quickcheck
+, text
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "hslua-aeson";
+  version = "2.2.1";
+  sha256 = "ab221cf59b915fba43deed51514a3703f7b0e504a2e26c6c787cb855bc9af545";
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    hashable
+    hslua-core
+    hslua-marshalling
+    mtl
+    scientific
+    text
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    hashable
+    hslua-core
+    hslua-marshalling
+    mtl
+    QuickCheck
+    quickcheck-instances
+    scientific
+    tasty
+    tasty-quickcheck
+    text
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://hslua.org/";
+  description = "Allow aeson data types to be used with Lua";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/hspec-core.nix b/pkgs/hspec-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..860db35d11c5abbab00a21931fcc985e2e84bd13
--- /dev/null
+++ b/pkgs/hspec-core.nix
@@ -0,0 +1,88 @@
+{ mkDerivation
+, ansi-terminal
+, array
+, base
+, base-orphans
+, call-stack
+, clock
+, deepseq
+, directory
+, filepath
+, ghc
+, ghc-boot-th
+, hspec-expectations
+, hspec-meta
+, HUnit
+, lib
+, process
+, QuickCheck
+, quickcheck-io
+, random
+, setenv
+, silently
+, stm
+, temporary
+, tf-random
+, transformers
+}:
+mkDerivation {
+  pname = "hspec-core";
+  version = "2.10.0.1";
+  sha256 = "144b16e45019c910c857cf4c6815a1f928ded861fc7047d64e1809dd2695a93c";
+  libraryHaskellDepends = [
+    ansi-terminal
+    array
+    base
+    call-stack
+    clock
+    deepseq
+    directory
+    filepath
+    ghc
+    ghc-boot-th
+    hspec-expectations
+    HUnit
+    QuickCheck
+    quickcheck-io
+    random
+    setenv
+    stm
+    tf-random
+    transformers
+  ];
+  testHaskellDepends = [
+    ansi-terminal
+    array
+    base
+    base-orphans
+    call-stack
+    clock
+    deepseq
+    directory
+    filepath
+    ghc
+    ghc-boot-th
+    hspec-expectations
+    hspec-meta
+    HUnit
+    process
+    QuickCheck
+    quickcheck-io
+    random
+    setenv
+    silently
+    stm
+    temporary
+    tf-random
+    transformers
+  ];
+  testToolDepends = [ hspec-meta ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  testTarget = "--test-option=--skip --test-option='Test.Hspec.Core.Runner.hspecResult runs specs in parallel'";
+  homepage = "http://hspec.github.io/";
+  description = "A Testing Framework for Haskell";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/hspec-discover.nix b/pkgs/hspec-discover.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bbcc8e0f18437e30cefee836bb406104167e32d0
--- /dev/null
+++ b/pkgs/hspec-discover.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, base
+, directory
+, filepath
+, hspec-meta
+, lib
+, mockery
+, QuickCheck
+}:
+mkDerivation {
+  pname = "hspec-discover";
+  version = "2.10.0.1";
+  sha256 = "3f55defbe8d5493ff73ffdf84cbe8550fbb44d73f796ab31b5387a4c128047fc";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base directory filepath ];
+  executableHaskellDepends = [ base directory filepath ];
+  testHaskellDepends = [
+    base
+    directory
+    filepath
+    hspec-meta
+    mockery
+    QuickCheck
+  ];
+  testToolDepends = [ hspec-meta ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://hspec.github.io/";
+  description = "Automatically discover and run Hspec tests";
+  license = lib.licenses.mit;
+  mainProgram = "hspec-discover";
+}
diff --git a/pkgs/hspec-meta.nix b/pkgs/hspec-meta.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2c745b94c51100c136f9cc7c5b5e070f952d4ef2
--- /dev/null
+++ b/pkgs/hspec-meta.nix
@@ -0,0 +1,72 @@
+{ mkDerivation
+, ansi-terminal
+, array
+, base
+, call-stack
+, clock
+, deepseq
+, directory
+, filepath
+, ghc
+, ghc-boot-th
+, lib
+, QuickCheck
+, quickcheck-io
+, random
+, setenv
+, stm
+, time
+, transformers
+}:
+mkDerivation {
+  pname = "hspec-meta";
+  version = "2.9.3";
+  sha256 = "d546154ac439c445d0d8a70f0977b7332ed8bc325cd902451f544656f5e55de5";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    ansi-terminal
+    array
+    base
+    call-stack
+    clock
+    deepseq
+    directory
+    filepath
+    ghc
+    ghc-boot-th
+    QuickCheck
+    quickcheck-io
+    random
+    setenv
+    stm
+    time
+    transformers
+  ];
+  executableHaskellDepends = [
+    ansi-terminal
+    array
+    base
+    call-stack
+    clock
+    deepseq
+    directory
+    filepath
+    ghc
+    ghc-boot-th
+    QuickCheck
+    quickcheck-io
+    random
+    setenv
+    time
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://hspec.github.io/";
+  description = "A version of Hspec which is used to test Hspec itself";
+  license = lib.licenses.mit;
+  mainProgram = "hspec-meta-discover";
+}
diff --git a/pkgs/hspec.nix b/pkgs/hspec.nix
new file mode 100644
index 0000000000000000000000000000000000000000..14ba949a398a265e2a5f8e82e9b5237372a761c6
--- /dev/null
+++ b/pkgs/hspec.nix
@@ -0,0 +1,27 @@
+{ mkDerivation
+, base
+, hspec-core
+, hspec-discover
+, hspec-expectations
+, lib
+, QuickCheck
+}:
+mkDerivation {
+  pname = "hspec";
+  version = "2.10.3";
+  sha256 = "e381944a27b5e736e514264f534218268785bcf8177d27126c68780fd9df07f2";
+  libraryHaskellDepends = [
+    base
+    hspec-core
+    hspec-discover
+    hspec-expectations
+    QuickCheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://hspec.github.io/";
+  description = "A Testing Framework for Haskell";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/http-client.nix b/pkgs/http-client.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6035410e39e32eed75a073a08aee9d7c6bfaa80c
--- /dev/null
+++ b/pkgs/http-client.nix
@@ -0,0 +1,92 @@
+{ mkDerivation
+, array
+, async
+, base
+, base64-bytestring
+, blaze-builder
+, bytestring
+, case-insensitive
+, containers
+, cookie
+, deepseq
+, directory
+, exceptions
+, filepath
+, ghc-prim
+, hspec
+, hspec-discover
+, http-types
+, iproute
+, lib
+, mime-types
+, monad-control
+, network
+, network-uri
+, random
+, stm
+, streaming-commons
+, text
+, time
+, transformers
+, zlib
+}:
+mkDerivation {
+  pname = "http-client";
+  version = "0.7.13.1";
+  sha256 = "c98e86a0382fa877e320d83dbbd173c41c966a60a32c9bc597058929a7aa0e27";
+  libraryHaskellDepends = [
+    array
+    async
+    base
+    base64-bytestring
+    blaze-builder
+    bytestring
+    case-insensitive
+    containers
+    cookie
+    deepseq
+    exceptions
+    filepath
+    ghc-prim
+    http-types
+    iproute
+    mime-types
+    network
+    network-uri
+    random
+    stm
+    streaming-commons
+    text
+    time
+    transformers
+  ];
+  testHaskellDepends = [
+    async
+    base
+    blaze-builder
+    bytestring
+    case-insensitive
+    containers
+    cookie
+    deepseq
+    directory
+    hspec
+    http-types
+    monad-control
+    network
+    network-uri
+    streaming-commons
+    text
+    time
+    transformers
+    zlib
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/snoyberg/http-client";
+  description = "An HTTP client engine";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/http-date.nix b/pkgs/http-date.nix
new file mode 100644
index 0000000000000000000000000000000000000000..274de6271c0c578615ba16ed944ddb72cfaff723
--- /dev/null
+++ b/pkgs/http-date.nix
@@ -0,0 +1,31 @@
+{ mkDerivation
+, array
+, attoparsec
+, base
+, bytestring
+, doctest
+, hspec
+, lib
+, old-locale
+, time
+}:
+mkDerivation {
+  pname = "http-date";
+  version = "0.0.11";
+  sha256 = "32f923ac1ad9bdfeadce7c52a03c9ba6225ba60dc14137cb1cdf32ea84ccf4d3";
+  libraryHaskellDepends = [ array attoparsec base bytestring time ];
+  testHaskellDepends = [
+    base
+    bytestring
+    doctest
+    hspec
+    old-locale
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "HTTP Date parser/formatter";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/http-types.nix b/pkgs/http-types.nix
new file mode 100644
index 0000000000000000000000000000000000000000..700b30164ff19a5fdd13191bf1429691d2a75304
--- /dev/null
+++ b/pkgs/http-types.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, case-insensitive
+, doctest
+, hspec
+, lib
+, QuickCheck
+, quickcheck-instances
+, text
+}:
+mkDerivation {
+  pname = "http-types";
+  version = "0.12.3";
+  sha256 = "4e8a4a66477459fa436a331c75e46857ec8026283df984d54f90576cd3024016";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    case-insensitive
+    text
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    doctest
+    hspec
+    QuickCheck
+    quickcheck-instances
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/aristidb/http-types";
+  description = "Generic HTTP types for Haskell (for both client and server code)";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/http2.nix b/pkgs/http2.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f9ebd07609f4cfaf26f4bd9cca01a10a4a22aa22
--- /dev/null
+++ b/pkgs/http2.nix
@@ -0,0 +1,97 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, array
+, async
+, base
+, base16-bytestring
+, bytestring
+, case-insensitive
+, containers
+, cryptonite
+, directory
+, filepath
+, gauge
+, Glob
+, heaps
+, hspec
+, hspec-discover
+, http-types
+, lib
+, mwc-random
+, network
+, network-byte-order
+, network-run
+, psqueues
+, stm
+, text
+, time-manager
+, typed-process
+, unix-time
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "http2";
+  version = "3.0.3";
+  sha256 = "1bae426d9b9c7266b89ae13b8ad7dfb548d16efe4c4dda6c0fa35b7b474c69cf";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    array
+    async
+    base
+    bytestring
+    case-insensitive
+    containers
+    http-types
+    network
+    network-byte-order
+    psqueues
+    stm
+    time-manager
+    unix-time
+  ];
+  testHaskellDepends = [
+    aeson
+    aeson-pretty
+    async
+    base
+    base16-bytestring
+    bytestring
+    cryptonite
+    directory
+    filepath
+    Glob
+    hspec
+    http-types
+    network
+    network-byte-order
+    network-run
+    text
+    typed-process
+    unordered-containers
+    vector
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    array
+    base
+    bytestring
+    case-insensitive
+    containers
+    gauge
+    heaps
+    mwc-random
+    network-byte-order
+    psqueues
+    stm
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kazu-yamamoto/http2";
+  description = "HTTP/2 library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/incipit-base.nix b/pkgs/incipit-base.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fbc82ea3526b6114bd6024ccb8261a0f1a94661e
--- /dev/null
+++ b/pkgs/incipit-base.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, data-default
+, lib
+, stm
+, text
+}:
+mkDerivation {
+  pname = "incipit-base";
+  version = "0.3.0.0";
+  sha256 = "d12c13e0bd90276ec71595df68368cbbdaaf58ba79a171c805ec2285413ee41a";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    data-default
+    stm
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/tek/incipit-core#readme";
+  description = "A Prelude for Polysemy – Base Reexports";
+  license = "BSD-2-Clause-Patent";
+}
diff --git a/pkgs/incipit-core.nix b/pkgs/incipit-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f675befc8572debc02aed04a46019ff5c6951a7a
--- /dev/null
+++ b/pkgs/incipit-core.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, incipit-base, lib, polysemy }:
+mkDerivation {
+  pname = "incipit-core";
+  version = "0.3.0.0";
+  sha256 = "1f6b16d4252ba229c69dfd56450d8b252a8bf2e69c739a565b0d9dbee66f1a3f";
+  libraryHaskellDepends = [ base incipit-base polysemy ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/tek/incipit-core#readme";
+  description = "A Prelude for Polysemy";
+  license = "BSD-2-Clause-Patent";
+}
diff --git a/pkgs/indexed-traversable-instances.nix b/pkgs/indexed-traversable-instances.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f1dbbde4b39e6e27bc597fa5df1aaffe046fff0e
--- /dev/null
+++ b/pkgs/indexed-traversable-instances.nix
@@ -0,0 +1,47 @@
+{ mkDerivation
+, base
+, containers
+, indexed-traversable
+, lib
+, OneTuple
+, QuickCheck
+, quickcheck-instances
+, tagged
+, tasty
+, tasty-quickcheck
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "indexed-traversable-instances";
+  version = "0.1.1.1";
+  sha256 = "895ee5063d59e2b58930ca6fa54885bb11f19c8b7c7ba6c7b014f9431cdcc0b0";
+  libraryHaskellDepends = [
+    base
+    indexed-traversable
+    OneTuple
+    tagged
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    indexed-traversable
+    OneTuple
+    QuickCheck
+    quickcheck-instances
+    tasty
+    tasty-quickcheck
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "More instances of FunctorWithIndex, FoldableWithIndex, TraversableWithIndex";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/indexed-traversable.nix b/pkgs/indexed-traversable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9c51a0dfb02573c7fefc0ebbdd1f278468c54140
--- /dev/null
+++ b/pkgs/indexed-traversable.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, array, base, containers, lib, transformers }:
+mkDerivation {
+  pname = "indexed-traversable";
+  version = "0.1.2";
+  sha256 = "516858ee7198b1fed1b93c665157f9855fd947379db7f115d48c1b0d670e698d";
+  revision = "2";
+  editedCabalFile = "0l2k9jrmixkkf7qzzq0bqgvk6axaqi9sxxkpb4dgj8frmc4bg8aj";
+  libraryHaskellDepends = [ array base containers transformers ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "FunctorWithIndex, FoldableWithIndex, TraversableWithIndex";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/integer-logarithms.nix b/pkgs/integer-logarithms.nix
new file mode 100644
index 0000000000000000000000000000000000000000..71b827789c2c4d02a77fe29b49481053fdb73dd2
--- /dev/null
+++ b/pkgs/integer-logarithms.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, array
+, base
+, ghc-bignum
+, ghc-prim
+, lib
+, QuickCheck
+, smallcheck
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, tasty-smallcheck
+}:
+mkDerivation {
+  pname = "integer-logarithms";
+  version = "1.0.3.1";
+  sha256 = "9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f";
+  revision = "3";
+  editedCabalFile = "0z81yksgx20d0rva41blsjcp3jsp1qy9sy385fpig0l074fzv6ym";
+  libraryHaskellDepends = [ array base ghc-bignum ghc-prim ];
+  testHaskellDepends = [
+    base
+    QuickCheck
+    smallcheck
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    tasty-smallcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/integer-logarithms";
+  description = "Integer logarithms";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/invariant.nix b/pkgs/invariant.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b39f3ff85365fb16faf698d97b9a1702c7d8db6f
--- /dev/null
+++ b/pkgs/invariant.nix
@@ -0,0 +1,56 @@
+{ mkDerivation
+, array
+, base
+, bifunctors
+, comonad
+, containers
+, contravariant
+, ghc-prim
+, hspec
+, hspec-discover
+, lib
+, profunctors
+, QuickCheck
+, StateVar
+, stm
+, tagged
+, template-haskell
+, th-abstraction
+, transformers
+, transformers-compat
+, unordered-containers
+}:
+mkDerivation {
+  pname = "invariant";
+  version = "0.6";
+  sha256 = "b52b2a798c514e2f3bb37d9d629078f433745fa8a25756198c4d33751d7bce1d";
+  revision = "1";
+  editedCabalFile = "0551ll1swnrmq09j89jqnxl4qnirbbpdpsdym23adaf36qdd7v37";
+  libraryHaskellDepends = [
+    array
+    base
+    bifunctors
+    comonad
+    containers
+    contravariant
+    ghc-prim
+    profunctors
+    StateVar
+    stm
+    tagged
+    template-haskell
+    th-abstraction
+    transformers
+    transformers-compat
+    unordered-containers
+  ];
+  testHaskellDepends = [ base hspec QuickCheck template-haskell ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nfrisby/invariant-functors";
+  description = "Haskell98 invariant functors";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/iproute.nix b/pkgs/iproute.nix
new file mode 100644
index 0000000000000000000000000000000000000000..85c61ab826c41cd6593293f33b861c5c0a751cc8
--- /dev/null
+++ b/pkgs/iproute.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, appar
+, base
+, byteorder
+, bytestring
+, containers
+, doctest
+, hspec
+, lib
+, network
+, QuickCheck
+, safe
+}:
+mkDerivation {
+  pname = "iproute";
+  version = "1.7.12";
+  sha256 = "f1751d1579fcbc1d9f86d9d1c9ede48cb71cbeb1d7b2043491c6216e4f236b63";
+  libraryHaskellDepends = [
+    appar
+    base
+    byteorder
+    bytestring
+    containers
+    network
+  ];
+  testHaskellDepends = [
+    appar
+    base
+    byteorder
+    bytestring
+    containers
+    doctest
+    hspec
+    network
+    QuickCheck
+    safe
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.mew.org/~kazu/proj/iproute/";
+  description = "IP Routing Table";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/lens-aeson.nix b/pkgs/lens-aeson.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1eabb8fd4c66a39f86bdd7f45c43f0d3018aa148
--- /dev/null
+++ b/pkgs/lens-aeson.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, aeson
+, attoparsec
+, base
+, bytestring
+, lens
+, lib
+, scientific
+, text
+, text-short
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "lens-aeson";
+  version = "1.2.1";
+  sha256 = "347199fe28324940bfa9dfb29010ae37510854cc51f8ef88d0a621afe6daa023";
+  revision = "3";
+  editedCabalFile = "0lqpl5fhl94fm3xcwf8ssz7yg9nyfxp9bw2z959x7hg6bcqmv9p1";
+  libraryHaskellDepends = [
+    aeson
+    attoparsec
+    base
+    bytestring
+    lens
+    scientific
+    text
+    text-short
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/lens/lens-aeson/";
+  description = "Law-abiding lenses for aeson";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/lens-family-th.nix b/pkgs/lens-family-th.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4c740b22e6f99e7d149ec8e96f09a37d06168bf7
--- /dev/null
+++ b/pkgs/lens-family-th.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, hspec, lib, template-haskell, transformers }:
+mkDerivation {
+  pname = "lens-family-th";
+  version = "0.5.2.1";
+  sha256 = "b01d6bb9325fa1729325ebc94b70ccf7957bbe71cb11367b3acd791a143213f1";
+  libraryHaskellDepends = [ base template-haskell ];
+  testHaskellDepends = [ base hspec template-haskell transformers ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/DanBurton/lens-family-th#readme";
+  description = "Generate lens-family style lenses";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/lens.nix b/pkgs/lens.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d994a55f007b2fdc7cc2309f8c2f60a7c32e4eab
--- /dev/null
+++ b/pkgs/lens.nix
@@ -0,0 +1,121 @@
+{ mkDerivation
+, array
+, assoc
+, base
+, base-compat
+, base-orphans
+, bifunctors
+, bytestring
+, call-stack
+, comonad
+, containers
+, contravariant
+, criterion
+, deepseq
+, distributive
+, exceptions
+, filepath
+, free
+, generic-deriving
+, ghc-prim
+, hashable
+, HUnit
+, indexed-traversable
+, indexed-traversable-instances
+, kan-extensions
+, lib
+, mtl
+, parallel
+, profunctors
+, QuickCheck
+, reflection
+, semigroupoids
+, simple-reflect
+, strict
+, tagged
+, template-haskell
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, text
+, th-abstraction
+, these
+, transformers
+, transformers-compat
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "lens";
+  version = "5.2";
+  sha256 = "b33e2ebede468d9e8acb79d20bb5a5947fc3bec13cc39b122aa131c5e6dcd188";
+  libraryHaskellDepends = [
+    array
+    assoc
+    base
+    base-orphans
+    bifunctors
+    bytestring
+    call-stack
+    comonad
+    containers
+    contravariant
+    distributive
+    exceptions
+    filepath
+    free
+    ghc-prim
+    hashable
+    indexed-traversable
+    indexed-traversable-instances
+    kan-extensions
+    mtl
+    parallel
+    profunctors
+    reflection
+    semigroupoids
+    strict
+    tagged
+    template-haskell
+    text
+    th-abstraction
+    these
+    transformers
+    transformers-compat
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    deepseq
+    HUnit
+    mtl
+    QuickCheck
+    simple-reflect
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    transformers
+  ];
+  benchmarkHaskellDepends = [
+    base
+    base-compat
+    bytestring
+    comonad
+    containers
+    criterion
+    deepseq
+    generic-deriving
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/lens/";
+  description = "Lenses, Folds and Traversals";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/lifted-async.nix b/pkgs/lifted-async.nix
new file mode 100644
index 0000000000000000000000000000000000000000..35714f6c8e7f788796d158a3d43fb35f07b9f11f
--- /dev/null
+++ b/pkgs/lifted-async.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, async
+, base
+, constraints
+, deepseq
+, HUnit
+, lib
+, lifted-base
+, monad-control
+, mtl
+, tasty
+, tasty-bench
+, tasty-expected-failure
+, tasty-hunit
+, tasty-th
+, transformers-base
+}:
+mkDerivation {
+  pname = "lifted-async";
+  version = "0.10.2.1";
+  sha256 = "0d05715f44bb5464f97bac46302a81338271375b07c54c90efb33b1c0e298e48";
+  libraryHaskellDepends = [
+    async
+    base
+    constraints
+    lifted-base
+    monad-control
+    transformers-base
+  ];
+  testHaskellDepends = [
+    async
+    base
+    HUnit
+    lifted-base
+    monad-control
+    mtl
+    tasty
+    tasty-expected-failure
+    tasty-hunit
+    tasty-th
+  ];
+  benchmarkHaskellDepends = [ async base deepseq tasty-bench ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/maoe/lifted-async";
+  description = "Run lifted IO operations asynchronously and wait for their results";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/linear.nix b/pkgs/linear.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7f14b8dc41ccf8fca3acce38ab4ccda87e32d39a
--- /dev/null
+++ b/pkgs/linear.nix
@@ -0,0 +1,82 @@
+{ mkDerivation
+, adjunctions
+, base
+, base-orphans
+, binary
+, bytes
+, bytestring
+, cereal
+, containers
+, deepseq
+, distributive
+, ghc-prim
+, hashable
+, HUnit
+, indexed-traversable
+, lens
+, lib
+, random
+, reflection
+, semigroupoids
+, semigroups
+, simple-reflect
+, tagged
+, template-haskell
+, test-framework
+, test-framework-hunit
+, transformers
+, transformers-compat
+, unordered-containers
+, vector
+, void
+}:
+mkDerivation {
+  pname = "linear";
+  version = "1.21.10";
+  sha256 = "b90733227c9d4047e087a0083785e8293dc623169161c6dab12ece1ac90d7ab4";
+  libraryHaskellDepends = [
+    adjunctions
+    base
+    base-orphans
+    binary
+    bytes
+    cereal
+    containers
+    deepseq
+    distributive
+    ghc-prim
+    hashable
+    indexed-traversable
+    lens
+    random
+    reflection
+    semigroupoids
+    semigroups
+    tagged
+    template-haskell
+    transformers
+    transformers-compat
+    unordered-containers
+    vector
+    void
+  ];
+  testHaskellDepends = [
+    base
+    binary
+    bytestring
+    deepseq
+    HUnit
+    reflection
+    simple-reflect
+    test-framework
+    test-framework-hunit
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/linear/";
+  description = "Linear Algebra";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/lsp-types.nix b/pkgs/lsp-types.nix
new file mode 100644
index 0000000000000000000000000000000000000000..25eda49a48d99f1c8398795edb92053b27841883
--- /dev/null
+++ b/pkgs/lsp-types.nix
@@ -0,0 +1,77 @@
+{ mkDerivation
+, aeson
+, base
+, binary
+, containers
+, data-default
+, deepseq
+, Diff
+, dlist
+, exceptions
+, filepath
+, hashable
+, hspec
+, hspec-discover
+, lens
+, lib
+, mod
+, mtl
+, network-uri
+, QuickCheck
+, quickcheck-instances
+, safe
+, scientific
+, some
+, template-haskell
+, text
+, tuple
+, unordered-containers
+}:
+mkDerivation {
+  pname = "lsp-types";
+  version = "1.6.0.0";
+  sha256 = "385dc4fb3c7fcdb5c6cb26cf9f589b879cdb28dc7a452a6dc628dec369c19802";
+  libraryHaskellDepends = [
+    aeson
+    base
+    binary
+    containers
+    data-default
+    deepseq
+    Diff
+    dlist
+    exceptions
+    filepath
+    hashable
+    lens
+    mod
+    mtl
+    network-uri
+    safe
+    scientific
+    some
+    template-haskell
+    text
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    filepath
+    hspec
+    lens
+    network-uri
+    QuickCheck
+    quickcheck-instances
+    text
+    tuple
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/lsp";
+  description = "Haskell library for the Microsoft Language Server Protocol, data types";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/lsp.nix b/pkgs/lsp.nix
new file mode 100644
index 0000000000000000000000000000000000000000..154933c0838d9ec36caac7ce7468a47f1867841e
--- /dev/null
+++ b/pkgs/lsp.nix
@@ -0,0 +1,83 @@
+{ mkDerivation
+, aeson
+, async
+, attoparsec
+, base
+, bytestring
+, co-log-core
+, containers
+, data-default
+, directory
+, exceptions
+, filepath
+, hashable
+, hspec
+, hspec-discover
+, lens
+, lib
+, lsp-types
+, mtl
+, prettyprinter
+, random
+, sorted-list
+, stm
+, temporary
+, text
+, text-rope
+, transformers
+, unliftio-core
+, unordered-containers
+, uuid
+}:
+mkDerivation {
+  pname = "lsp";
+  version = "1.6.0.0";
+  sha256 = "896803766e8ceabeacc72743f4b92cf7766b2a1f09be270b29d0a39692b00470";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    async
+    attoparsec
+    base
+    bytestring
+    co-log-core
+    containers
+    data-default
+    directory
+    exceptions
+    filepath
+    hashable
+    lens
+    lsp-types
+    mtl
+    prettyprinter
+    random
+    sorted-list
+    stm
+    temporary
+    text
+    text-rope
+    transformers
+    unliftio-core
+    unordered-containers
+    uuid
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    hspec
+    sorted-list
+    text
+    text-rope
+    unordered-containers
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/lsp";
+  description = "Haskell library for the Microsoft Language Server Protocol";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/lucid.nix b/pkgs/lucid.nix
new file mode 100644
index 0000000000000000000000000000000000000000..67cb551b583f33946812a862cb8a74b99aaa07d9
--- /dev/null
+++ b/pkgs/lucid.nix
@@ -0,0 +1,61 @@
+{ mkDerivation
+, base
+, bifunctors
+, blaze-builder
+, bytestring
+, containers
+, criterion
+, deepseq
+, hashable
+, hspec
+, HUnit
+, lib
+, mmorph
+, mtl
+, parsec
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "lucid";
+  version = "2.11.1";
+  sha256 = "dcf57142ca1ad5e6dcecfaf4dba703031886c286f8b07ba8cd4470b077e6798e";
+  revision = "1";
+  editedCabalFile = "0wipmh3xcs00x8lbq5j780rdc2klfj67nzni21qc1pdbhr2whn9d";
+  libraryHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    containers
+    hashable
+    mmorph
+    mtl
+    text
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    bifunctors
+    hspec
+    HUnit
+    mtl
+    parsec
+    text
+  ];
+  benchmarkHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    criterion
+    deepseq
+    text
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/chrisdone/lucid";
+  description = "Clear to write, read and edit DSL for HTML";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/memory.nix b/pkgs/memory.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9b382e769e7f4b9b392fa07513553eecbe68638f
--- /dev/null
+++ b/pkgs/memory.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, basement
+, bytestring
+, deepseq
+, foundation
+, ghc-prim
+, lib
+}:
+mkDerivation {
+  pname = "memory";
+  version = "0.18.0";
+  sha256 = "fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e";
+  libraryHaskellDepends = [
+    base
+    basement
+    bytestring
+    deepseq
+    ghc-prim
+  ];
+  testHaskellDepends = [ base basement bytestring foundation ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/vincenthz/hs-memory";
+  description = "memory and related abstraction stuff";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/monoid-subclasses.nix b/pkgs/monoid-subclasses.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f3d7815ecea61580bc26f3000965b6cd2b94060e
--- /dev/null
+++ b/pkgs/monoid-subclasses.nix
@@ -0,0 +1,47 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, lib
+, primes
+, QuickCheck
+, quickcheck-instances
+, tasty
+, tasty-quickcheck
+, text
+, vector
+}:
+mkDerivation {
+  pname = "monoid-subclasses";
+  version = "1.1.3";
+  sha256 = "9bf112d64c08438733e17fc0ef8fb2bae004d043ea9672c541f1d20c429cf4d9";
+  revision = "1";
+  editedCabalFile = "0y8sw3zsmz5ssn2gl2fsqg44n7xf3xsf6vhrzwnkbaa97hj76nh2";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    primes
+    text
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    primes
+    QuickCheck
+    quickcheck-instances
+    tasty
+    tasty-quickcheck
+    text
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/blamario/monoid-subclasses/";
+  description = "Subclasses of Monoid";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/net-mqtt.nix b/pkgs/net-mqtt.nix
new file mode 100644
index 0000000000000000000000000000000000000000..60506e290fb01fb7079812f8de1672799ca68b4a
--- /dev/null
+++ b/pkgs/net-mqtt.nix
@@ -0,0 +1,103 @@
+{ mkDerivation
+, async
+, attoparsec
+, attoparsec-binary
+, base
+, binary
+, bytestring
+, checkers
+, conduit
+, conduit-extra
+, connection
+, containers
+, deepseq
+, HUnit
+, lib
+, network-conduit-tls
+, network-uri
+, optparse-applicative
+, QuickCheck
+, stm
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, websockets
+}:
+mkDerivation {
+  pname = "net-mqtt";
+  version = "0.8.2.2";
+  sha256 = "c3e30f445a7aef4374b015ceb4239d659bab81dfb879f1675a17b458f4f44da9";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    async
+    attoparsec
+    attoparsec-binary
+    base
+    binary
+    bytestring
+    conduit
+    conduit-extra
+    connection
+    containers
+    deepseq
+    network-conduit-tls
+    network-uri
+    QuickCheck
+    stm
+    text
+    websockets
+  ];
+  executableHaskellDepends = [
+    async
+    attoparsec
+    attoparsec-binary
+    base
+    binary
+    bytestring
+    conduit
+    conduit-extra
+    connection
+    containers
+    deepseq
+    network-conduit-tls
+    network-uri
+    optparse-applicative
+    QuickCheck
+    stm
+    text
+    websockets
+  ];
+  testHaskellDepends = [
+    async
+    attoparsec
+    attoparsec-binary
+    base
+    binary
+    bytestring
+    checkers
+    conduit
+    conduit-extra
+    connection
+    containers
+    deepseq
+    HUnit
+    network-conduit-tls
+    network-uri
+    QuickCheck
+    stm
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    websockets
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/dustin/mqtt-hs#readme";
+  description = "An MQTT Protocol Implementation";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/network-byte-order.nix b/pkgs/network-byte-order.nix
new file mode 100644
index 0000000000000000000000000000000000000000..696506cb012de2b0cb5034f9de8b9297a8fda33c
--- /dev/null
+++ b/pkgs/network-byte-order.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, bytestring, doctest, lib }:
+mkDerivation {
+  pname = "network-byte-order";
+  version = "0.1.6";
+  sha256 = "f2b0ccc9b759d686af30aac874fc394c13c1fc8a3db00fac401c9339c263dc5e";
+  revision = "1";
+  editedCabalFile = "0fpyfd1adg9fr7w6afxkx306c0kaz3ji3x78sl29v9j3mh4vdn13";
+  libraryHaskellDepends = [ base bytestring ];
+  testHaskellDepends = [ base bytestring doctest ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Network byte order utilities";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/newtype-generics.nix b/pkgs/newtype-generics.nix
new file mode 100644
index 0000000000000000000000000000000000000000..acd3f35a9568f3c9203b5f26d5c7f4b4a074b72e
--- /dev/null
+++ b/pkgs/newtype-generics.nix
@@ -0,0 +1,26 @@
+{ mkDerivation
+, base
+, gauge
+, hspec
+, hspec-discover
+, lib
+, semigroups
+}:
+mkDerivation {
+  pname = "newtype-generics";
+  version = "0.6.2";
+  sha256 = "a1ac6052020a09f1bc5000a141d2edd4b31a82f95ce5957b7eedad40c065a74e";
+  revision = "1";
+  editedCabalFile = "0xgc7sxs1p3qibgwbikjdrhn47j7m4gk5x1wrv9hncks6hd6hsyf";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base hspec ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [ base gauge semigroups ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/sjakobi/newtype-generics";
+  description = "A typeclass and set of functions for working with newtypes";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/nothunks.nix b/pkgs/nothunks.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c8d482b43249b956e4d2512ba677edd5ab8089c6
--- /dev/null
+++ b/pkgs/nothunks.nix
@@ -0,0 +1,47 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, ghc-heap
+, ghc-prim
+, hedgehog
+, lib
+, random
+, stm
+, tasty
+, tasty-hedgehog
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "nothunks";
+  version = "0.1.3";
+  sha256 = "c191e9c3d86ca006bf8d85adfd936ff997759120b0fcfaf4960a56d8bd850e53";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    ghc-heap
+    stm
+    text
+    time
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    ghc-prim
+    hedgehog
+    random
+    stm
+    tasty
+    tasty-hedgehog
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Examine values for unexpected thunks";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/optics-core.nix b/pkgs/optics-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e67aa7cbac1996b5da363233b402fe0f64fc9344
--- /dev/null
+++ b/pkgs/optics-core.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, array
+, base
+, containers
+, indexed-profunctors
+, indexed-traversable
+, lib
+, transformers
+}:
+mkDerivation {
+  pname = "optics-core";
+  version = "0.4.1";
+  sha256 = "ca64e215f31719482a9449b5d56fbd589367e639d2b1869f7965a3970442949a";
+  revision = "1";
+  editedCabalFile = "0sqwlbl6x0197bpkq7jvn9j5iwyr54z8qwmxbij6qlwjyfld2qxi";
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    indexed-profunctors
+    indexed-traversable
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Optics as an abstract interface: core definitions";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/optics-extra.nix b/pkgs/optics-extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f24ad183e9679c9c56e2e6b4892dbbd0d5097f84
--- /dev/null
+++ b/pkgs/optics-extra.nix
@@ -0,0 +1,44 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, hashable
+, indexed-profunctors
+, indexed-traversable-instances
+, lib
+, mtl
+, optics-core
+, text
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "optics-extra";
+  version = "0.4.2.1";
+  sha256 = "7e23a7a325e3448354614d3d958279c9ac2fdd0831ceee2808830e7a962fca41";
+  revision = "1";
+  editedCabalFile = "0bpr1bkb7mmww028n8ikwa0qhdl7ybxpb9s887dlp3dvxr5iq8nq";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    hashable
+    indexed-profunctors
+    indexed-traversable-instances
+    mtl
+    optics-core
+    text
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Extra utilities and instances for optics-core";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/optics-th.nix b/pkgs/optics-th.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c95ee757bf31e12b9a932c6eece3746ad182dfd1
--- /dev/null
+++ b/pkgs/optics-th.nix
@@ -0,0 +1,34 @@
+{ mkDerivation
+, base
+, containers
+, lib
+, mtl
+, optics-core
+, tagged
+, template-haskell
+, th-abstraction
+, transformers
+}:
+mkDerivation {
+  pname = "optics-th";
+  version = "0.4.1";
+  sha256 = "d73857b79dcd8f7c7e70fa4727f134145b62902e8d3e448f8b25c38a9da4fd17";
+  revision = "2";
+  editedCabalFile = "1fl217q7s0g8a46p2smanhhdj0jqvc9n3lagcnpphkv3fzfgrcbz";
+  libraryHaskellDepends = [
+    base
+    containers
+    mtl
+    optics-core
+    template-haskell
+    th-abstraction
+    transformers
+  ];
+  testHaskellDepends = [ base optics-core tagged ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Optics construction using TemplateHaskell";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/optics.nix b/pkgs/optics.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e155925209ec7ba32466ae5c63b1b561963e388f
--- /dev/null
+++ b/pkgs/optics.nix
@@ -0,0 +1,69 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, indexed-profunctors
+, inspection-testing
+, lens
+, lib
+, mtl
+, optics-core
+, optics-extra
+, optics-th
+, QuickCheck
+, random
+, tasty
+, tasty-bench
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "optics";
+  version = "0.4.2";
+  sha256 = "ebe7553704d3491f02777dc6f02a2cf170d4b87ce5265139ce759314460533c7";
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    mtl
+    optics-core
+    optics-extra
+    optics-th
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    indexed-profunctors
+    inspection-testing
+    mtl
+    optics-core
+    QuickCheck
+    random
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    template-haskell
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    containers
+    lens
+    tasty-bench
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Optics as an abstract interface";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/pandoc.nix b/pkgs/pandoc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7b22c189bc18ee82c9895f986038a0e571df6ecd
--- /dev/null
+++ b/pkgs/pandoc.nix
@@ -0,0 +1,222 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, array
+, attoparsec
+, base
+, base64
+, binary
+, blaze-html
+, blaze-markup
+, bytestring
+, case-insensitive
+, citeproc
+, commonmark
+, commonmark-extensions
+, commonmark-pandoc
+, connection
+, containers
+, data-default
+, deepseq
+, Diff
+, directory
+, doclayout
+, doctemplates
+, emojis
+, exceptions
+, file-embed
+, filepath
+, Glob
+, gridtables
+, haddock-library
+, hslua
+, hslua-aeson
+, hslua-module-doclayout
+, hslua-module-path
+, hslua-module-system
+, hslua-module-text
+, hslua-module-version
+, http-client
+, http-client-tls
+, http-types
+, ipynb
+, jira-wiki-markup
+, JuicyPixels
+, lib
+, lpeg
+, mtl
+, network
+, network-uri
+, pandoc-lua-marshal
+, pandoc-types
+, parsec
+, pretty
+, pretty-show
+, process
+, random
+, safe
+, scientific
+, servant-server
+, SHA
+, skylighting
+, skylighting-core
+, split
+, syb
+, tagsoup
+, tasty
+, tasty-bench
+, tasty-golden
+, tasty-hunit
+, tasty-lua
+, tasty-quickcheck
+, temporary
+, texmath
+, text
+, text-conversions
+, time
+, unicode-collation
+, unicode-transforms
+, unix
+, wai
+, wai-extra
+, warp
+, xml
+, xml-conduit
+, xml-types
+, yaml
+, zip-archive
+, zlib
+}:
+mkDerivation {
+  pname = "pandoc";
+  version = "2.19.2";
+  sha256 = "36e83694c36a5af35a4442c4d5abd4273289d9d309793466f59c1632e87d4245";
+  configureFlags = [ "-f-trypandoc" ];
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    array
+    attoparsec
+    base
+    base64
+    binary
+    blaze-html
+    blaze-markup
+    bytestring
+    case-insensitive
+    citeproc
+    commonmark
+    commonmark-extensions
+    commonmark-pandoc
+    connection
+    containers
+    data-default
+    deepseq
+    directory
+    doclayout
+    doctemplates
+    emojis
+    exceptions
+    file-embed
+    filepath
+    Glob
+    gridtables
+    haddock-library
+    hslua
+    hslua-aeson
+    hslua-module-doclayout
+    hslua-module-path
+    hslua-module-system
+    hslua-module-text
+    hslua-module-version
+    http-client
+    http-client-tls
+    http-types
+    ipynb
+    jira-wiki-markup
+    JuicyPixels
+    lpeg
+    mtl
+    network
+    network-uri
+    pandoc-lua-marshal
+    pandoc-types
+    parsec
+    pretty
+    pretty-show
+    process
+    random
+    safe
+    scientific
+    servant-server
+    SHA
+    skylighting
+    skylighting-core
+    split
+    syb
+    tagsoup
+    temporary
+    texmath
+    text
+    text-conversions
+    time
+    unicode-collation
+    unicode-transforms
+    unix
+    wai
+    xml
+    xml-conduit
+    xml-types
+    yaml
+    zip-archive
+    zlib
+  ];
+  executableHaskellDepends = [ base safe wai-extra warp ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    Diff
+    directory
+    doctemplates
+    exceptions
+    filepath
+    Glob
+    hslua
+    mtl
+    pandoc-types
+    process
+    tasty
+    tasty-golden
+    tasty-hunit
+    tasty-lua
+    tasty-quickcheck
+    text
+    time
+    xml
+    zip-archive
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    mtl
+    tasty-bench
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  postInstall = ''
+    mkdir -p $out/share/man/man1
+    mv "man/"*.1 $out/share/man/man1/
+  '';
+  homepage = "https://pandoc.org";
+  description = "Conversion between markup formats";
+  license = lib.licenses.gpl2Plus;
+  mainProgram = "pandoc";
+}
diff --git a/pkgs/parallel.nix b/pkgs/parallel.nix
new file mode 100644
index 0000000000000000000000000000000000000000..54b29d0ad764266212480140775e3f6355bfbff4
--- /dev/null
+++ b/pkgs/parallel.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, array, base, containers, deepseq, ghc-prim, lib }:
+mkDerivation {
+  pname = "parallel";
+  version = "3.2.2.0";
+  sha256 = "170453a71a2a8b31cca63125533f7771d7debeb639700bdabdd779c34d8a6ef6";
+  revision = "5";
+  editedCabalFile = "1q45wzpf2sda0244l55gakl3g5zqhcb27m86nhl3vslcjc35mpbf";
+  libraryHaskellDepends = [ array base containers deepseq ghc-prim ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Parallel programming library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/pcg-random.nix b/pkgs/pcg-random.nix
new file mode 100644
index 0000000000000000000000000000000000000000..33cde9a56b19c74d8c63f09fce99831ecb21a698
--- /dev/null
+++ b/pkgs/pcg-random.nix
@@ -0,0 +1,32 @@
+{ mkDerivation
+, base
+, bytestring
+, Cabal
+, cabal-doctest
+, doctest
+, entropy
+, lib
+, primitive
+, random
+}:
+mkDerivation {
+  pname = "pcg-random";
+  version = "0.1.3.7";
+  sha256 = "e6c8c26841b5d0d6d9e2816e952e397062730fd1a0bc13cf7c3ebcba6dc1d2d0";
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [
+    base
+    bytestring
+    entropy
+    primitive
+    random
+  ];
+  testHaskellDepends = [ base doctest ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/cchalmers/pcg-random";
+  description = "Haskell bindings to the PCG random number generator";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/polysemy-extra.nix b/pkgs/polysemy-extra.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5cd75a029e6cd529b7bff4f6e027e2c172ce850d
--- /dev/null
+++ b/pkgs/polysemy-extra.nix
@@ -0,0 +1,24 @@
+{ mkDerivation
+, base
+, containers
+, lib
+, polysemy
+, polysemy-kvstore
+}:
+mkDerivation {
+  pname = "polysemy-extra";
+  version = "0.2.1.0";
+  sha256 = "523b9f267afbe492238e072fa39c1153e5fb471709d0c77802125a96494c5ec0";
+  libraryHaskellDepends = [
+    base
+    containers
+    polysemy
+    polysemy-kvstore
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Extra Input and Output functions for polysemy";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-kvstore.nix b/pkgs/polysemy-kvstore.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6d9a19506501950fac175a54c80f84ce8ded2ccb
--- /dev/null
+++ b/pkgs/polysemy-kvstore.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, base, containers, lib, polysemy }:
+mkDerivation {
+  pname = "polysemy-kvstore";
+  version = "0.1.3.0";
+  sha256 = "8d88fddae6477be9e36cb34d4cdbf226cc548207ef761b83a3513feb780ccbf0";
+  libraryHaskellDepends = [ base containers polysemy ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "KVStore effect for polysemy";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-methodology.nix b/pkgs/polysemy-methodology.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4d1679e2675904f29becacaaa54fe5a6b60a6aa1
--- /dev/null
+++ b/pkgs/polysemy-methodology.nix
@@ -0,0 +1,26 @@
+{ mkDerivation
+, base
+, lib
+, polysemy
+, polysemy-kvstore
+, polysemy-several
+}:
+mkDerivation {
+  pname = "polysemy-methodology";
+  version = "0.2.1.0";
+  sha256 = "2fccb2a89981389d2a2be827025177a32f4196cd46c69992d53af8aa0b35ad9e";
+  revision = "2";
+  editedCabalFile = "0dpancn85f8j3pxhk43lik6fbznp502cc68rkhqkan791kh1bbc7";
+  libraryHaskellDepends = [
+    base
+    polysemy
+    polysemy-kvstore
+    polysemy-several
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Domain modelling algebra for polysemy";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-path.nix b/pkgs/polysemy-path.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3a478300a43f8dcb65efa6b4dc5a2cfee9571159
--- /dev/null
+++ b/pkgs/polysemy-path.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, lib, path, polysemy, polysemy-extra }:
+mkDerivation {
+  pname = "polysemy-path";
+  version = "0.2.1.0";
+  sha256 = "d9c245e9ff1afbd519179cf3fbcfbf3934360721cfdfc35364f86e314854aa6a";
+  revision = "1";
+  editedCabalFile = "0x9b1zm804bnmjs0qbrx23s1mzgb6h9dqfchf8i3ri7x1sy24ibh";
+  libraryHaskellDepends = [ base path polysemy polysemy-extra ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Polysemy versions of Path functions";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-plugin.nix b/pkgs/polysemy-plugin.nix
new file mode 100644
index 0000000000000000000000000000000000000000..cd26b0b8773d4aba6527263eb1256d53ce84cf3e
--- /dev/null
+++ b/pkgs/polysemy-plugin.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, base
+, Cabal
+, cabal-doctest
+, containers
+, doctest
+, fetchgit
+, ghc
+, ghc-tcplugins-extra
+, hspec
+, hspec-discover
+, inspection-testing
+, lib
+, polysemy
+, should-not-typecheck
+, syb
+, transformers
+}:
+mkDerivation {
+  pname = "polysemy-plugin";
+  version = "0.4.0.0";
+  src = fetchgit {
+    url = "https://github.com/locallycompact/polysemy";
+    sha256 = "0g75az24xc0694hakmkfwxmwd6bm79v48j42yjibiixy14dj1d5g";
+    rev = "5942a398ef02bbbe94bedd68f8628390ed223107";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/polysemy-plugin/; echo source root reset to $sourceRoot";
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [
+    base
+    containers
+    ghc
+    ghc-tcplugins-extra
+    polysemy
+    syb
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    doctest
+    ghc
+    ghc-tcplugins-extra
+    hspec
+    inspection-testing
+    polysemy
+    should-not-typecheck
+    syb
+    transformers
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/polysemy-research/polysemy#readme";
+  description = "Disambiguate obvious uses of effects";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/polysemy-several.nix b/pkgs/polysemy-several.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f2fbc4611bfecf6d34b4524fd5a01c6fa4d7f170
--- /dev/null
+++ b/pkgs/polysemy-several.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, base, lib, polysemy }:
+mkDerivation {
+  pname = "polysemy-several";
+  version = "0.1.1.0";
+  sha256 = "dc02a59d49b4c43b94022a3ab0a6b3cc2556e76fa1077529a4c2da31dede7641";
+  libraryHaskellDepends = [ base polysemy ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Run several effects at once, taken from the polysemy-zoo";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-time.nix b/pkgs/polysemy-time.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9abed2ca1a58045998de1abb5ec13a2d066376bc
--- /dev/null
+++ b/pkgs/polysemy-time.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, aeson
+, base
+, incipit-core
+, lib
+, polysemy-test
+, stm
+, tasty
+, template-haskell
+, time
+, torsor
+}:
+mkDerivation {
+  pname = "polysemy-time";
+  version = "0.5.1.0";
+  sha256 = "857dbbe99e6e6a1a061aa9cac88a630f2bddc0c748ed8ec8d076b3b44d11e59a";
+  libraryHaskellDepends = [
+    aeson
+    base
+    incipit-core
+    stm
+    template-haskell
+    time
+    torsor
+  ];
+  testHaskellDepends = [
+    base
+    incipit-core
+    polysemy-test
+    tasty
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/tek/polysemy-time#readme";
+  description = "Polysemy effects for time";
+  license = "BSD-2-Clause-Patent";
+}
diff --git a/pkgs/polysemy-vinyl.nix b/pkgs/polysemy-vinyl.nix
new file mode 100644
index 0000000000000000000000000000000000000000..174c2a2eea683f4ec774bf53751fa15993b89cfe
--- /dev/null
+++ b/pkgs/polysemy-vinyl.nix
@@ -0,0 +1,28 @@
+{ mkDerivation
+, base
+, lib
+, polysemy
+, polysemy-extra
+, polysemy-several
+, vinyl
+}:
+mkDerivation {
+  pname = "polysemy-vinyl";
+  version = "0.1.5.0";
+  sha256 = "84cdb95360548060eeb586e9948b8a751a55e8a5b06cfc50013a3227b60dc91b";
+  revision = "1";
+  editedCabalFile = "13f289dxr03habyggn3vl7lzrl2r3a9r0y0bisrfmq48qaiv08n1";
+  libraryHaskellDepends = [
+    base
+    polysemy
+    polysemy-extra
+    polysemy-several
+    vinyl
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Functions for mapping vinyl records in polysemy";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/polysemy-zoo.nix b/pkgs/polysemy-zoo.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a4a07430774a443ce051e094f3500128394423aa
--- /dev/null
+++ b/pkgs/polysemy-zoo.nix
@@ -0,0 +1,70 @@
+{ mkDerivation
+, async
+, base
+, compact
+, constraints
+, containers
+, contravariant
+, exceptions
+, ghc-prim
+, hspec
+, hspec-discover
+, lib
+, mtl
+, polysemy
+, polysemy-plugin
+, random
+, reflection
+, streaming
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "polysemy-zoo";
+  version = "0.8.0.0";
+  sha256 = "8c46937c61c980ac3024c4eeb1bf32a686eb2c5bcc2a65fad25d102512c89afa";
+  libraryHaskellDepends = [
+    async
+    base
+    compact
+    constraints
+    containers
+    contravariant
+    exceptions
+    ghc-prim
+    mtl
+    polysemy
+    random
+    reflection
+    streaming
+    text
+    transformers
+  ];
+  testHaskellDepends = [
+    async
+    base
+    compact
+    constraints
+    containers
+    contravariant
+    exceptions
+    ghc-prim
+    hspec
+    mtl
+    polysemy
+    polysemy-plugin
+    random
+    reflection
+    streaming
+    text
+    transformers
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/isovector/polysemy-zoo#readme";
+  description = "Experimental, user-contributed effects and interpreters for polysemy";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/polysemy.nix b/pkgs/polysemy.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bf7e3cc18dce677650fe8b1c7883d4ceb5cfc515
--- /dev/null
+++ b/pkgs/polysemy.nix
@@ -0,0 +1,90 @@
+{ mkDerivation
+, async
+, base
+, Cabal
+, cabal-doctest
+, containers
+, criterion
+, doctest
+, first-class-families
+, free
+, freer-simple
+, hspec
+, hspec-discover
+, inspection-testing
+, lib
+, mtl
+, QuickCheck
+, stm
+, syb
+, template-haskell
+, th-abstraction
+, transformers
+, type-errors
+, unagi-chan
+}:
+mkDerivation {
+  pname = "polysemy";
+  version = "1.7.1.0";
+  sha256 = "4c9556c0c3f38f5fa655567106ecb53cd357e6ffaf8289753ba6dc26fd4bc224";
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [
+    async
+    base
+    containers
+    first-class-families
+    mtl
+    QuickCheck
+    stm
+    syb
+    template-haskell
+    th-abstraction
+    transformers
+    type-errors
+    unagi-chan
+  ];
+  testHaskellDepends = [
+    async
+    base
+    containers
+    doctest
+    first-class-families
+    hspec
+    inspection-testing
+    mtl
+    QuickCheck
+    stm
+    syb
+    template-haskell
+    th-abstraction
+    transformers
+    type-errors
+    unagi-chan
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    async
+    base
+    containers
+    criterion
+    first-class-families
+    free
+    freer-simple
+    mtl
+    QuickCheck
+    stm
+    syb
+    template-haskell
+    th-abstraction
+    transformers
+    type-errors
+    unagi-chan
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/polysemy-research/polysemy#readme";
+  description = "Higher-order, low-boilerplate free monads";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/postgresql-libpq.nix b/pkgs/postgresql-libpq.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7305d9c8be68a9b1d95240c6f245ec0e2a31eac2
--- /dev/null
+++ b/pkgs/postgresql-libpq.nix
@@ -0,0 +1,19 @@
+{ mkDerivation, base, bytestring, Cabal, lib, postgresql, unix }:
+mkDerivation {
+  pname = "postgresql-libpq";
+  version = "0.9.4.3";
+  sha256 = "e3e246dcd55352fce514969a72a6fe37771102034fb8e662fdc7ae780b83d6bd";
+  revision = "3";
+  editedCabalFile = "02cj493a2qxl5hddiq0579079s398hdqqy164pig6d61nl7q66cs";
+  setupHaskellDepends = [ base Cabal ];
+  libraryHaskellDepends = [ base bytestring unix ];
+  librarySystemDepends = [ postgresql ];
+  testHaskellDepends = [ base bytestring ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/postgresql-libpq";
+  description = "low-level binding to libpq";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/postgresql-simple.nix b/pkgs/postgresql-simple.nix
new file mode 100644
index 0000000000000000000000000000000000000000..233b8084abd9df4ed15f71991b0fdf20c3c78a1d
--- /dev/null
+++ b/pkgs/postgresql-simple.nix
@@ -0,0 +1,80 @@
+{ mkDerivation
+, aeson
+, attoparsec
+, base
+, base16-bytestring
+, bytestring
+, bytestring-builder
+, case-insensitive
+, containers
+, cryptohash-md5
+, filepath
+, hashable
+, HUnit
+, inspection-testing
+, lib
+, Only
+, postgresql-libpq
+, scientific
+, tasty
+, tasty-golden
+, tasty-hunit
+, template-haskell
+, text
+, time-compat
+, transformers
+, uuid-types
+, vector
+}:
+mkDerivation {
+  pname = "postgresql-simple";
+  version = "0.6.4";
+  sha256 = "6d90394203ea3aa27cae4492569ab14bf175cd2d30112e565ffb92dbe95ce267";
+  revision = "8";
+  editedCabalFile = "1qavb3qs1g307pc19k9y3yvqp0c1srwsplijvayn9ldp0bxdy6q8";
+  libraryHaskellDepends = [
+    aeson
+    attoparsec
+    base
+    bytestring
+    bytestring-builder
+    case-insensitive
+    containers
+    hashable
+    Only
+    postgresql-libpq
+    scientific
+    template-haskell
+    text
+    time-compat
+    transformers
+    uuid-types
+    vector
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    bytestring
+    case-insensitive
+    containers
+    cryptohash-md5
+    filepath
+    HUnit
+    inspection-testing
+    postgresql-libpq
+    tasty
+    tasty-golden
+    tasty-hunit
+    text
+    time-compat
+    vector
+  ];
+  benchmarkHaskellDepends = [ base vector ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Mid-Level PostgreSQL client library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/pretty-simple.nix b/pkgs/pretty-simple.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7171590a522f42be8f55e39e4c102d15e4fe4388
--- /dev/null
+++ b/pkgs/pretty-simple.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, base
+, Cabal
+, cabal-doctest
+, containers
+, criterion
+, doctest
+, Glob
+, lib
+, mtl
+, optparse-applicative
+, prettyprinter
+, prettyprinter-ansi-terminal
+, QuickCheck
+, template-haskell
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "pretty-simple";
+  version = "4.1.1.0";
+  sha256 = "dae179b1a967e1d443f135e5b3f5abdf378e515fb8ea86e091bc487dc1a25d4a";
+  isLibrary = true;
+  isExecutable = true;
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [
+    base
+    containers
+    mtl
+    prettyprinter
+    prettyprinter-ansi-terminal
+    text
+    transformers
+  ];
+  executableHaskellDepends = [ base optparse-applicative text ];
+  testHaskellDepends = [
+    base
+    doctest
+    Glob
+    QuickCheck
+    template-haskell
+  ];
+  benchmarkHaskellDepends = [ base criterion text ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/cdepillabout/pretty-simple";
+  description = "pretty printer for data types with a 'Show' instance";
+  license = lib.licenses.bsd3;
+  mainProgram = "pretty-simple";
+}
diff --git a/pkgs/prettyprinter-ansi-terminal.nix b/pkgs/prettyprinter-ansi-terminal.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bfb45f1f5bdb3b838f8159c0d684590445f3b375
--- /dev/null
+++ b/pkgs/prettyprinter-ansi-terminal.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, ansi-terminal
+, base
+, base-compat
+, containers
+, deepseq
+, doctest
+, gauge
+, lib
+, prettyprinter
+, QuickCheck
+, text
+}:
+mkDerivation {
+  pname = "prettyprinter-ansi-terminal";
+  version = "1.1.3";
+  sha256 = "813739308ad6050620578994effe21058a170a341716acf52573fae42b5b1db3";
+  libraryHaskellDepends = [ ansi-terminal base prettyprinter text ];
+  testHaskellDepends = [ base doctest ];
+  benchmarkHaskellDepends = [
+    base
+    base-compat
+    containers
+    deepseq
+    gauge
+    prettyprinter
+    QuickCheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/quchen/prettyprinter";
+  description = "ANSI terminal backend for the »prettyprinter« package";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/primitive.nix b/pkgs/primitive.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ad2442fd2a49e5d52126789c759c6f975910fff8
--- /dev/null
+++ b/pkgs/primitive.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, base
+, base-orphans
+, deepseq
+, ghc-prim
+, lib
+, QuickCheck
+, quickcheck-classes-base
+, tagged
+, tasty
+, tasty-bench
+, tasty-quickcheck
+, template-haskell
+, transformers
+, transformers-compat
+}:
+mkDerivation {
+  pname = "primitive";
+  version = "0.7.4.0";
+  sha256 = "5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5";
+  libraryHaskellDepends = [
+    base
+    deepseq
+    template-haskell
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    base-orphans
+    ghc-prim
+    QuickCheck
+    quickcheck-classes-base
+    tagged
+    tasty
+    tasty-quickcheck
+    transformers
+    transformers-compat
+  ];
+  benchmarkHaskellDepends = [
+    base
+    deepseq
+    tasty-bench
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/primitive";
+  description = "Primitive memory-related operations";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/proteaaudio-sdl.nix b/pkgs/proteaaudio-sdl.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c4e02db3400000d42792b1a7f1fa73b92beb61b6
--- /dev/null
+++ b/pkgs/proteaaudio-sdl.nix
@@ -0,0 +1,18 @@
+{ mkDerivation, base, bytestring, c2hs, lib, SDL2 }:
+mkDerivation {
+  pname = "proteaaudio-sdl";
+  version = "0.9.2";
+  sha256 = "8c65a869e7f9af19fc9f7a596b5f12f1551b9008a76b5b85460f304eb6cdc662";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base bytestring ];
+  librarySystemDepends = [ SDL2 ];
+  libraryPkgconfigDepends = [ SDL2 ];
+  libraryToolDepends = [ c2hs ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Simple audio library for SDL";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/quickcheck-dynamic.nix b/pkgs/quickcheck-dynamic.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f6d2839ab7cde6d29b76e8e89a6cc754a96cc265
--- /dev/null
+++ b/pkgs/quickcheck-dynamic.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, lib, mtl, QuickCheck, random }:
+mkDerivation {
+  pname = "quickcheck-dynamic";
+  version = "2.0.0";
+  sha256 = "78082446894d9522a1e9f9589f758fef2fcb7778d9427fe8ce1cedc156ea48ed";
+  libraryHaskellDepends = [ base mtl QuickCheck random ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/quickcheck-dynamic#readme";
+  description = "A library for stateful property-based testing";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/quickcheck-instances.nix b/pkgs/quickcheck-instances.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a4a0986d594c063676242854e625dadd2f45a686
--- /dev/null
+++ b/pkgs/quickcheck-instances.nix
@@ -0,0 +1,78 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, case-insensitive
+, containers
+, data-fix
+, hashable
+, integer-logarithms
+, lib
+, old-time
+, OneTuple
+, primitive
+, QuickCheck
+, scientific
+, splitmix
+, strict
+, tagged
+, text
+, text-short
+, these
+, time
+, time-compat
+, transformers
+, transformers-compat
+, unordered-containers
+, uuid-types
+, vector
+}:
+mkDerivation {
+  pname = "quickcheck-instances";
+  version = "0.3.28";
+  sha256 = "c4111b7b49d5814120cb6055705d04eda7dd32a536057167c646aa77b68ccccb";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    case-insensitive
+    containers
+    data-fix
+    hashable
+    integer-logarithms
+    old-time
+    OneTuple
+    primitive
+    QuickCheck
+    scientific
+    splitmix
+    strict
+    tagged
+    text
+    text-short
+    these
+    time
+    time-compat
+    transformers
+    transformers-compat
+    unordered-containers
+    uuid-types
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    primitive
+    QuickCheck
+    tagged
+    uuid-types
+  ];
+  benchmarkHaskellDepends = [ base bytestring QuickCheck ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/qc-instances";
+  description = "Common quickcheck instances";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/rebase.nix b/pkgs/rebase.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f976214cfb614b543ab1863c8a89636650343795
--- /dev/null
+++ b/pkgs/rebase.nix
@@ -0,0 +1,73 @@
+{ mkDerivation
+, base
+, bifunctors
+, bytestring
+, comonad
+, containers
+, contravariant
+, deepseq
+, dlist
+, either
+, groups
+, hashable
+, invariant
+, lib
+, mtl
+, profunctors
+, scientific
+, selective
+, semigroupoids
+, stm
+, text
+, time
+, time-compat
+, transformers
+, unordered-containers
+, uuid-types
+, vector
+, vector-instances
+, void
+}:
+mkDerivation {
+  pname = "rebase";
+  version = "1.16";
+  sha256 = "0d76253ba464eee3363ff0ef4f0f470ca1711cd7acc907089b6eac15f8acad64";
+  revision = "1";
+  editedCabalFile = "048h2ir37j09s0z7fb364p7smyhzq6h4705qklhvylak9242gz2n";
+  libraryHaskellDepends = [
+    base
+    bifunctors
+    bytestring
+    comonad
+    containers
+    contravariant
+    deepseq
+    dlist
+    either
+    groups
+    hashable
+    invariant
+    mtl
+    profunctors
+    scientific
+    selective
+    semigroupoids
+    stm
+    text
+    time
+    time-compat
+    transformers
+    unordered-containers
+    uuid-types
+    vector
+    vector-instances
+    void
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/rebase";
+  description = "A more progressive alternative to the \"base\" package";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/relude.nix b/pkgs/relude.nix
new file mode 100644
index 0000000000000000000000000000000000000000..52504119925a73ee80556abf02b5b524679a3533
--- /dev/null
+++ b/pkgs/relude.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, deepseq
+, doctest
+, ghc-prim
+, Glob
+, hashable
+, hedgehog
+, lib
+, mtl
+, stm
+, tasty-bench
+, text
+, transformers
+, unordered-containers
+}:
+mkDerivation {
+  pname = "relude";
+  version = "1.1.0.0";
+  sha256 = "b51df08a93ef1331dd56389e158e67ac7b68c62cc1561c2890d3572c764ab609";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    deepseq
+    ghc-prim
+    hashable
+    mtl
+    stm
+    text
+    transformers
+    unordered-containers
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    doctest
+    Glob
+    hedgehog
+    text
+  ];
+  benchmarkHaskellDepends = [
+    base
+    tasty-bench
+    unordered-containers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kowainik/relude";
+  description = "Safe, performant, user-friendly and lightweight Haskell Standard Library";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/rerebase.nix b/pkgs/rerebase.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7b64c9ac198f63e30c1faded45959c7c22cc7bc8
--- /dev/null
+++ b/pkgs/rerebase.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, lib, rebase }:
+mkDerivation {
+  pname = "rerebase";
+  version = "1.15.0.3";
+  sha256 = "a2b18cff71a2a67c0a956385134ac2b5bbe2379a17d6dbe66bb4c0d79bd6b44b";
+  libraryHaskellDepends = [ rebase ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/nikita-volkov/rerebase";
+  description = "Reexports from \"base\" with a bunch of other standard libraries";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/retry.nix b/pkgs/retry.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3c2cde7035edec5ecb68c926498d062be21eb38b
--- /dev/null
+++ b/pkgs/retry.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, base
+, exceptions
+, ghc-prim
+, hedgehog
+, HUnit
+, lib
+, mtl
+, mtl-compat
+, random
+, stm
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, time
+, transformers
+, unliftio-core
+}:
+mkDerivation {
+  pname = "retry";
+  version = "0.9.3.0";
+  sha256 = "c11e5dcb6fc9b7a327ebdf9188edcbe39fce64e728294e41a61e9ad94fa84ecd";
+  libraryHaskellDepends = [
+    base
+    exceptions
+    ghc-prim
+    mtl
+    mtl-compat
+    random
+    transformers
+    unliftio-core
+  ];
+  testHaskellDepends = [
+    base
+    exceptions
+    ghc-prim
+    hedgehog
+    HUnit
+    mtl
+    mtl-compat
+    random
+    stm
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    time
+    transformers
+    unliftio-core
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/Soostone/retry";
+  description = "Retry combinators for monadic actions that may fail";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/rope-utf16-splay.nix b/pkgs/rope-utf16-splay.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b08f639666805b9cd30e02a588c3830ab7bb2526
--- /dev/null
+++ b/pkgs/rope-utf16-splay.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, lib
+, QuickCheck
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+}:
+mkDerivation {
+  pname = "rope-utf16-splay";
+  version = "0.4.0.0";
+  sha256 = "c189f1ccac3a2bf92dd2b7f85b194364983813d350870011ac71165f5b2f5fee";
+  libraryHaskellDepends = [ base text ];
+  testHaskellDepends = [
+    base
+    QuickCheck
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ollef/rope-utf16-splay";
+  description = "Ropes optimised for updating using UTF-16 code units and row/column pairs";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/safe-coloured-text.nix b/pkgs/safe-coloured-text.nix
new file mode 100644
index 0000000000000000000000000000000000000000..39b372807d16b6984f5be4c47e98643dd17ecf13
--- /dev/null
+++ b/pkgs/safe-coloured-text.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, text
+, validity
+, validity-bytestring
+, validity-text
+}:
+mkDerivation {
+  pname = "safe-coloured-text";
+  version = "0.2.0.1";
+  sha256 = "b1604a221ee28e672a5b876a9f368ebbd65d56cc93afeb486083857d7c9b1759";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    text
+    validity
+    validity-bytestring
+    validity-text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/safe-coloured-text#readme";
+  description = "Safely output coloured text";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/saltine.nix b/pkgs/saltine.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e74e19a31d903f80069eb99e628e1f2be838701d
--- /dev/null
+++ b/pkgs/saltine.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, bytestring
+, hashable
+, lib
+, libsodium
+, profunctors
+, QuickCheck
+, semigroups
+, test-framework
+, test-framework-quickcheck2
+}:
+mkDerivation {
+  pname = "saltine";
+  version = "0.1.1.1";
+  sha256 = "a75b1aae629bef09c1b14364abbf8998420e0737bf2f3515ca18055ef336f9ad";
+  libraryHaskellDepends = [ base bytestring hashable profunctors ];
+  libraryPkgconfigDepends = [ libsodium ];
+  testHaskellDepends = [
+    base
+    bytestring
+    QuickCheck
+    semigroups
+    test-framework
+    test-framework-quickcheck2
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Cryptography that's easy to digest (NaCl/libsodium bindings)";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/scientific.nix b/pkgs/scientific.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9e85fbde6c2638c42be1374e0d1240fecccf4e39
--- /dev/null
+++ b/pkgs/scientific.nix
@@ -0,0 +1,59 @@
+{ mkDerivation
+, base
+, binary
+, bytestring
+, containers
+, criterion
+, deepseq
+, hashable
+, integer-logarithms
+, lib
+, primitive
+, QuickCheck
+, smallcheck
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, tasty-smallcheck
+, template-haskell
+, text
+}:
+mkDerivation {
+  pname = "scientific";
+  version = "0.3.7.0";
+  sha256 = "a3a121c4b3d68fb8b9f8c709ab012e48f090ed553609247a805ad070d6b343a9";
+  revision = "3";
+  editedCabalFile = "1n67w1b64q59nn4845z3kr8rm0x0p7bi3cyp6n1dpnfs8k4l8x2i";
+  libraryHaskellDepends = [
+    base
+    binary
+    bytestring
+    containers
+    deepseq
+    hashable
+    integer-logarithms
+    primitive
+    template-haskell
+    text
+  ];
+  testHaskellDepends = [
+    base
+    binary
+    bytestring
+    QuickCheck
+    smallcheck
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    tasty-smallcheck
+    text
+  ];
+  benchmarkHaskellDepends = [ base criterion ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/basvandijk/scientific";
+  description = "Numbers represented using scientific notation";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/scotty.nix b/pkgs/scotty.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e71c7f9327c266b13814c07384d280d6f3dbe6be
--- /dev/null
+++ b/pkgs/scotty.nix
@@ -0,0 +1,96 @@
+{ mkDerivation
+, aeson
+, async
+, base
+, base-compat-batteries
+, blaze-builder
+, bytestring
+, case-insensitive
+, data-default-class
+, directory
+, exceptions
+, fail
+, hspec
+, hspec-discover
+, hspec-wai
+, http-types
+, lib
+, lifted-base
+, lucid
+, monad-control
+, mtl
+, nats
+, network
+, regex-compat
+, text
+, transformers
+, transformers-base
+, transformers-compat
+, wai
+, wai-extra
+, warp
+, weigh
+}:
+mkDerivation {
+  pname = "scotty";
+  version = "0.12";
+  sha256 = "e1d77ee05eaa4b1871566b33683da9ab15dda8f7c42875701d62caf7db7defd2";
+  revision = "9";
+  editedCabalFile = "0d61dgx6wq682mz8ryq2a10v1z4yi0dik8b5psi0ragl2qip191j";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base-compat-batteries
+    blaze-builder
+    bytestring
+    case-insensitive
+    data-default-class
+    exceptions
+    fail
+    http-types
+    monad-control
+    mtl
+    nats
+    network
+    regex-compat
+    text
+    transformers
+    transformers-base
+    transformers-compat
+    wai
+    wai-extra
+    warp
+  ];
+  testHaskellDepends = [
+    async
+    base
+    bytestring
+    data-default-class
+    directory
+    hspec
+    hspec-wai
+    http-types
+    lifted-base
+    network
+    text
+    wai
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    data-default-class
+    lucid
+    mtl
+    text
+    transformers
+    weigh
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/scotty-web/scotty";
+  description = "Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/sdl2-gfx.nix b/pkgs/sdl2-gfx.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a090bd4424e70f41b691d7b27e963c284c27331c
--- /dev/null
+++ b/pkgs/sdl2-gfx.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, lib
+, lifted-base
+, monad-control
+, SDL2
+, sdl2
+, SDL2_gfx
+, template-haskell
+, vector
+}:
+mkDerivation {
+  pname = "sdl2-gfx";
+  version = "0.3.0.0";
+  sha256 = "bcab7e1f8f7a60dec2db07c6680eb3f16e88511829a6ef9cd82ddce91c293565";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    lifted-base
+    monad-control
+    sdl2
+    template-haskell
+    vector
+  ];
+  librarySystemDepends = [ SDL2_gfx ];
+  libraryPkgconfigDepends = [ SDL2 SDL2_gfx ];
+  executableHaskellDepends = [ base sdl2 vector ];
+  executableSystemDepends = [ SDL2_gfx ];
+  executablePkgconfigDepends = [ SDL2 SDL2_gfx ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Haskell bindings to SDL2_gfx";
+  license = lib.licenses.mit;
+  mainProgram = "sdl2-gfx-example";
+}
diff --git a/pkgs/sdl2-image.nix b/pkgs/sdl2-image.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d976ed46e5c188247e72d034ec4a8cbb521d6504
--- /dev/null
+++ b/pkgs/sdl2-image.nix
@@ -0,0 +1,36 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, SDL2
+, sdl2
+, SDL2_image
+, template-haskell
+, text
+}:
+mkDerivation {
+  pname = "sdl2-image";
+  version = "2.1.0.0";
+  sha256 = "d22403d966e0f18ecc33fadda8e611e2e90bc718e8d6647177f5118264a5920d";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    sdl2
+    template-haskell
+    text
+  ];
+  librarySystemDepends = [ SDL2_image ];
+  libraryPkgconfigDepends = [ SDL2 SDL2_image ];
+  executableHaskellDepends = [ base sdl2 text ];
+  executableSystemDepends = [ SDL2_image ];
+  executablePkgconfigDepends = [ SDL2 SDL2_image ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Haskell bindings to SDL2_image";
+  license = lib.licenses.mit;
+  mainProgram = "sdl2-image-example";
+}
diff --git a/pkgs/sdl2-mixer.nix b/pkgs/sdl2-mixer.nix
new file mode 100644
index 0000000000000000000000000000000000000000..21f6272951982509b3eb30591216609198f2ca50
--- /dev/null
+++ b/pkgs/sdl2-mixer.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, bytestring
+, data-default-class
+, lib
+, lifted-base
+, monad-control
+, sdl2
+, SDL2_mixer
+, template-haskell
+, vector
+}:
+mkDerivation {
+  pname = "sdl2-mixer";
+  version = "1.2.0.0";
+  sha256 = "58141826af5d491794a74484fda770859e2271b0ede44cc75f2e562b70b7cf99";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    data-default-class
+    lifted-base
+    monad-control
+    sdl2
+    template-haskell
+    vector
+  ];
+  librarySystemDepends = [ SDL2_mixer ];
+  libraryPkgconfigDepends = [ SDL2_mixer ];
+  executableHaskellDepends = [ base data-default-class sdl2 vector ];
+  executableSystemDepends = [ SDL2_mixer ];
+  executablePkgconfigDepends = [ SDL2_mixer ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Haskell bindings to SDL2_mixer";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/sdl2-ttf.nix b/pkgs/sdl2-ttf.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b1e94b9789da32be9ff12f153439b5c3eba6bc82
--- /dev/null
+++ b/pkgs/sdl2-ttf.nix
@@ -0,0 +1,35 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, SDL2
+, sdl2
+, SDL2_ttf
+, template-haskell
+, text
+, th-abstraction
+, transformers
+}:
+mkDerivation {
+  pname = "sdl2-ttf";
+  version = "2.1.3";
+  sha256 = "b60219fe8144c5d61b140b4607432b24fb93e947c504a8e2f89517175ba6a56a";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    sdl2
+    template-haskell
+    text
+    th-abstraction
+    transformers
+  ];
+  libraryPkgconfigDepends = [ SDL2 SDL2_ttf ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Bindings to SDL2_ttf";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/sdl2.nix b/pkgs/sdl2.nix
new file mode 100644
index 0000000000000000000000000000000000000000..74d2f5938d91cd555e5dee5d021c5cd5b201655e
--- /dev/null
+++ b/pkgs/sdl2.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, base
+, bytestring
+, deepseq
+, exceptions
+, lib
+, linear
+, SDL2
+, StateVar
+, text
+, transformers
+, vector
+, weigh
+}:
+mkDerivation {
+  pname = "sdl2";
+  version = "2.5.3.3";
+  sha256 = "aa860444661daffc91ccc28a044bd15200f593443c601efe4f1872680f6f1ba8";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    exceptions
+    linear
+    StateVar
+    text
+    transformers
+    vector
+  ];
+  librarySystemDepends = [ SDL2 ];
+  libraryPkgconfigDepends = [ SDL2 ];
+  testHaskellDepends = [ base deepseq linear vector weigh ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Both high- and low-level bindings to the SDL library (version 2.0.6+).";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/semialign.nix b/pkgs/semialign.nix
new file mode 100644
index 0000000000000000000000000000000000000000..350a4f53b3c0e68f6eb1dffea96fa9d18a32ab5f
--- /dev/null
+++ b/pkgs/semialign.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, base
+, containers
+, hashable
+, indexed-traversable
+, indexed-traversable-instances
+, lib
+, semigroupoids
+, tagged
+, these
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "semialign";
+  version = "1.2.0.1";
+  sha256 = "d900697041ae4b0cca3243273a2b3e80bcf74d937405d6a5ff34dc33ee952132";
+  revision = "3";
+  editedCabalFile = "0dbcdnksik508i12arh3s6bis6779lx5f1df0jkc0bp797inhd7f";
+  libraryHaskellDepends = [
+    base
+    containers
+    hashable
+    indexed-traversable
+    indexed-traversable-instances
+    semigroupoids
+    tagged
+    these
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/these";
+  description = "Align and Zip type-classes from the common Semialign ancestor";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/serialise.nix b/pkgs/serialise.nix
new file mode 100644
index 0000000000000000000000000000000000000000..33844d32798a459fa1c0b90b424fb2831bfb810c
--- /dev/null
+++ b/pkgs/serialise.nix
@@ -0,0 +1,110 @@
+{ mkDerivation
+, aeson
+, array
+, base
+, binary
+, bytestring
+, cborg
+, cereal
+, cereal-vector
+, containers
+, criterion
+, deepseq
+, directory
+, fail
+, filepath
+, ghc-prim
+, half
+, hashable
+, lib
+, pretty
+, primitive
+, QuickCheck
+, quickcheck-instances
+, semigroups
+, store
+, strict
+, tar
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, these
+, time
+, unordered-containers
+, vector
+, zlib
+}:
+mkDerivation {
+  pname = "serialise";
+  version = "0.2.6.0";
+  sha256 = "93ff1888e1972999f14663072b38efcfd0c1481b4ec8e30ddc9c5ce97681a516";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    cborg
+    containers
+    ghc-prim
+    half
+    hashable
+    primitive
+    strict
+    text
+    these
+    time
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    cborg
+    containers
+    directory
+    filepath
+    primitive
+    QuickCheck
+    quickcheck-instances
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    time
+    unordered-containers
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    aeson
+    array
+    base
+    binary
+    bytestring
+    cborg
+    cereal
+    cereal-vector
+    containers
+    criterion
+    deepseq
+    directory
+    fail
+    filepath
+    ghc-prim
+    half
+    pretty
+    semigroups
+    store
+    tar
+    text
+    time
+    vector
+    zlib
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/well-typed/cborg";
+  description = "A binary serialisation library for Haskell values";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-client-core.nix b/pkgs/servant-client-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a5ca50c3fd800ab813deac9a202827021c5dc11c
--- /dev/null
+++ b/pkgs/servant-client-core.nix
@@ -0,0 +1,67 @@
+{ mkDerivation
+, aeson
+, base
+, base-compat
+, base64-bytestring
+, bytestring
+, constraints
+, containers
+, deepseq
+, exceptions
+, fetchgit
+, free
+, hspec
+, hspec-discover
+, http-media
+, http-types
+, lib
+, network-uri
+, QuickCheck
+, safe
+, servant
+, sop-core
+, template-haskell
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "servant-client-core";
+  version = "0.19";
+  src = fetchgit {
+    url = "https://github.com/TeofilC/servant";
+    sha256 = "0f6vkm44p93ln63plk4vfavadcgxjiqr8xncxrjqzp2mcql6qdmh";
+    rev = "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/servant-client-core/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base-compat
+    base64-bytestring
+    bytestring
+    constraints
+    containers
+    deepseq
+    exceptions
+    free
+    http-media
+    http-types
+    network-uri
+    safe
+    servant
+    sop-core
+    template-haskell
+    text
+    transformers
+  ];
+  testHaskellDepends = [ base base-compat deepseq hspec QuickCheck ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://docs.servant.dev/";
+  description = "Core functionality and class for client function generation for servant APIs";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-client.nix b/pkgs/servant-client.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7535d1ab52418aa41489a29eee9300dd2d1f7acb
--- /dev/null
+++ b/pkgs/servant-client.nix
@@ -0,0 +1,109 @@
+{ mkDerivation
+, aeson
+, base
+, base-compat
+, bytestring
+, containers
+, deepseq
+, entropy
+, exceptions
+, fetchgit
+, hspec
+, hspec-discover
+, http-api-data
+, http-client
+, http-media
+, http-types
+, HUnit
+, kan-extensions
+, lib
+, markdown-unlit
+, monad-control
+, mtl
+, network
+, QuickCheck
+, semigroupoids
+, servant
+, servant-client-core
+, servant-server
+, sop-core
+, stm
+, tdigest
+, text
+, time
+, transformers
+, transformers-base
+, transformers-compat
+, wai
+, warp
+}:
+mkDerivation {
+  pname = "servant-client";
+  version = "0.19";
+  src = fetchgit {
+    url = "https://github.com/TeofilC/servant";
+    sha256 = "0f6vkm44p93ln63plk4vfavadcgxjiqr8xncxrjqzp2mcql6qdmh";
+    rev = "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/servant-client/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    base-compat
+    bytestring
+    containers
+    deepseq
+    exceptions
+    http-client
+    http-media
+    http-types
+    kan-extensions
+    monad-control
+    mtl
+    semigroupoids
+    servant
+    servant-client-core
+    stm
+    text
+    time
+    transformers
+    transformers-base
+    transformers-compat
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    base-compat
+    bytestring
+    entropy
+    hspec
+    http-api-data
+    http-client
+    http-types
+    HUnit
+    kan-extensions
+    markdown-unlit
+    mtl
+    network
+    QuickCheck
+    servant
+    servant-client-core
+    servant-server
+    sop-core
+    stm
+    tdigest
+    text
+    transformers
+    transformers-compat
+    wai
+    warp
+  ];
+  testToolDepends = [ hspec-discover markdown-unlit ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://docs.servant.dev/";
+  description = "Automatic derivation of querying functions for servant";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-foreign.nix b/pkgs/servant-foreign.nix
new file mode 100644
index 0000000000000000000000000000000000000000..254868abc940c339f72dead0e98ef0e648ad590b
--- /dev/null
+++ b/pkgs/servant-foreign.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, base-compat
+, fetchgit
+, hspec
+, hspec-discover
+, http-types
+, lens
+, lib
+, servant
+, text
+}:
+mkDerivation {
+  pname = "servant-foreign";
+  version = "0.15.4";
+  src = fetchgit {
+    url = "https://github.com/TeofilC/servant";
+    sha256 = "0f6vkm44p93ln63plk4vfavadcgxjiqr8xncxrjqzp2mcql6qdmh";
+    rev = "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/servant-foreign/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    base-compat
+    http-types
+    lens
+    servant
+    text
+  ];
+  testHaskellDepends = [ base hspec servant ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://docs.servant.dev/";
+  description = "Helpers for generating clients for servant APIs in any programming language";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-lucid.nix b/pkgs/servant-lucid.nix
new file mode 100644
index 0000000000000000000000000000000000000000..702260d9fa35cb29c1ff6b4ab6abbc8ddd43177d
--- /dev/null
+++ b/pkgs/servant-lucid.nix
@@ -0,0 +1,25 @@
+{ mkDerivation
+, base
+, http-media
+, lib
+, lucid
+, servant
+, servant-server
+, text
+, wai
+, warp
+}:
+mkDerivation {
+  pname = "servant-lucid";
+  version = "0.9.0.5";
+  sha256 = "df55d4cb266bb95f31f658bef0e13c17a7b16e13068cc9931160620885911d7a";
+  libraryHaskellDepends = [ base http-media lucid servant text ];
+  testHaskellDepends = [ base lucid servant-server wai warp ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://haskell-servant.readthedocs.org/";
+  description = "Servant support for lucid";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-multipart-api.nix b/pkgs/servant-multipart-api.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a77552165189abcb49a210601aa3b9e59c8c6f61
--- /dev/null
+++ b/pkgs/servant-multipart-api.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, servant
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "servant-multipart-api";
+  version = "0.12.1";
+  sha256 = "92d5c3b1ccbcde7abcff6eb639d7dbb836222452a965e73ebd40bf775e522ebe";
+  revision = "3";
+  editedCabalFile = "1zhiszjg8n37g25sh2cnw509n0v4b89fd93j466f2gzwkxfaaw0m";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    servant
+    text
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-servant/servant-multipart#readme";
+  description = "multipart/form-data (e.g file upload) support for servant";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant-multipart.nix b/pkgs/servant-multipart.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1edc16d6a573020d06ba67917981917da5e009d3
--- /dev/null
+++ b/pkgs/servant-multipart.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, base
+, bytestring
+, directory
+, http-types
+, lens
+, lib
+, resourcet
+, servant
+, servant-docs
+, servant-foreign
+, servant-multipart-api
+, servant-server
+, string-conversions
+, tasty
+, tasty-wai
+, text
+, wai
+, wai-extra
+}:
+mkDerivation {
+  pname = "servant-multipart";
+  version = "0.12.1";
+  sha256 = "c5236fa4922a869947988d52ab9f5b0a19abf57bb0467e2eb34560f8c79aa5dc";
+  revision = "3";
+  editedCabalFile = "1wkbwd6gypmv7aziaag3gzwgvvqx4bw8i4qp2vpmc7ip2ydm10ml";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    directory
+    lens
+    resourcet
+    servant
+    servant-docs
+    servant-foreign
+    servant-multipart-api
+    servant-server
+    string-conversions
+    text
+    wai
+    wai-extra
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    http-types
+    servant-server
+    string-conversions
+    tasty
+    tasty-wai
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-servant/servant-multipart#readme";
+  description = "multipart/form-data (e.g file upload) support for servant";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/servant.nix b/pkgs/servant.nix
new file mode 100644
index 0000000000000000000000000000000000000000..76f7bdc59f36f7dbb48b397f2a8ddea1dce25b64
--- /dev/null
+++ b/pkgs/servant.nix
@@ -0,0 +1,88 @@
+{ mkDerivation
+, aeson
+, attoparsec
+, base
+, base-compat
+, bifunctors
+, bytestring
+, case-insensitive
+, constraints
+, deepseq
+, fetchgit
+, hspec
+, hspec-discover
+, http-api-data
+, http-media
+, http-types
+, lib
+, mmorph
+, mtl
+, network-uri
+, QuickCheck
+, quickcheck-instances
+, singleton-bool
+, sop-core
+, string-conversions
+, tagged
+, text
+, transformers
+, vault
+}:
+mkDerivation {
+  pname = "servant";
+  version = "0.19";
+  src = fetchgit {
+    url = "https://github.com/TeofilC/servant";
+    sha256 = "0f6vkm44p93ln63plk4vfavadcgxjiqr8xncxrjqzp2mcql6qdmh";
+    rev = "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/servant/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    attoparsec
+    base
+    base-compat
+    bifunctors
+    bytestring
+    case-insensitive
+    constraints
+    deepseq
+    http-api-data
+    http-media
+    http-types
+    mmorph
+    mtl
+    network-uri
+    QuickCheck
+    singleton-bool
+    sop-core
+    string-conversions
+    tagged
+    text
+    transformers
+    vault
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    base-compat
+    bytestring
+    hspec
+    http-media
+    mtl
+    QuickCheck
+    quickcheck-instances
+    string-conversions
+    text
+    transformers
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://docs.servant.dev/";
+  description = "A family of combinators for defining webservices APIs";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/shake.nix b/pkgs/shake.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3fbe12c6af86c4f4bc48ecf21699ae65a7ddd70a
--- /dev/null
+++ b/pkgs/shake.nix
@@ -0,0 +1,111 @@
+{ mkDerivation
+, base
+, binary
+, bytestring
+, deepseq
+, directory
+, extra
+, filepath
+, filepattern
+, hashable
+, heaps
+, js-dgtable
+, js-flot
+, js-jquery
+, lib
+, primitive
+, process
+, QuickCheck
+, random
+, time
+, transformers
+, unix
+, unordered-containers
+, utf8-string
+}:
+mkDerivation {
+  pname = "shake";
+  version = "0.19.6";
+  sha256 = "7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    binary
+    bytestring
+    deepseq
+    directory
+    extra
+    filepath
+    filepattern
+    hashable
+    heaps
+    js-dgtable
+    js-flot
+    js-jquery
+    primitive
+    process
+    random
+    time
+    transformers
+    unix
+    unordered-containers
+    utf8-string
+  ];
+  executableHaskellDepends = [
+    base
+    binary
+    bytestring
+    deepseq
+    directory
+    extra
+    filepath
+    filepattern
+    hashable
+    heaps
+    js-dgtable
+    js-flot
+    js-jquery
+    primitive
+    process
+    random
+    time
+    transformers
+    unix
+    unordered-containers
+    utf8-string
+  ];
+  testHaskellDepends = [
+    base
+    binary
+    bytestring
+    deepseq
+    directory
+    extra
+    filepath
+    filepattern
+    hashable
+    heaps
+    js-dgtable
+    js-flot
+    js-jquery
+    primitive
+    process
+    QuickCheck
+    random
+    time
+    transformers
+    unix
+    unordered-containers
+    utf8-string
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://shakebuild.com";
+  description = "Build system library, like Make, but more accurate dependencies";
+  license = lib.licenses.bsd3;
+  mainProgram = "shake";
+}
diff --git a/pkgs/shelly.nix b/pkgs/shelly.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f195e6ee89947e6af7c0838ae71e2b14ee1bd7b5
--- /dev/null
+++ b/pkgs/shelly.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, async
+, base
+, bytestring
+, containers
+, directory
+, enclosed-exceptions
+, exceptions
+, filepath
+, hspec
+, hspec-contrib
+, HUnit
+, lib
+, lifted-async
+, lifted-base
+, monad-control
+, mtl
+, process
+, text
+, time
+, transformers
+, transformers-base
+, unix-compat
+}:
+mkDerivation {
+  pname = "shelly";
+  version = "1.10.0";
+  sha256 = "c54000aff5ed59dc50f75754390c689aedb9792d3b327406caf146983380ff41";
+  revision = "1";
+  editedCabalFile = "07c1rjwvg2ldam6yaksvrr9f703b7d1rcw0482ns5yi2f7y1kczp";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    async
+    base
+    bytestring
+    containers
+    directory
+    enclosed-exceptions
+    exceptions
+    filepath
+    lifted-async
+    lifted-base
+    monad-control
+    mtl
+    process
+    text
+    time
+    transformers
+    transformers-base
+    unix-compat
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    directory
+    filepath
+    hspec
+    hspec-contrib
+    HUnit
+    lifted-async
+    mtl
+    text
+    transformers
+    unix-compat
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/yesodweb/Shelly.hs";
+  description = "shell-like (systems) programming in Haskell";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/singleton-bool.nix b/pkgs/singleton-bool.nix
new file mode 100644
index 0000000000000000000000000000000000000000..095b8cc3d8044184a72d931d0ca473d70d8e7f89
--- /dev/null
+++ b/pkgs/singleton-bool.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, boring, dec, deepseq, lib, some }:
+mkDerivation {
+  pname = "singleton-bool";
+  version = "0.1.6";
+  sha256 = "5ca3f4802ba0dd89d1817e78f7fbf6900fb5f176f10fc00bdfe395fe572383dd";
+  revision = "2";
+  editedCabalFile = "1l4nx664awgwzk3ih5idsgnj220jqdr1c55241xjv7fz7lwyhh5r";
+  libraryHaskellDepends = [ base boring dec deepseq some ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/singleton-bool#readme";
+  description = "Type level booleans";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/singletons.nix b/pkgs/singletons.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0e47c5e875de04542940380c8a4d3d2be933204e
--- /dev/null
+++ b/pkgs/singletons.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "singletons";
+  version = "3.0.2";
+  sha256 = "f568ee129ef6438a4325f145f17fa4a3074b3564c72fd35ba1f68dcee14d5e82";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.github.com/goldfirere/singletons";
+  description = "Basic singleton types and definitions";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/some.nix b/pkgs/some.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7e0599d8f338230cb868a7db6ddaddaccacb039b
--- /dev/null
+++ b/pkgs/some.nix
@@ -0,0 +1,17 @@
+{ mkDerivation, base, deepseq, lib }:
+mkDerivation {
+  pname = "some";
+  version = "1.0.4";
+  sha256 = "446f9586d1cc9b7507f08ef7b178a7cff971bcf258d9658deacb7b65f18e3874";
+  revision = "1";
+  editedCabalFile = "0hwq21d0y2iwcrkdhqkq76fna90dsdzrkk6ryh9hbg71lf768ih9";
+  libraryHaskellDepends = [ base deepseq ];
+  testHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/some";
+  description = "Existential type: Some";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/sop-core.nix b/pkgs/sop-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5629df14322625fce6e4e265b4a0376f78f4dce8
--- /dev/null
+++ b/pkgs/sop-core.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, deepseq, lib }:
+mkDerivation {
+  pname = "sop-core";
+  version = "0.5.0.1";
+  sha256 = "dac367f1608c9bd6c5dd1697e2a30e1b760617023b96e1df7d44c6c017999db0";
+  revision = "1";
+  editedCabalFile = "1d4sagrlhmvai3f4hvb9rn8aqsjbvi00z0mzv1gds9nblshk83xd";
+  libraryHaskellDepends = [ base deepseq ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "True Sums of Products";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/split.nix b/pkgs/split.nix
new file mode 100644
index 0000000000000000000000000000000000000000..02218df23bed06cb77300e1287e363e729547b53
--- /dev/null
+++ b/pkgs/split.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, lib, QuickCheck }:
+mkDerivation {
+  pname = "split";
+  version = "0.2.3.3";
+  sha256 = "1dcd674f7c5f276f33300f5fd59e49d1ac6fc92ae949fd06a0f6d3e9d9ac1413";
+  revision = "2";
+  editedCabalFile = "1c8bcssxq5rkxkixgms6w6x6lzf4n7cxk6cx6av1dp3lixdy9j34";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base QuickCheck ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Combinator library for splitting lists";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/streaming-commons.nix b/pkgs/streaming-commons.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0bd01eee8579912f701b2ff1736ef320614e9321
--- /dev/null
+++ b/pkgs/streaming-commons.nix
@@ -0,0 +1,61 @@
+{ mkDerivation
+, array
+, async
+, base
+, bytestring
+, deepseq
+, directory
+, gauge
+, hspec
+, lib
+, network
+, process
+, QuickCheck
+, random
+, stm
+, text
+, transformers
+, unix
+, zlib
+}:
+mkDerivation {
+  pname = "streaming-commons";
+  version = "0.2.2.4";
+  sha256 = "56a1408cce710cddfb04d73757efba439c98fb8043515083a45136902214ccf2";
+  libraryHaskellDepends = [
+    array
+    async
+    base
+    bytestring
+    directory
+    network
+    process
+    random
+    stm
+    text
+    transformers
+    unix
+    zlib
+  ];
+  testHaskellDepends = [
+    array
+    async
+    base
+    bytestring
+    deepseq
+    hspec
+    network
+    QuickCheck
+    text
+    unix
+    zlib
+  ];
+  benchmarkHaskellDepends = [ base bytestring deepseq gauge text ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/fpco/streaming-commons";
+  description = "Common lower-level functions needed by various streaming data libraries";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/string-interpolate.nix b/pkgs/string-interpolate.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9a500ab499b0aaf185d8af61bab46766a8929d65
--- /dev/null
+++ b/pkgs/string-interpolate.nix
@@ -0,0 +1,73 @@
+{ mkDerivation
+, base
+, bytestring
+, criterion
+, deepseq
+, formatting
+, haskell-src-exts
+, haskell-src-meta
+, hspec
+, hspec-core
+, interpolate
+, lib
+, neat-interpolation
+, QuickCheck
+, quickcheck-instances
+, quickcheck-text
+, quickcheck-unicode
+, split
+, template-haskell
+, text
+, text-conversions
+, unordered-containers
+, utf8-string
+}:
+mkDerivation {
+  pname = "string-interpolate";
+  version = "0.3.1.2";
+  sha256 = "17c214e2a644c433d79e3d6b9e5dab9077d79be9de4b9e208308e3196b82b73e";
+  revision = "1";
+  editedCabalFile = "1nrpng7r59a25z4qns8vy26rvp1wgn5f4bs8ism40q66ags8f2ad";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    haskell-src-exts
+    haskell-src-meta
+    split
+    template-haskell
+    text
+    text-conversions
+    utf8-string
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    hspec
+    hspec-core
+    QuickCheck
+    quickcheck-instances
+    quickcheck-text
+    quickcheck-unicode
+    template-haskell
+    text
+    unordered-containers
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    criterion
+    deepseq
+    formatting
+    interpolate
+    neat-interpolation
+    QuickCheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://gitlab.com/williamyaoh/string-interpolate/blob/master/README.md";
+  description = "Haskell string/text/bytestring interpolation that just works";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/string-qq.nix b/pkgs/string-qq.nix
new file mode 100644
index 0000000000000000000000000000000000000000..76beb9d32bfd82d90563d2f3f868dd7056e3d97b
--- /dev/null
+++ b/pkgs/string-qq.nix
@@ -0,0 +1,14 @@
+{ mkDerivation, base, HUnit, lib, template-haskell, text }:
+mkDerivation {
+  pname = "string-qq";
+  version = "0.0.4";
+  sha256 = "c85b9c1e27596ea8e765e4b630b7be53c331c51b680ad46cc2d248d3099fdd71";
+  libraryHaskellDepends = [ base template-haskell ];
+  testHaskellDepends = [ base HUnit text ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "QuasiQuoter for non-interpolated strings, texts and bytestrings";
+  license = lib.licenses.publicDomain;
+}
diff --git a/pkgs/stylish-haskell.nix b/pkgs/stylish-haskell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0aa2ac9e099b892fe431b5470c5b4370a9b44597
--- /dev/null
+++ b/pkgs/stylish-haskell.nix
@@ -0,0 +1,104 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, Cabal
+, containers
+, directory
+, file-embed
+, filepath
+, ghc
+, ghc-boot
+, ghc-boot-th
+, ghc-lib-parser-ex
+, HsYAML
+, HsYAML-aeson
+, HUnit
+, lib
+, mtl
+, optparse-applicative
+, random
+, strict
+, syb
+, test-framework
+, test-framework-hunit
+, text
+}:
+mkDerivation {
+  pname = "stylish-haskell";
+  version = "0.14.2.0";
+  sha256 = "f181edfe62821639d881de6780f6a7130b731519461af9c73687f8fba3764ecc";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    Cabal
+    containers
+    directory
+    file-embed
+    filepath
+    ghc
+    ghc-boot
+    ghc-boot-th
+    ghc-lib-parser-ex
+    HsYAML
+    HsYAML-aeson
+    mtl
+    syb
+    text
+  ];
+  executableHaskellDepends = [
+    aeson
+    base
+    bytestring
+    Cabal
+    containers
+    directory
+    file-embed
+    filepath
+    ghc
+    ghc-boot
+    ghc-boot-th
+    ghc-lib-parser-ex
+    HsYAML
+    HsYAML-aeson
+    mtl
+    optparse-applicative
+    strict
+    syb
+    text
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    Cabal
+    containers
+    directory
+    file-embed
+    filepath
+    ghc
+    ghc-boot
+    ghc-boot-th
+    ghc-lib-parser-ex
+    HsYAML
+    HsYAML-aeson
+    HUnit
+    mtl
+    random
+    syb
+    test-framework
+    test-framework-hunit
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/stylish-haskell";
+  description = "Haskell code prettifier";
+  license = lib.licenses.bsd3;
+  mainProgram = "stylish-haskell";
+}
diff --git a/pkgs/syb.nix b/pkgs/syb.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6baf6b4c813fc3a02aab33894b0e7ee2205a314b
--- /dev/null
+++ b/pkgs/syb.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, containers, lib, mtl, tasty, tasty-hunit }:
+mkDerivation {
+  pname = "syb";
+  version = "0.7.2.1";
+  sha256 = "1807c66f77e66786739387f0ae9f16d150d1cfa9d626afcb729f0e9b442a8d96";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base containers mtl tasty tasty-hunit ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB";
+  description = "Scrap Your Boilerplate";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/sydtest-discover.nix b/pkgs/sydtest-discover.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f16a3bb6313f2408f6e9e8e6c84745c9e5832044
--- /dev/null
+++ b/pkgs/sydtest-discover.nix
@@ -0,0 +1,31 @@
+{ mkDerivation
+, base
+, filepath
+, lib
+, optparse-applicative
+, path
+, path-io
+}:
+mkDerivation {
+  pname = "sydtest-discover";
+  version = "0.0.0.2";
+  sha256 = "fbc0b1a7bae9a40e9aec7bda706c11f6bb6cbefc840ad2ee350380cb925459d9";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    filepath
+    optparse-applicative
+    path
+    path-io
+  ];
+  executableHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/sydtest#readme";
+  description = "Automatic test suite discovery for sydtest";
+  license = "unknown";
+  mainProgram = "sydtest-discover";
+}
diff --git a/pkgs/sydtest.nix b/pkgs/sydtest.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3df70cbba007f6ad7f469c04bd0adbcc44ba7ffd
--- /dev/null
+++ b/pkgs/sydtest.nix
@@ -0,0 +1,82 @@
+{ mkDerivation
+, async
+, autodocodec
+, autodocodec-yaml
+, base
+, bytestring
+, containers
+, Diff
+, dlist
+, envparse
+, filepath
+, lib
+, MonadRandom
+, mtl
+, optparse-applicative
+, path
+, path-io
+, pretty-show
+, QuickCheck
+, quickcheck-io
+, random
+, random-shuffle
+, safe
+, safe-coloured-text
+, safe-coloured-text-terminfo
+, split
+, stm
+, sydtest-discover
+, text
+}:
+mkDerivation {
+  pname = "sydtest";
+  version = "0.12.0.1";
+  sha256 = "1c7186d0e41145aefcb6eae9727938d757e07ebd8f8287feb19a447567d8565f";
+  libraryHaskellDepends = [
+    async
+    autodocodec
+    autodocodec-yaml
+    base
+    bytestring
+    containers
+    Diff
+    dlist
+    envparse
+    filepath
+    MonadRandom
+    mtl
+    optparse-applicative
+    path
+    path-io
+    pretty-show
+    QuickCheck
+    quickcheck-io
+    random
+    random-shuffle
+    safe
+    safe-coloured-text
+    safe-coloured-text-terminfo
+    split
+    stm
+    text
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    path
+    path-io
+    QuickCheck
+    random
+    safe-coloured-text
+    stm
+    text
+  ];
+  testToolDepends = [ sydtest-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/sydtest#readme";
+  description = "A modern testing framework for Haskell with good defaults and advanced testing features";
+  license = "unknown";
+}
diff --git a/pkgs/tasty-discover.nix b/pkgs/tasty-discover.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e03846d27878b6bcee471395683846646606d27b
--- /dev/null
+++ b/pkgs/tasty-discover.nix
@@ -0,0 +1,69 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, directory
+, filepath
+, Glob
+, hedgehog
+, hspec
+, hspec-core
+, lib
+, tasty
+, tasty-golden
+, tasty-hedgehog
+, tasty-hspec
+, tasty-hunit
+, tasty-quickcheck
+, tasty-smallcheck
+}:
+mkDerivation {
+  pname = "tasty-discover";
+  version = "5.0.0";
+  sha256 = "eeb27da5f928d5043385b114e817cc80b0605de45fd490ed6b2973094d1d7028";
+  revision = "1";
+  editedCabalFile = "1a44ak08ja1j78lrqm46szihy9nzx2vrvvdb8bwf6961fymd5697";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    containers
+    directory
+    filepath
+    Glob
+    tasty
+  ];
+  executableHaskellDepends = [
+    base
+    containers
+    directory
+    filepath
+    Glob
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    directory
+    filepath
+    Glob
+    hedgehog
+    hspec
+    hspec-core
+    tasty
+    tasty-golden
+    tasty-hedgehog
+    tasty-hspec
+    tasty-hunit
+    tasty-quickcheck
+    tasty-smallcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-works/tasty-discover";
+  description = "Test discovery for the tasty framework";
+  license = lib.licenses.mit;
+  mainProgram = "tasty-discover";
+}
diff --git a/pkgs/tasty-hedgehog.nix b/pkgs/tasty-hedgehog.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d695a0ee65ed4fe38720a14a829d8fe9ea711605
--- /dev/null
+++ b/pkgs/tasty-hedgehog.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, fetchgit
+, hedgehog
+, lib
+, tagged
+, tasty
+, tasty-expected-failure
+}:
+mkDerivation {
+  pname = "tasty-hedgehog";
+  version = "1.2.0.0";
+  src = fetchgit {
+    url = "https://github.com/locallycompact/tasty-hedgehog";
+    sha256 = "1ql4wsah4zz2dizakgh3lfgbbq9c3c6nmypcp6fl3i96pbdj2bh5";
+    rev = "4a3477578ed21aa82e5b74f387d08e5d750635d6";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [ base hedgehog tagged tasty ];
+  testHaskellDepends = [
+    base
+    hedgehog
+    tasty
+    tasty-expected-failure
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/qfpl/tasty-hedgehog";
+  description = "Integration for tasty and hedgehog";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/tasty-hunit.nix b/pkgs/tasty-hunit.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6e06d75b74c6054cd0c5bceba240688bb033bd11
--- /dev/null
+++ b/pkgs/tasty-hunit.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, call-stack, fetchgit, lib, tasty }:
+mkDerivation {
+  pname = "tasty-hunit";
+  version = "0.10.0.2";
+  src = fetchgit {
+    url = "https://github.com/UnkindPartition/tasty";
+    sha256 = "0mbzw9plh5gffpdzbnw6749b45dpal29wdak2y04qlmjs42wxcv1";
+    rev = "207d3453a64b414593512c1e968171d64a8dbe61";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/hunit/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [ base call-stack tasty ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/UnkindPartition/tasty";
+  description = "HUnit support for the Tasty test framework";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/tasty-wai.nix b/pkgs/tasty-wai.nix
new file mode 100644
index 0000000000000000000000000000000000000000..871d6f2cc518bb432bee9843f3821b1bf5b38614
--- /dev/null
+++ b/pkgs/tasty-wai.nix
@@ -0,0 +1,31 @@
+{ mkDerivation
+, base
+, bytestring
+, http-types
+, HUnit
+, lib
+, tasty
+, wai
+, wai-extra
+}:
+mkDerivation {
+  pname = "tasty-wai";
+  version = "0.1.2.0";
+  sha256 = "6f6f224d6dee893ce550f512832389a9ae0e490917a99b5362c9a4f73f16dca3";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    http-types
+    HUnit
+    tasty
+    wai
+    wai-extra
+  ];
+  testHaskellDepends = [ base http-types tasty wai ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Test 'wai' endpoints via Test.Tasty";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/tasty.nix b/pkgs/tasty.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fc9bb65f77a9051fd479a4cf8f8888b17f93d33e
--- /dev/null
+++ b/pkgs/tasty.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, ansi-terminal
+, base
+, containers
+, fetchgit
+, lib
+, optparse-applicative
+, stm
+, tagged
+, transformers
+, unix
+}:
+mkDerivation {
+  pname = "tasty";
+  version = "1.4.2.3";
+  src = fetchgit {
+    url = "https://github.com/UnkindPartition/tasty";
+    sha256 = "0mbzw9plh5gffpdzbnw6749b45dpal29wdak2y04qlmjs42wxcv1";
+    rev = "207d3453a64b414593512c1e968171d64a8dbe61";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/core/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    ansi-terminal
+    base
+    containers
+    optparse-applicative
+    stm
+    tagged
+    transformers
+    unix
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/UnkindPartition/tasty";
+  description = "Modern and extensible testing framework";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/text-zipper.nix b/pkgs/text-zipper.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e93a95f69720e231faa2b75a95a327ea1395b8f1
--- /dev/null
+++ b/pkgs/text-zipper.nix
@@ -0,0 +1,24 @@
+{ mkDerivation
+, base
+, deepseq
+, hspec
+, lib
+, QuickCheck
+, text
+, vector
+}:
+mkDerivation {
+  pname = "text-zipper";
+  version = "0.12";
+  sha256 = "86aba7244c9ed0d8e24e9d1fa64ee317a062e7bd777018053517daefb0696702";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [ base deepseq text vector ];
+  testHaskellDepends = [ base hspec QuickCheck text ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jtdaugherty/text-zipper/";
+  description = "A text editor zipper library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/th-extras.nix b/pkgs/th-extras.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c7d15fdf20c1c182aba0eb5fc622c2ebb3318d5f
--- /dev/null
+++ b/pkgs/th-extras.nix
@@ -0,0 +1,27 @@
+{ mkDerivation
+, base
+, containers
+, lib
+, syb
+, template-haskell
+, th-abstraction
+}:
+mkDerivation {
+  pname = "th-extras";
+  version = "0.0.0.6";
+  sha256 = "02bf23940c0233a6ef6f61868e827ebd4554afe8d71cef2a1eb8e286a7f07c4a";
+  libraryHaskellDepends = [
+    base
+    containers
+    syb
+    template-haskell
+    th-abstraction
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/mokus0/th-extras";
+  description = "A grab bag of functions for use with Template Haskell";
+  license = lib.licenses.publicDomain;
+}
diff --git a/pkgs/th-lift-instances.nix b/pkgs/th-lift-instances.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ac155b86a258311dbf30761a309fa846a6cee017
--- /dev/null
+++ b/pkgs/th-lift-instances.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, lib
+, QuickCheck
+, template-haskell
+, text
+, th-lift
+, transformers
+, vector
+}:
+mkDerivation {
+  pname = "th-lift-instances";
+  version = "0.1.20";
+  sha256 = "f533c3f95addcca461a0ccd1aafef75dd801bfa6599c0d1184d54bfffb61d870";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    template-haskell
+    text
+    th-lift
+    transformers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    QuickCheck
+    template-haskell
+    text
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/bennofs/th-lift-instances/";
+  description = "Lift instances for template-haskell for common data types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/these.nix b/pkgs/these.nix
new file mode 100644
index 0000000000000000000000000000000000000000..716277969cce46a106f06098a082a83caab9f6a4
--- /dev/null
+++ b/pkgs/these.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, assoc, base, binary, deepseq, hashable, lib }:
+mkDerivation {
+  pname = "these";
+  version = "1.1.1.1";
+  sha256 = "d798c9f56e17def441e8f51e54cc11afdb3e76c6a9d1e9ee154e9a78da0bf508";
+  revision = "6";
+  editedCabalFile = "12ll5l8m482qkb8zn79vx51bqlwc89fgixf8jv33a32b4qzc3499";
+  libraryHaskellDepends = [ assoc base binary deepseq hashable ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/these";
+  description = "An either-or-both data type";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/tidal.nix b/pkgs/tidal.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bffe676f34c63fd9e1fb85695d3f19600e6f9d28
--- /dev/null
+++ b/pkgs/tidal.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, base
+, bifunctors
+, bytestring
+, clock
+, colour
+, containers
+, criterion
+, deepseq
+, exceptions
+, hosc
+, lib
+, microspec
+, mtl
+, network
+, parsec
+, primitive
+, random
+, text
+, transformers
+, weigh
+}:
+mkDerivation {
+  pname = "tidal";
+  version = "1.8.1";
+  sha256 = "093611c3d977bc5972a4446573de5358e80ef015185ed84ad27af82415040000";
+  revision = "1";
+  editedCabalFile = "0mnxl1ynxf2cgqlrbkshw8qngiw7b6lf0lsjkd6hjhkh2xbxgxzx";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    bifunctors
+    bytestring
+    clock
+    colour
+    containers
+    deepseq
+    exceptions
+    hosc
+    mtl
+    network
+    parsec
+    primitive
+    random
+    text
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    deepseq
+    hosc
+    microspec
+    parsec
+  ];
+  benchmarkHaskellDepends = [ base criterion weigh ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://tidalcycles.org/";
+  description = "Pattern language for improvised music";
+  license = lib.licenses.gpl3Only;
+}
diff --git a/pkgs/time-compat.nix b/pkgs/time-compat.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6e2431480ba6b320eb2dbe9d1ac499565290056c
--- /dev/null
+++ b/pkgs/time-compat.nix
@@ -0,0 +1,49 @@
+{ mkDerivation
+, base
+, base-compat
+, base-orphans
+, deepseq
+, hashable
+, HUnit
+, lib
+, QuickCheck
+, tagged
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, time
+}:
+mkDerivation {
+  pname = "time-compat";
+  version = "1.9.6.1";
+  sha256 = "ad07bb00eb9678c2136d3680752b00acc4cbc522654bb3199bf31c61ef1e6b80";
+  revision = "4";
+  editedCabalFile = "1n39yfk21xz8y1xvkh01651yysk2zp5qac22l5pq2hi7scczmxaw";
+  libraryHaskellDepends = [
+    base
+    base-orphans
+    deepseq
+    hashable
+    time
+  ];
+  testHaskellDepends = [
+    base
+    base-compat
+    deepseq
+    hashable
+    HUnit
+    QuickCheck
+    tagged
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/time-compat";
+  description = "Compatibility package for time";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/type-equality.nix b/pkgs/type-equality.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ff355c8be651924f077bc24e97cb0715906c110d
--- /dev/null
+++ b/pkgs/type-equality.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "type-equality";
+  version = "1";
+  sha256 = "4728b502a211454ef682a10d7a3e817c22d06ba509df114bb267ef9d43a08ce8";
+  revision = "4";
+  editedCabalFile = "0sajw67mmk5syhbrwx4bz82j5cjhm04n4kjl0pp3dnphxg1m5nbw";
+  libraryHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/hesselink/type-equality";
+  description = "Data.Type.Equality compat package";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/type-errors-pretty.nix b/pkgs/type-errors-pretty.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b4578211384a2fac096bcb80f098f8f9636a4866
--- /dev/null
+++ b/pkgs/type-errors-pretty.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, doctest, Glob, lib }:
+mkDerivation {
+  pname = "type-errors-pretty";
+  version = "0.0.1.2";
+  sha256 = "cb2cfc24870d02a1eb96565eae12e1b28a11206b78a9ed87cca59dc36b59ed07";
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base doctest Glob ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kowainik/type-errors-pretty";
+  description = "Combinators for writing pretty type errors easily";
+  license = lib.licenses.mpl20;
+}
diff --git a/pkgs/type-errors.nix b/pkgs/type-errors.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9544ac1c4fbde3c6a633742a741b9c99fa59d788
--- /dev/null
+++ b/pkgs/type-errors.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, doctest
+, first-class-families
+, lib
+, syb
+, template-haskell
+, th-abstraction
+}:
+mkDerivation {
+  pname = "type-errors";
+  version = "0.2.0.0";
+  sha256 = "174d509c30ec806117a244add923fee578ba5f3505b0156f4e03a32023892eb4";
+  revision = "3";
+  editedCabalFile = "0ig8qd2g8rd5n78039xhbq7n8r514f8kvbh0mgajav2a5lp549s1";
+  libraryHaskellDepends = [
+    base
+    first-class-families
+    syb
+    template-haskell
+    th-abstraction
+  ];
+  testHaskellDepends = [
+    base
+    doctest
+    first-class-families
+    syb
+    template-haskell
+    th-abstraction
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/isovector/type-errors#readme";
+  description = "Tools for writing better type errors";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/unicode-collation.nix b/pkgs/unicode-collation.nix
new file mode 100644
index 0000000000000000000000000000000000000000..afd9f4e314076c1f0b587d61010c1fbbcbf478a4
--- /dev/null
+++ b/pkgs/unicode-collation.nix
@@ -0,0 +1,60 @@
+{ mkDerivation
+, base
+, binary
+, bytestring
+, containers
+, lib
+, parsec
+, QuickCheck
+, quickcheck-instances
+, tasty
+, tasty-bench
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, text
+, text-icu
+, th-lift-instances
+, unicode-transforms
+}:
+mkDerivation {
+  pname = "unicode-collation";
+  version = "0.1.3.2";
+  sha256 = "ec54952221a8bb79d5dbd9abd4501ffcce4be07fbe500928394c108ea010cb66";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    binary
+    bytestring
+    containers
+    parsec
+    template-haskell
+    text
+    th-lift-instances
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    unicode-transforms
+  ];
+  benchmarkHaskellDepends = [
+    base
+    QuickCheck
+    quickcheck-instances
+    tasty-bench
+    text
+    text-icu
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jgm/unicode-collation";
+  description = "Haskell implementation of the Unicode Collation Algorithm";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/unicode-data.nix b/pkgs/unicode-data.nix
new file mode 100644
index 0000000000000000000000000000000000000000..91b49480afdfb2a898f48590ace8236099a830e0
--- /dev/null
+++ b/pkgs/unicode-data.nix
@@ -0,0 +1,27 @@
+{ mkDerivation
+, base
+, deepseq
+, hspec
+, hspec-discover
+, lib
+, tasty
+, tasty-bench
+}:
+mkDerivation {
+  pname = "unicode-data";
+  version = "0.4.0";
+  sha256 = "4890d5a26cae879ea573dc07408e833ad49937a9a551a3bbdc4fa77718644127";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base hspec ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [ base deepseq tasty tasty-bench ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/composewell/unicode-data";
+  description = "Access Unicode Character Database (UCD)";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/unicode-transforms.nix b/pkgs/unicode-transforms.nix
new file mode 100644
index 0000000000000000000000000000000000000000..83ea2637f94951ea3c8636e724d98a9bdb94fdd7
--- /dev/null
+++ b/pkgs/unicode-transforms.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, base
+, bytestring
+, deepseq
+, filepath
+, ghc-prim
+, hspec
+, lib
+, path
+, path-io
+, QuickCheck
+, split
+, tasty-bench
+, text
+, unicode-data
+}:
+mkDerivation {
+  pname = "unicode-transforms";
+  version = "0.4.0.1";
+  sha256 = "3278e1e1d648da4bcd7368658ae091a89080e88a2f44db9df5136711e99649fc";
+  revision = "1";
+  editedCabalFile = "0ml5j3j3dan7fgbyd3vgmlrij7bgszgfh244b1sppciis1v4m94p";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    ghc-prim
+    text
+    unicode-data
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    hspec
+    QuickCheck
+    split
+    text
+    unicode-data
+  ];
+  benchmarkHaskellDepends = [
+    base
+    deepseq
+    filepath
+    path
+    path-io
+    tasty-bench
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/composewell/unicode-transforms";
+  description = "Unicode normalization";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/unordered-containers.nix b/pkgs/unordered-containers.nix
new file mode 100644
index 0000000000000000000000000000000000000000..dfb2eefbdb8ef4894ba11ae040f396395454385b
--- /dev/null
+++ b/pkgs/unordered-containers.nix
@@ -0,0 +1,59 @@
+{ mkDerivation
+, base
+, bytestring
+, ChasingBottoms
+, containers
+, deepseq
+, hashable
+, hashmap
+, HUnit
+, lib
+, mtl
+, nothunks
+, QuickCheck
+, random
+, tasty
+, tasty-bench
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+}:
+mkDerivation {
+  pname = "unordered-containers";
+  version = "0.2.19.1";
+  sha256 = "1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2";
+  revision = "1";
+  editedCabalFile = "0fcax3apnpxxy9maymclr6s2b4c28d3pkl3plbg0lv1mn0mh84fv";
+  libraryHaskellDepends = [ base deepseq hashable template-haskell ];
+  testHaskellDepends = [
+    base
+    ChasingBottoms
+    containers
+    hashable
+    HUnit
+    nothunks
+    QuickCheck
+    random
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    containers
+    deepseq
+    hashable
+    hashmap
+    mtl
+    random
+    tasty-bench
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-unordered-containers/unordered-containers";
+  description = "Efficient hashing-based container types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/vault.nix b/pkgs/vault.nix
new file mode 100644
index 0000000000000000000000000000000000000000..34ae89743a1ff476ec7e6e13216e949a08035e7f
--- /dev/null
+++ b/pkgs/vault.nix
@@ -0,0 +1,27 @@
+{ mkDerivation
+, base
+, containers
+, hashable
+, lib
+, unordered-containers
+}:
+mkDerivation {
+  pname = "vault";
+  version = "0.3.1.5";
+  sha256 = "ac2a6b6adf58598c5c8faa931ae961a8a2aa50ddb2f0f7a2044ff6e8c3d433a0";
+  revision = "2";
+  editedCabalFile = "1bjwv3nv8jfhrdxa5kn3gvgxmyalpq7592bvyl7bpvcc7bbkfkf3";
+  libraryHaskellDepends = [
+    base
+    containers
+    hashable
+    unordered-containers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/HeinrichApfelmus/vault";
+  description = "a persistent store for values of arbitrary types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/vector-algorithms.nix b/pkgs/vector-algorithms.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5b72fa9085063f77bc7df97eea49786cbeb6096b
--- /dev/null
+++ b/pkgs/vector-algorithms.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, bitvec
+, bytestring
+, containers
+, lib
+, mwc-random
+, primitive
+, QuickCheck
+, vector
+}:
+mkDerivation {
+  pname = "vector-algorithms";
+  version = "0.9.0.1";
+  sha256 = "2ba7c0d3a8f26ef3ada24ff4abe81609225ecbab3b5754f048f8a0a3ecc33841";
+  revision = "1";
+  editedCabalFile = "1bma0m4g7770y4xnqsinspqkgf4swpdwddfbcby81szjxd8mik1l";
+  libraryHaskellDepends = [
+    base
+    bitvec
+    bytestring
+    primitive
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    containers
+    QuickCheck
+    vector
+  ];
+  benchmarkHaskellDepends = [ base mwc-random vector ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/erikd/vector-algorithms/";
+  description = "Efficient algorithms for vector arrays";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/vector.nix b/pkgs/vector.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d274c6c67a1fe7665798a3470f5fcd4dcad19126
--- /dev/null
+++ b/pkgs/vector.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, base
+, base-orphans
+, deepseq
+, doctest
+, HUnit
+, lib
+, primitive
+, QuickCheck
+, random
+, tasty
+, tasty-bench
+, tasty-hunit
+, tasty-inspection-testing
+, tasty-quickcheck
+, template-haskell
+, transformers
+, vector-stream
+}:
+mkDerivation {
+  pname = "vector";
+  version = "0.13.0.0";
+  sha256 = "c5d3167d15e12f52e00879ddf304a591672a74e369cc47bc5c7fa1d5a8d15b4f";
+  revision = "1";
+  editedCabalFile = "12cwdaqsy9dv7j7cwq6r6kdyfxqiya8khm6ccaabjhhpa2aqwljl";
+  libraryHaskellDepends = [ base deepseq primitive vector-stream ];
+  testHaskellDepends = [
+    base
+    base-orphans
+    doctest
+    HUnit
+    primitive
+    QuickCheck
+    random
+    tasty
+    tasty-hunit
+    tasty-inspection-testing
+    tasty-quickcheck
+    template-haskell
+    transformers
+  ];
+  benchmarkHaskellDepends = [ base random tasty tasty-bench ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/vector";
+  description = "Efficient Arrays";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/vinyl.nix b/pkgs/vinyl.nix
new file mode 100644
index 0000000000000000000000000000000000000000..48556f36933a8fe9d5a09b1bfa66aaa6b257938a
--- /dev/null
+++ b/pkgs/vinyl.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, aeson
+, array
+, base
+, criterion
+, deepseq
+, ghc-prim
+, hspec
+, lens
+, lens-aeson
+, lib
+, linear
+, microlens
+, mtl
+, mwc-random
+, primitive
+, should-not-typecheck
+, tagged
+, text
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "vinyl";
+  version = "0.14.3";
+  sha256 = "e6789cbf9d3db493065cc85251e1a4596e4ab561c857d2757ae2593dd53ce6d2";
+  libraryHaskellDepends = [ array base deepseq ghc-prim ];
+  testHaskellDepends = [
+    aeson
+    base
+    hspec
+    lens
+    lens-aeson
+    microlens
+    mtl
+    should-not-typecheck
+    text
+    unordered-containers
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    linear
+    microlens
+    mwc-random
+    primitive
+    tagged
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Extensible Records";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/vty.nix b/pkgs/vty.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4192d8003985664acd519307c4d919b2ce71690e
--- /dev/null
+++ b/pkgs/vty.nix
@@ -0,0 +1,110 @@
+{ mkDerivation
+, ansi-terminal
+, base
+, binary
+, blaze-builder
+, bytestring
+, Cabal
+, containers
+, deepseq
+, directory
+, filepath
+, hashable
+, HUnit
+, lib
+, microlens
+, microlens-mtl
+, microlens-th
+, mtl
+, parallel
+, parsec
+, QuickCheck
+, quickcheck-assertions
+, random
+, smallcheck
+, stm
+, string-qq
+, terminfo
+, test-framework
+, test-framework-hunit
+, test-framework-smallcheck
+, text
+, transformers
+, unix
+, utf8-string
+, vector
+}:
+mkDerivation {
+  pname = "vty";
+  version = "5.37";
+  sha256 = "67e1376b735232c3a5e7fa3c3eff00fdc457bdd5ba7dcf3a758aee6b8b60cdf0";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    ansi-terminal
+    base
+    binary
+    blaze-builder
+    bytestring
+    containers
+    deepseq
+    directory
+    filepath
+    hashable
+    microlens
+    microlens-mtl
+    microlens-th
+    mtl
+    parallel
+    parsec
+    stm
+    terminfo
+    text
+    transformers
+    unix
+    utf8-string
+    vector
+  ];
+  executableHaskellDepends = [
+    base
+    containers
+    directory
+    filepath
+    microlens
+    microlens-mtl
+    mtl
+  ];
+  testHaskellDepends = [
+    base
+    blaze-builder
+    bytestring
+    Cabal
+    containers
+    deepseq
+    HUnit
+    microlens
+    microlens-mtl
+    mtl
+    QuickCheck
+    quickcheck-assertions
+    random
+    smallcheck
+    stm
+    string-qq
+    terminfo
+    test-framework
+    test-framework-hunit
+    test-framework-smallcheck
+    text
+    unix
+    utf8-string
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jtdaugherty/vty";
+  description = "A simple terminal UI library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/wai-middleware-static.nix b/pkgs/wai-middleware-static.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1e8a3bd78236e5a62f11330b057b06e629e06e59
--- /dev/null
+++ b/pkgs/wai-middleware-static.nix
@@ -0,0 +1,67 @@
+{ mkDerivation
+, base
+, base16-bytestring
+, bytestring
+, containers
+, cryptohash-sha1
+, directory
+, expiring-cache-map
+, filepath
+, hspec
+, hspec-discover
+, hspec-expectations-lifted
+, hspec-wai
+, http-types
+, lib
+, mime-types
+, mockery
+, old-locale
+, scotty
+, semigroups
+, text
+, time
+, wai
+, wai-extra
+}:
+mkDerivation {
+  pname = "wai-middleware-static";
+  version = "0.9.2";
+  sha256 = "6c0c87558f04807896377535f7801a16b4ddfd9de1a203ef5a45de915907d5fa";
+  revision = "1";
+  editedCabalFile = "1zran8wpwizrwdw23a5qckmiplyk6xf2z8x4his0ipfy2zzl5ql6";
+  libraryHaskellDepends = [
+    base
+    base16-bytestring
+    bytestring
+    containers
+    cryptohash-sha1
+    directory
+    expiring-cache-map
+    filepath
+    http-types
+    mime-types
+    old-locale
+    semigroups
+    text
+    time
+    wai
+  ];
+  testHaskellDepends = [
+    base
+    hspec
+    hspec-expectations-lifted
+    hspec-wai
+    http-types
+    mockery
+    scotty
+    wai-extra
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/scotty-web/wai-middleware-static";
+  description = "WAI middleware that serves requests to static files";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/warp-tls.nix b/pkgs/warp-tls.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6193f03c92307845de022c5f527f0cb20849e88d
--- /dev/null
+++ b/pkgs/warp-tls.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, bytestring
+, cryptonite
+, data-default-class
+, lib
+, network
+, streaming-commons
+, tls
+, tls-session-manager
+, unliftio
+, wai
+, warp
+}:
+mkDerivation {
+  pname = "warp-tls";
+  version = "3.3.3";
+  sha256 = "5c44be7a903b863b330d1b9c152100ed7d1709f972e25401018bab407d3f69a0";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    cryptonite
+    data-default-class
+    network
+    streaming-commons
+    tls
+    tls-session-manager
+    unliftio
+    wai
+    warp
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/yesodweb/wai";
+  description = "HTTP over TLS support for Warp via the TLS package";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/warp.nix b/pkgs/warp.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bd6121e30ebd7754d64fa804d2a08532924ecbc6
--- /dev/null
+++ b/pkgs/warp.nix
@@ -0,0 +1,132 @@
+{ mkDerivation
+, array
+, async
+, auto-update
+, base
+, bsb-http-chunked
+, bytestring
+, case-insensitive
+, containers
+, directory
+, gauge
+, ghc-prim
+, hashable
+, hspec
+, hspec-discover
+, http-client
+, http-date
+, http-types
+, http2
+, HUnit
+, iproute
+, lib
+, network
+, process
+, QuickCheck
+, simple-sendfile
+, stm
+, streaming-commons
+, text
+, time
+, time-manager
+, unix
+, unix-compat
+, unliftio
+, vault
+, wai
+, word8
+, x509
+}:
+mkDerivation {
+  pname = "warp";
+  version = "3.3.22";
+  sha256 = "ea26386fa12f86bc8d04446cc551ccc5c918debe4ad947f6c6bf514da3f04f3e";
+  libraryHaskellDepends = [
+    array
+    auto-update
+    base
+    bsb-http-chunked
+    bytestring
+    case-insensitive
+    containers
+    ghc-prim
+    hashable
+    http-date
+    http-types
+    http2
+    iproute
+    network
+    simple-sendfile
+    stm
+    streaming-commons
+    text
+    time-manager
+    unix
+    unix-compat
+    unliftio
+    vault
+    wai
+    word8
+    x509
+  ];
+  testHaskellDepends = [
+    array
+    async
+    auto-update
+    base
+    bsb-http-chunked
+    bytestring
+    case-insensitive
+    containers
+    directory
+    ghc-prim
+    hashable
+    hspec
+    http-client
+    http-date
+    http-types
+    http2
+    HUnit
+    iproute
+    network
+    process
+    QuickCheck
+    simple-sendfile
+    stm
+    streaming-commons
+    text
+    time
+    time-manager
+    unix
+    unix-compat
+    unliftio
+    vault
+    wai
+    word8
+    x509
+  ];
+  testToolDepends = [ hspec-discover ];
+  benchmarkHaskellDepends = [
+    auto-update
+    base
+    bytestring
+    containers
+    gauge
+    hashable
+    http-date
+    http-types
+    network
+    time-manager
+    unix
+    unix-compat
+    unliftio
+    x509
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/yesodweb/wai";
+  description = "A fast, light-weight web server for WAI applications";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/with-utf8.nix b/pkgs/with-utf8.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4df52c1bb70301cd3ca09e692847f22df0e3cae2
--- /dev/null
+++ b/pkgs/with-utf8.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, base
+, deepseq
+, directory
+, filepath
+, hedgehog
+, HUnit
+, lib
+, process
+, safe-exceptions
+, tasty
+, tasty-discover
+, tasty-hedgehog
+, tasty-hunit
+, temporary
+, text
+, th-env
+, unix
+}:
+mkDerivation {
+  pname = "with-utf8";
+  version = "1.0.2.3";
+  sha256 = "0707ce5868c96379ed4f8486e1791a798cf2a254fda9801a7fb65944aeb5b035";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [ base safe-exceptions text ];
+  executableHaskellDepends = [
+    base
+    directory
+    filepath
+    process
+    safe-exceptions
+    text
+    th-env
+  ];
+  testHaskellDepends = [
+    base
+    deepseq
+    hedgehog
+    HUnit
+    safe-exceptions
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    temporary
+    text
+    unix
+  ];
+  testToolDepends = [ tasty-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/serokell/haskell-with-utf8#readme";
+  description = "Get your IO right on the first try";
+  license = lib.licenses.mpl20;
+  mainProgram = "utf8-troubleshoot";
+}
diff --git a/pkgs/witherable.nix b/pkgs/witherable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..599c7105801048092081ae5c25ce850033024337
--- /dev/null
+++ b/pkgs/witherable.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, base
+, base-orphans
+, containers
+, hashable
+, indexed-traversable
+, indexed-traversable-instances
+, lib
+, QuickCheck
+, quickcheck-instances
+, tasty
+, tasty-quickcheck
+, transformers
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "witherable";
+  version = "0.4.2";
+  sha256 = "790d2bb274283419173bd89104439860675a9410f70f21912973ecd9098b4104";
+  revision = "3";
+  editedCabalFile = "1f2bvl41by904lnr0dk6qgasqwadq2w48l7fj51bp2h8bqbkdjyc";
+  libraryHaskellDepends = [
+    base
+    base-orphans
+    containers
+    hashable
+    indexed-traversable
+    indexed-traversable-instances
+    transformers
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    hashable
+    QuickCheck
+    quickcheck-instances
+    tasty
+    tasty-quickcheck
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/fumieval/witherable";
+  description = "filterable traversable";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/xml-conduit.nix b/pkgs/xml-conduit.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2d806feb8d66dd41d7729a322ee21cc8e0f0e6e8
--- /dev/null
+++ b/pkgs/xml-conduit.nix
@@ -0,0 +1,68 @@
+{ mkDerivation
+, attoparsec
+, base
+, blaze-html
+, blaze-markup
+, bytestring
+, Cabal
+, cabal-doctest
+, conduit
+, conduit-extra
+, containers
+, data-default-class
+, deepseq
+, doctest
+, hspec
+, HUnit
+, lib
+, resourcet
+, text
+, transformers
+, xml-types
+}:
+mkDerivation {
+  pname = "xml-conduit";
+  version = "1.9.1.1";
+  sha256 = "bdb117606c0b56ca735564465b14b50f77f84c9e52e31d966ac8d4556d3ff0ff";
+  revision = "1";
+  editedCabalFile = "0x4is0956lfpxnxf2hqv5yvl1v8r1d41h3a22qqkvbqi13xz2hzv";
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    blaze-html
+    blaze-markup
+    bytestring
+    conduit
+    conduit-extra
+    containers
+    data-default-class
+    deepseq
+    resourcet
+    text
+    transformers
+    xml-types
+  ];
+  testHaskellDepends = [
+    base
+    blaze-markup
+    bytestring
+    conduit
+    conduit-extra
+    containers
+    doctest
+    hspec
+    HUnit
+    resourcet
+    text
+    transformers
+    xml-types
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/snoyberg/xml";
+  description = "Pure-Haskell utilities for dealing with XML with the conduit package";
+  license = lib.licenses.mit;
+}