diff --git a/flake.lock b/flake.lock
index 1899f99fe9c005acd7dd8c9d0b04494490a35edb..b6e93c4e4e70bdb11a562d13367ee6df620b7440 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,22 @@
 {
   "nodes": {
+    "all-cabal-hashes": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1662285362,
+        "narHash": "sha256-g/IZZ7AT1ARv3o3mnnVKBHHRsI55bNMmd+Ax8kZ8fQg=",
+        "owner": "commercialhaskell",
+        "repo": "all-cabal-hashes",
+        "rev": "fc7a6bfbfb1b33192e82e6cdfaa2e7b39e34961d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "commercialhaskell",
+        "ref": "hackage",
+        "repo": "all-cabal-hashes",
+        "type": "github"
+      }
+    },
     "cborg": {
       "flake": false,
       "locked": {
@@ -33,22 +50,6 @@
         "type": "github"
       }
     },
-    "composite-dhall": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1662127799,
-        "narHash": "sha256-kfrR4pUnlHy58qIQkVo8TKr0qvySrTXXrl3JELOjCCo=",
-        "ref": "refs/heads/master",
-        "rev": "d9858c59e6ba8fcfa85ab0a30f662e25f9400d41",
-        "revCount": 46,
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/haskell/composite-dhall"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/haskell/composite-dhall"
-      }
-    },
     "composite-lens-extra": {
       "flake": false,
       "locked": {
@@ -65,6 +66,23 @@
         "url": "https://gitlab.homotopic.tech/haskell/composite-lens-extra"
       }
     },
+    "doctest": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1652986762,
+        "narHash": "sha256-Ehlq1U6EUscYndVnH7IVe2MdjzHQTgqRQDEWR9wGVzk=",
+        "owner": "parsonsmatt",
+        "repo": "doctest",
+        "rev": "a5f696b80bb8220d284e34d90f0b94291b859e77",
+        "type": "github"
+      },
+      "original": {
+        "owner": "parsonsmatt",
+        "repo": "doctest",
+        "rev": "a5f696b80bb8220d284e34d90f0b94291b859e77",
+        "type": "github"
+      }
+    },
     "double-conversion": {
       "flake": false,
       "locked": {
@@ -197,11 +215,11 @@
     "hedgehog": {
       "flake": false,
       "locked": {
-        "lastModified": 1661722659,
-        "narHash": "sha256-M8b3+VYLsSIg6jOeHGPL5ctDKzp9LHhykeZ+5j8ESqE=",
+        "lastModified": 1662195978,
+        "narHash": "sha256-aZ+yA9yN80ftM2C1bpjV8SRprY6a1HsdaTDnaoM0zog=",
         "owner": "hedgehogqa",
         "repo": "haskell-hedgehog",
-        "rev": "70cf9fd0719e2d0ace1093cbe75673d7b9b4cf65",
+        "rev": "648c148a62105e09f4d76ce01bae96e56a98b7c6",
         "type": "github"
       },
       "original": {
@@ -280,11 +298,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1661704917,
-        "narHash": "sha256-h1deRhxLw9iaYzIovHT9mLFuZq/9hoge+pXSbX98B78=",
+        "lastModified": 1662096612,
+        "narHash": "sha256-R+Q8l5JuyJryRPdiIaYpO5O3A55rT+/pItBrKcy7LM4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "adf66cc31390f920854340679d7505ac577a5a8b",
+        "rev": "21de2b973f9fee595a7a1ac4693efff791245c34",
         "type": "github"
       },
       "original": {
@@ -294,28 +312,13 @@
         "type": "github"
       }
     },
-    "polysemy-time": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1660942587,
-        "narHash": "sha256-tQQO43HgOkgxMqa1R+HC3DipJpcoM/9fK0MJf5Q3MP0=",
-        "owner": "tek",
-        "repo": "polysemy-time",
-        "rev": "34d406f5c270fc2cd52c80612077433e8013791f",
-        "type": "github"
-      },
-      "original": {
-        "owner": "tek",
-        "repo": "polysemy-time",
-        "type": "github"
-      }
-    },
     "root": {
       "inputs": {
+        "all-cabal-hashes": "all-cabal-hashes",
         "cborg": "cborg",
         "cereal": "cereal",
-        "composite-dhall": "composite-dhall",
         "composite-lens-extra": "composite-lens-extra",
+        "doctest": "doctest",
         "double-conversion": "double-conversion",
         "flake-parts": "flake-parts",
         "flake-utils": "flake-utils",
@@ -328,7 +331,6 @@
         "lint-utils": "lint-utils",
         "memory": "memory",
         "nixpkgs": "nixpkgs_2",
-        "polysemy-time": "polysemy-time",
         "tasty": "tasty",
         "tasty-hedgehog": "tasty-hedgehog",
         "th-lift-instances": "th-lift-instances"
diff --git a/flake.nix b/flake.nix
index f461c90b0a9a364e099dc55099231c6118bb8b2d..931dca7444c16d3586fa64268eb7b0e17c03d38d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -8,14 +8,14 @@
       url = "github:GaloisInc/cereal";
       flake = false;
     };
-    composite-dhall = {
-      url = "git+https://gitlab.homotopic.tech/haskell/composite-dhall";
-      flake = false;
-    };
     composite-lens-extra = {
       url = "git+https://gitlab.homotopic.tech/haskell/composite-lens-extra";
       flake = false;
     };
+    doctest = {
+      url = "github:parsonsmatt/doctest/a5f696b80bb8220d284e34d90f0b94291b859e77";
+      flake = false;
+    };
     double-conversion = {
       url = "github:haskell/double-conversion";
       flake = false;
@@ -61,20 +61,29 @@
       url = "github:bennofs/th-lift-instances";
       flake = false;
     };
-    polysemy-time = {
-      url = "github:tek/polysemy-time";
+    all-cabal-hashes = {
+      url = "github:commercialhaskell/all-cabal-hashes?ref=hackage";
       flake = false;
     };
   };
   outputs = inputs@{ self, nixpkgs, flake-utils, lint-utils, ... }:
-    flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
       let
-        pkgs = import nixpkgs { inherit system; };
+        overlay-ach = final: prev: { all-cabal-hashes = inputs.all-cabal-hashes; };
+        pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [overlay-ach]; };
+        overrides-hp = import ./overlay.nix { inherit inputs pkgs; };
+        hp = pkgs.haskell.packages.ghc942.override {
+          overrides = overrides-hp;
+        };
+        hp' = pkgs.lib.filterAttrs (n: v: v != null
+                                       && builtins.typeOf v == "set"
+                                       && pkgs.lib.hasAttr "type" v
+                                       && v.type == "derivation"
+                                       && v.meta.broken == false) hp;
       in
       {
-        checks = {
-          nixpkgs-fmt = lint-utils.outputs.linters.${system}.nixpkgs-fmt ./.;
+        checks.x86_64-linux = {
+          nixpkgs-fmt = lint-utils.outputs.linters.x86_64-linux.nixpkgs-fmt ./.;
         };
-        overlays = import ./overlay.nix { inherit inputs pkgs; };
-      });
+        packages.x86_64-linux = hp';
+      };
 }
diff --git a/overlay.nix b/overlay.nix
index 9cd97237a049c8f8c0f901a133c50050d0dfbf80..0473651e3128f203bea98af02b7f2a7c379ab9b7 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1,9 +1,14 @@
 { inputs, pkgs }:
 final: prev: with pkgs.haskell.lib; {
+
+  Cabal = prev.callHackage "Cabal" "3.8.1.0" {};
+
   ChasingBottoms = prev.callHackage "ChasingBottoms" "1.3.1.12" { };
 
   OneTuple = prev.callHackage "OneTuple" "0.3.1" { };
 
+  OpenGLRaw = prev.callHackage "OpenGLRaw" "3.3.4.1" { };
+
   aeson = prev.callHackage "aeson" "2.1.0.0" { };
 
   ansi-terminal = prev.callHackage "ansi-terminal" "0.11.3" { };
@@ -12,106 +17,208 @@ final: prev: with pkgs.haskell.lib; {
 
   async = prev.callHackage "async" "2.2.4" { };
 
-  basement = doJailbreak (prev.callCabal2nix "basement" (inputs.foundation + /basement) { });
+  basement = prev.callHackage "basement" "0.0.15" { };
+
+  base-compat = prev.callHackage "base-compat" "0.12.2" { };
+
+  base-compat-batteries = prev.callHackage "base-compat-batteries" "0.12.2" { };
+
+  base-orphans = prev.callHackage "base-orphans" "0.8.7" { };
+
+  binary-orphans = prev.callHackage "binary-orphans" "1.0.3" { };
 
-  base-compat = final.callHackage "base-compat" "0.12.2" { };
+  blaze-markup = prev.callHackage "blaze-markup" "0.8.2.8" { };
 
-  base-compat-batteries = final.callHackage "base-compat-batteries" "0.12.2" { };
+  boring = prev.callHackage "boring" "0.2" { };
+
+  bsb-http-chunked = prev.callHackage "bsb-http-chunked" "0.0.0.4" { };
+
+  bytes = prev.callHackage "bytes" "0.17.2" { };
+
+  cabal-doctest = prev.callHackage "cabal-doctest" "1.0.9" { };
 
-  base-orphans = dontCheck prev.base-orphans;
-  binary-orphans = doJailbreak (dontCheck prev.binary-orphans);
-  blaze-markup = doJailbreak prev.blaze-markup;
-  boring = doJailbreak prev.boring;
-  bsb-http-chunked = dontCheck (prev.bsb-http-chunked);
-  bytes = doJailbreak prev.bytes;
-  cabal-doctest = doJailbreak (prev.cabal-doctest);
   cborg = doJailbreak (prev.callCabal2nix "cborg" (inputs.cborg + /cborg) { });
+
   cborg-json = doJailbreak (prev.callCabal2nix "cborg-json" (inputs.cborg + /cborg-json) { });
+
   cereal = prev.callCabal2nix "cereal" inputs.cereal { };
-  composite-base = doJailbreak (final.callHackage "composite-base" "0.8.1.0" { });
-  composite-dhall = prev.callCabal2nix "composite-dhall" inputs.composite-dhall { };
-  composite-lens-extra = prev.callCabal2nix "composite-dhall" inputs.composite-lens-extra { };
+
+  comonad = prev.callHackage "comonad" "5.0.8" { };
+
+  composite-base = doJailbreak (prev.callHackage "composite-base" "0.8.1.0" { });
+
+  composite-dhall = prev.callHackage "composite-dhall" "0.1.0.1" {};
+
+  composite-lens-extra = prev.callCabal2nix "composite-lens-extra" inputs.composite-lens-extra { };
+
   conduit = dontCheck prev.conduit;
+
   constraints = doJailbreak prev.constraints;
+
   cryptohash-sha1 = doJailbreak prev.cryptohash-sha1;
+
   cryptonite = prev.callHackage "cryptonite" "0.30" { };
+
   data-fix = doJailbreak prev.data-fix;
+
   dec = doJailbreak prev.dec;
-  dhall = doJailbreak prev.dhall;
-  doctest = doJailbreak (prev.callHackage "doctest" "0.20.0" { });
+
+  dhall = doJailbreak (prev.callHackage "dhall" "1.41.2" { });
+
+  doctest = dontCheck (prev.callCabal2nix "doctest" inputs.doctest { });
+
   double-conversion = prev.callCabal2nix "double-conversion" inputs.double-conversion { };
+
   email-validate = dontCheck prev.email-validate;
+
   extra = dontCheck prev.extra;
+
   fcf-containers = dontCheck prev.fcf-containers;
+
   first-class-families = doJailbreak prev.first-class-families;
+
   foldl = dontCheck (prev.foldl);
+
   foundation = doJailbreak (prev.callCabal2nix "foundation" (inputs.foundation + /foundation) { });
+
   generic-lens-lite = doJailbreak prev.generic-lens-lite;
+
   generic-optics-lite = doJailbreak prev.generic-optics-lite;
+
   ghc-byteorder = doJailbreak prev.ghc-byteorder;
+
+  ghc-paths = prev.callHackage "ghc-paths" "0.1.0.12" { };
+
   ghc-tcplugins-extra = final.callCabal2nix "ghc-tcplugins-extra" inputs.ghc-tcplugins-extra { };
-  hashable = dontCheck (prev.callCabal2nix "hashable" inputs.hashable { });
+
+  hashable = prev.callHackage "hashable" "1.4.1.0" {};
+
+  hashtables = prev.callHackage "hashtables" "1.3" {};
+
   hedgehog = dontHaddock (prev.callCabal2nix "hedgehog" (inputs.hedgehog + /hedgehog) { });
+
   hourglass = dontCheck prev.hourglass;
+
   hspec = doJailbreak prev.hspec;
+
   hspec-core = dontCheck (prev.callHackage "hspec-core" "2.10.0.1" { });
+
   hspec-discover = dontCheck (prev.callHackage "hspec-discover" "2.10.0.1" { });
+
   hspec-meta = dontCheck (prev.callHackage "hspec-meta" "2.9.3" { });
+
   http-client = dontCheck (prev.http-client);
+
   http-date = dontCheck (prev.http-date);
+
   http-types = dontCheck (prev.http-types);
+
   http2 = dontCheck prev.http2;
+
   incipit-base = doJailbreak prev.incipit-base;
+
   incipit-core = doJailbreak prev.incipit-core;
+
   indexed-traversable = doJailbreak (final.callHackage "indexed-traversable" "0.1.2" { });
+
   indexed-traversable-instances = doJailbreak (dontCheck prev.indexed-traversable-instances);
+
   integer-logarithms = final.callCabal2nix "integer-logarithms" inputs.integer-logarithms { };
+
   invariant = doJailbreak prev.invariant;
+
   iproute = dontCheck (prev.iproute);
-  lens = doJailbreak (prev.callHackage "lens" "5.1" { });
+
+  lens = doJailbreak (prev.callHackage "lens" "5.2" { });
+
   lens-aeson = prev.callHackage "lens-aeson" "1.2.1" { };
+
   lifted-async = doJailbreak prev.lifted-async;
+
   linear = doJailbreak prev.linear;
+
   lucid = doJailbreak prev.lucid;
+
   memory = prev.callCabal2nix "memory" inputs.memory { };
+
   network-byte-order = dontCheck (prev.network-byte-order);
+
   nothunks = dontCheck prev.nothunks;
+
   parallel = doJailbreak (final.callHackage "parallel" "3.2.2.0" { });
-  polysemy = dontCheck prev.polysemy;
-  polysemy-time = dontCheck (prev.callCabal2nix "polysemy-time" (inputs.polysemy-time + /packages/time) { });
+
+  polysemy = dontCheck (prev.callHackage "polysemy" "1.7.1.0" {});
+
+  polysemy-time = dontCheck (prev.callHackage "polysemy-time" "0.5.1.0" {});
+
   postgresql-libpq = doJailbreak prev.postgresql-libpq;
+
   postgresql-simple = doJailbreak prev.postgresql-simple;
+
   pretty-simple = dontCheck prev.pretty-simple;
+
   prettyprinter-ansi-terminal = dontCheck prev.prettyprinter-ansi-terminal;
+
   primitive = dontCheck (prev.callHackage "primitive" "0.7.4.0" { });
+
   proteaaudio = doJailbreak prev.proteaaudio;
+
   proteaaudio-sdl = doJailbreak prev.proteaaudio-sdl;
+
   quickcheck-instances = doJailbreak prev.quickcheck-instances;
+
   retry = dontCheck prev.retry;
-  scientific = doJailbreak prev.scientific;
+
+  scientific = prev.callHackage "scientific" "0.3.7.0" { };
+
   sdl2 = dontCheck (final.callHackage "sdl2" "2.5.3.3" { });
+
   semialign = doJailbreak prev.semialign;
-  serialise = prev.callCabal2nix "serialise" (inputs.cborg + /serialise) { };
+
+  serialise = doJailbreak (prev.callCabal2nix "serialise" (inputs.cborg + /serialise) { });
+
   singleton-bool = doJailbreak prev.singleton-bool;
+
   some = doJailbreak prev.some;
+
   sop-core = doJailbreak prev.sop-core;
+
   split = doJailbreak prev.split;
+
   splitmix = doJailbreak (prev.splitmix);
+
   streaming-commons = dontCheck prev.streaming-commons;
+
   syb = dontCheck prev.syb;
+
   tasty = doJailbreak (prev.callCabal2nix "tasty" (inputs.tasty + /core) { });
+
   tasty-hedgehog = doJailbreak (prev.callCabal2nix "tasty-hedgehog" inputs.tasty-hedgehog { });
+
   tasty-hunit = doJailbreak (prev.callCabal2nix "tasty" (inputs.tasty + /hunit) { });
+
   these = doJailbreak prev.these;
+
   th-lift-instances = prev.callCabal2nix "th-lift-instances" inputs.th-lift-instances { };
+
   time-compat = doJailbreak prev.time-compat;
+
   type-errors-pretty = dontCheck (doJailbreak prev.type-errors-pretty);
+
   type-errors = dontCheck (doJailbreak prev.type-errors);
+
   type-equality = doJailbreak prev.type-equality;
+
   unordered-containers = doJailbreak (prev.callHackage "unordered-containers" "0.2.19.1" { });
+
   vault = doJailbreak prev.vault;
-  vector = dontCheck (prev.vector);
+
+  vector = dontCheck (prev.callHackage "vector" "0.13.0.0" { });
+
   vinyl = final.callHackage "vinyl" "0.14.3" { };
+
   warp = dontCheck (prev.warp);
+
   witherable = dontCheck prev.witherable;
+
 }