diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f456c793ddfd4f4e37594e82f409fe2260cdde2c..5aa4c1b6d538f4e4eff00eb4d83d51dbb47aa4df 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,18 +1,18 @@
 stages:
 - generate
-- flake
+- packages
 - cache
 
 generate-flake-ci:
   stage: generate
   script:
-  - nix run "git+https://gitlab.nixica.dev/haskell/flake-to-gitlab-ci?ref=refs/tags/0.2.4.1" > flake-ci-x86_64-linux.yml
+  - nix run develop/#flake-to-gitlab-ci > flake-ci-x86_64-linux.yml
   artifacts:
     paths:
       - flake-ci-x86_64-linux.yml
 
 x86_64-linux-ci:
-  stage: flake
+  stage: packages
   trigger:
     include:
       - artifact: flake-ci-x86_64-linux.yml
@@ -27,4 +27,4 @@ cachix:
     - cachix
     - /^lts\/.*$/
   script:
-  - nix-shell -p cachix --command "nix build github:srid/devour-flake -L --no-link --print-out-paths --override-input flake . | xargs cat | cachix push horizon"
+  - nix run develop/#cachix-push-horizon-devour
diff --git a/configuration.nix b/configuration.nix
index b286c861db3c3ef85f34e91a36799bb0aab983d2..820694f32a7beaef25755c505b4a44978f292c4f 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -4,8 +4,6 @@ with pkgs.haskell.lib;
 
 final: prev: {
 
-  digest = addPkgconfigDepend prev.digest pkgs.zlib;
-
   persistent-qq = null;
 
 /*
@@ -45,6 +43,5 @@ final: prev: {
 
   sdl2-ttf = null;
 
-  zlib = prev.callPackage ./pkgs/zlib.nix { inherit (pkgs) zlib; };
 }
 
diff --git a/develop/flake.lock b/develop/flake.lock
index 36f005a973db01f85e5fa5e214f2485098d2fe84..6c765d426e096821d3c78038a54dae0c1db29fc2 100644
--- a/develop/flake.lock
+++ b/develop/flake.lock
@@ -1,12 +1,28 @@
 {
   "nodes": {
+    "autodocodec": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696603846,
+        "narHash": "sha256-GfcJ1T+4SQ+3T1Q4jO7xNcqn7Kvfp65MF19Un7K36yI=",
+        "owner": "NorfairKing",
+        "repo": "autodocodec",
+        "rev": "762eb76333e9812160733e377b973ff76fe45378",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "autodocodec",
+        "type": "github"
+      }
+    },
     "crazyshell": {
       "inputs": {
-        "flake-utils": "flake-utils_4",
-        "get-flake": "get-flake_2",
-        "horizon-platform": "horizon-platform",
-        "lint-utils": "lint-utils_4",
-        "nixpkgs": "nixpkgs_6"
+        "flake-utils": "flake-utils_7",
+        "get-flake": "get-flake_3",
+        "horizon-platform": "horizon-platform_2",
+        "lint-utils": "lint-utils_6",
+        "nixpkgs": "nixpkgs_11"
       },
       "locked": {
         "lastModified": 1680415307,
@@ -22,6 +38,79 @@
         "url": "https://gitlab.horizon-haskell.net/shells/crazyshell"
       }
     },
+    "dekking": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1694680694,
+        "narHash": "sha256-LON8AC76I28A7cyfuDwvX7/uMOKPNwkuS8Y/YyOXv2c=",
+        "owner": "NorfairKing",
+        "repo": "dekking",
+        "rev": "97875f0a6aa9ca659dfe3303d02dfdf94f56a36c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "dekking",
+        "type": "github"
+      }
+    },
+    "fast-myers-diff": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696885120,
+        "narHash": "sha256-wqJ0/P3pXOISDhRHpEt11GVYllb+DFt46Mh+k/y1bYw=",
+        "owner": "NorfairKing",
+        "repo": "fast-myers-diff",
+        "rev": "c106ef803c69ef9440399247ec4ffd59c84f6fc7",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "fast-myers-diff",
+        "type": "github"
+      }
+    },
+    "feedback": {
+      "inputs": {
+        "autodocodec": "autodocodec",
+        "dekking": "dekking",
+        "fast-myers-diff": "fast-myers-diff",
+        "nixpkgs": "nixpkgs",
+        "pre-commit-hooks": "pre-commit-hooks",
+        "safe-coloured-text": "safe-coloured-text",
+        "sydtest": "sydtest",
+        "validity": "validity"
+      },
+      "locked": {
+        "lastModified": 1697134928,
+        "narHash": "sha256-QuQrszOuhrznaaPEL1SzHU8Cx5vWHmo4/6ztnzcfUe8=",
+        "owner": "NorfairKing",
+        "repo": "feedback",
+        "rev": "ee5b44fda04d6bde7b3df19d07d184be7df623a2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "feedback",
+        "type": "github"
+      }
+    },
+    "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1673956053,
+        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
     "flake-parts": {
       "inputs": {
         "nixpkgs-lib": "nixpkgs-lib"
@@ -45,11 +134,11 @@
         "nixpkgs-lib": "nixpkgs-lib_2"
       },
       "locked": {
-        "lastModified": 1683560683,
-        "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=",
+        "lastModified": 1680392223,
+        "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "006c75898cf814ef9497252b022e91c946ba8e17",
+        "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
         "type": "github"
       },
       "original": {
@@ -94,10 +183,86 @@
         "type": "github"
       }
     },
+    "flake-parts_5": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_5"
+      },
+      "locked": {
+        "lastModified": 1678379998,
+        "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-parts_6": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_6"
+      },
+      "locked": {
+        "lastModified": 1683560683,
+        "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "006c75898cf814ef9497252b022e91c946ba8e17",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-to-gitlab-ci": {
+      "inputs": {
+        "flake-parts": "flake-parts_2",
+        "horizon-platform": "horizon-platform",
+        "lint-utils": "lint-utils_2",
+        "nixpkgs": "nixpkgs_5"
+      },
+      "locked": {
+        "lastModified": 1697445444,
+        "narHash": "sha256-ozmB2f2mWWWU+HBAvl2wih6O6aa0dN2svD7jgebp2bQ=",
+        "ref": "refs/tags/0.2.4.2",
+        "rev": "e299d88689273b4a2a5fe27320eb423f7a05a3ac",
+        "revCount": 68,
+        "type": "git",
+        "url": "https://gitlab.nixica.dev/haskell/flake-to-gitlab-ci"
+      },
+      "original": {
+        "ref": "refs/tags/0.2.4.2",
+        "type": "git",
+        "url": "https://gitlab.nixica.dev/haskell/flake-to-gitlab-ci"
+      }
+    },
     "flake-utils": {
       "inputs": {
         "systems": "systems"
       },
+      "locked": {
+        "lastModified": 1685518550,
+        "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_10": {
+      "inputs": {
+        "systems": "systems_3"
+      },
       "locked": {
         "lastModified": 1694529238,
         "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
@@ -112,6 +277,36 @@
         "type": "github"
       }
     },
+    "flake-utils_11": {
+      "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_12": {
+      "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_2": {
       "locked": {
         "lastModified": 1644229661,
@@ -143,12 +338,15 @@
       }
     },
     "flake-utils_4": {
+      "inputs": {
+        "systems": "systems_2"
+      },
       "locked": {
-        "lastModified": 1678901627,
-        "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
+        "lastModified": 1694529238,
+        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
+        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
         "type": "github"
       },
       "original": {
@@ -188,15 +386,12 @@
       }
     },
     "flake-utils_7": {
-      "inputs": {
-        "systems": "systems_2"
-      },
       "locked": {
-        "lastModified": 1694529238,
-        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+        "lastModified": 1678901627,
+        "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+        "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
         "type": "github"
       },
       "original": {
@@ -295,12 +490,49 @@
         "type": "github"
       }
     },
+    "get-flake_5": {
+      "locked": {
+        "lastModified": 1673819588,
+        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
+        "owner": "ursi",
+        "repo": "get-flake",
+        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ursi",
+        "repo": "get-flake",
+        "type": "github"
+      }
+    },
+    "gitignore": {
+      "inputs": {
+        "nixpkgs": [
+          "feedback",
+          "pre-commit-hooks",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1660459072,
+        "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
     "horizon-core": {
       "inputs": {
-        "flake-parts": "flake-parts_2",
-        "get-flake": "get-flake",
-        "lint-utils": "lint-utils",
-        "nixpkgs": "nixpkgs_2"
+        "flake-parts": "flake-parts_4",
+        "get-flake": "get-flake_2",
+        "lint-utils": "lint-utils_3",
+        "nixpkgs": "nixpkgs_7"
       },
       "locked": {
         "lastModified": 1697043887,
@@ -318,10 +550,10 @@
     },
     "horizon-core_2": {
       "inputs": {
-        "flake-parts": "flake-parts_4",
-        "get-flake": "get-flake_4",
-        "lint-utils": "lint-utils_5",
-        "nixpkgs": "nixpkgs_8"
+        "flake-parts": "flake-parts_6",
+        "get-flake": "get-flake_5",
+        "lint-utils": "lint-utils_7",
+        "nixpkgs": "nixpkgs_13"
       },
       "locked": {
         "lastModified": 1697043887,
@@ -339,22 +571,22 @@
     },
     "horizon-gen-nix": {
       "inputs": {
-        "flake-utils": "flake-utils",
+        "flake-utils": "flake-utils_4",
         "horizon-core": "horizon-core",
-        "lint-utils": "lint-utils_2",
-        "nixpkgs": "nixpkgs_3"
+        "lint-utils": "lint-utils_4",
+        "nixpkgs": "nixpkgs_8"
       },
       "locked": {
-        "lastModified": 1697280312,
-        "narHash": "sha256-GXjT8XYd0OvyKKnDJjK1w8ler2tN41lvK/dHCeELhGY=",
-        "ref": "refs/tags/0.10.4",
-        "rev": "d57f6cd65403e0b8a404088384fd646ac85fb713",
-        "revCount": 181,
+        "lastModified": 1698091055,
+        "narHash": "sha256-RxZRtv/ccP9lwcU54OQCFfgWK8C8eyKSbT+vW6Bl7ck=",
+        "ref": "refs/tags/0.11.0",
+        "rev": "0f5e5bad673d0c977246e6d96f39a6867e04fad3",
+        "revCount": 190,
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix"
       },
       "original": {
-        "ref": "refs/tags/0.10.4",
+        "ref": "refs/tags/0.11.0",
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix"
       }
@@ -362,10 +594,32 @@
     "horizon-platform": {
       "inputs": {
         "flake-parts": "flake-parts_3",
-        "get-flake": "get-flake_3",
+        "get-flake": "get-flake",
         "horizon-shell-flake": "horizon-shell-flake",
-        "lint-utils": "lint-utils_3",
-        "nixpkgs": "nixpkgs_5"
+        "lint-utils": "lint-utils",
+        "nixpkgs": "nixpkgs_4"
+      },
+      "locked": {
+        "lastModified": 1681133543,
+        "narHash": "sha256-hqX9PJj0Ggbunu8+ae6PSOgMO1Vdp/vvawd72MQhdGk=",
+        "ref": "refs/heads/master",
+        "rev": "987a46002fc64c4adff114d14a72f5222d96fbf8",
+        "revCount": 1067,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-platform"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-platform"
+      }
+    },
+    "horizon-platform_2": {
+      "inputs": {
+        "flake-parts": "flake-parts_5",
+        "get-flake": "get-flake_4",
+        "horizon-shell-flake": "horizon-shell-flake_2",
+        "lint-utils": "lint-utils_5",
+        "nixpkgs": "nixpkgs_10"
       },
       "locked": {
         "lastModified": 1680120375,
@@ -384,21 +638,22 @@
     "horizon-shell": {
       "inputs": {
         "crazyshell": "crazyshell",
-        "flake-utils": "flake-utils_7",
+        "flake-utils": "flake-utils_10",
         "horizon-core": "horizon-core_2",
-        "lint-utils": "lint-utils_6",
-        "nixpkgs": "nixpkgs_9"
+        "lint-utils": "lint-utils_8",
+        "nixpkgs": "nixpkgs_14"
       },
       "locked": {
-        "lastModified": 1697046127,
-        "narHash": "sha256-GvNo2VkdBJlcW4nAqWopJOl8VFLlONVOI5VMwnAo/cM=",
-        "ref": "refs/heads/master",
-        "rev": "4a0bb73862a287a74ef68059ce3ba22d994c19c1",
-        "revCount": 28,
+        "lastModified": 1697281965,
+        "narHash": "sha256-VWAJWUyI3PI/7UKVJ9hkQNrC/NMcUHsqzMayAbfbXZc=",
+        "ref": "refs/tags/0.0.9",
+        "rev": "3201b990c51f924838c244cb5d8c5b1ba7b134c8",
+        "revCount": 36,
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
       },
       "original": {
+        "ref": "refs/tags/0.0.9",
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
       }
@@ -420,10 +675,49 @@
         "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
       }
     },
+    "horizon-shell-flake_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1679524452,
+        "narHash": "sha256-xzNxvLVa3o0F/z4CnBDORv2Y6PfxjlGv7b7LybIyCSg=",
+        "ref": "refs/tags/0.0.8",
+        "rev": "21b8913803cefeb287bb244c7ee335638233db7f",
+        "revCount": 21,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
+      },
+      "original": {
+        "ref": "refs/tags/0.0.8",
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
+      }
+    },
     "lint-utils": {
       "inputs": {
         "flake-utils": "flake-utils_2",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs_3"
+      },
+      "locked": {
+        "lastModified": 1676204115,
+        "narHash": "sha256-cYYt6sN9t+lYYYelAbRtM/ioVJ27kMcUtR4unA8jfd4=",
+        "ref": "refs/heads/master",
+        "rev": "cc55bca9b25e65f7060de642c99e51bd96dfc190",
+        "revCount": 47,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      }
+    },
+    "lint-utils_2": {
+      "inputs": {
+        "flake-utils": "flake-utils_3",
+        "nixpkgs": [
+          "flake-to-gitlab-ci",
+          "nixpkgs"
+        ]
       },
       "locked": {
         "lastModified": 1681737193,
@@ -439,9 +733,28 @@
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       }
     },
-    "lint-utils_2": {
+    "lint-utils_3": {
       "inputs": {
-        "flake-utils": "flake-utils_3",
+        "flake-utils": "flake-utils_5",
+        "nixpkgs": "nixpkgs_6"
+      },
+      "locked": {
+        "lastModified": 1681737193,
+        "narHash": "sha256-c+0eLyF/VWZWGeB1DA88aDUZ3BjO6+jnsJpVW4wxs4w=",
+        "ref": "refs/heads/master",
+        "rev": "efaf89d12a6811f0e00034444904b8d169f0fa34",
+        "revCount": 48,
+        "type": "git",
+        "url": "https://gitlab.nixica.dev/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.nixica.dev/nix/lint-utils"
+      }
+    },
+    "lint-utils_4": {
+      "inputs": {
+        "flake-utils": "flake-utils_6",
         "nixpkgs": [
           "horizon-gen-nix",
           "nixpkgs"
@@ -461,10 +774,10 @@
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       }
     },
-    "lint-utils_3": {
+    "lint-utils_5": {
       "inputs": {
-        "flake-utils": "flake-utils_5",
-        "nixpkgs": "nixpkgs_4"
+        "flake-utils": "flake-utils_8",
+        "nixpkgs": "nixpkgs_9"
       },
       "locked": {
         "lastModified": 1676204115,
@@ -480,9 +793,9 @@
         "url": "https://gitlab.homotopic.tech/nix/lint-utils"
       }
     },
-    "lint-utils_4": {
+    "lint-utils_6": {
       "inputs": {
-        "flake-utils": "flake-utils_6",
+        "flake-utils": "flake-utils_9",
         "nixpkgs": [
           "horizon-shell",
           "crazyshell",
@@ -503,10 +816,10 @@
         "url": "https://gitlab.homotopic.tech/nix/lint-utils"
       }
     },
-    "lint-utils_5": {
+    "lint-utils_7": {
       "inputs": {
-        "flake-utils": "flake-utils_8",
-        "nixpkgs": "nixpkgs_7"
+        "flake-utils": "flake-utils_11",
+        "nixpkgs": "nixpkgs_12"
       },
       "locked": {
         "lastModified": 1681737193,
@@ -522,9 +835,9 @@
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       }
     },
-    "lint-utils_6": {
+    "lint-utils_8": {
       "inputs": {
-        "flake-utils": "flake-utils_9",
+        "flake-utils": "flake-utils_12",
         "nixpkgs": [
           "horizon-shell",
           "nixpkgs"
@@ -546,16 +859,16 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1644525281,
-        "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
+        "lastModified": 1696983906,
+        "narHash": "sha256-L7GyeErguS7Pg4h8nK0wGlcUTbfUMDu+HMf1UcyP72k=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
+        "rev": "bd1cde45c77891214131cbbea5b1203e485a9d51",
         "type": "github"
       },
       "original": {
         "owner": "NixOS",
-        "ref": "nixos-unstable",
+        "ref": "nixos-23.05",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -579,6 +892,42 @@
       }
     },
     "nixpkgs-lib_2": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1680213900,
+        "narHash": "sha256-cIDr5WZIj3EkKyCgj/6j3HBH4Jj1W296z7HTcWj1aMA=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "e3652e0735fbec227f342712f180f4f21f0594f2",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib_3": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1678375444,
+        "narHash": "sha256-XIgHfGvjFvZQ8hrkfocanCDxMefc/77rXeHvYdzBMc8=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "130fa0baaa2b93ec45523fdcde942f6844ee9f6e",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib_4": {
       "locked": {
         "dir": "lib",
         "lastModified": 1682879489,
@@ -596,7 +945,7 @@
         "type": "github"
       }
     },
-    "nixpkgs-lib_3": {
+    "nixpkgs-lib_5": {
       "locked": {
         "dir": "lib",
         "lastModified": 1678375444,
@@ -614,7 +963,7 @@
         "type": "github"
       }
     },
-    "nixpkgs-lib_4": {
+    "nixpkgs-lib_6": {
       "locked": {
         "dir": "lib",
         "lastModified": 1682879489,
@@ -632,23 +981,71 @@
         "type": "github"
       }
     },
+    "nixpkgs-stable": {
+      "locked": {
+        "lastModified": 1685801374,
+        "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-23.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "nixpkgs_10": {
       "locked": {
-        "lastModified": 1696879762,
-        "narHash": "sha256-Ud6bH4DMcYHUDKavNMxAhcIpDGgHMyL/yaDEAVSImQY=",
+        "lastModified": 1679198465,
+        "narHash": "sha256-VfXpHpniNWgg7pBzxb20pRX7kqn80LApPDQYTReiFCw=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "5a05160f7671434e1c833b1b01284b876e04eca4",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_11": {
+      "locked": {
+        "lastModified": 1680273054,
+        "narHash": "sha256-Bs6/5LpvYp379qVqGt9mXxxx9GSE789k3oFc+OAL07M=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f99e5f03cc0aa231ab5950a15ed02afec45ed51a",
+        "rev": "3364b5b117f65fe1ce65a3cdd5612a078a3b31e3",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_12": {
+      "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_2": {
+    "nixpkgs_13": {
       "locked": {
         "lastModified": 1686701582,
         "narHash": "sha256-uCj6bWmhb2RF+kmCP7T5ov5pg3HjksIyv4WDsCHZQyU=",
@@ -664,7 +1061,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_3": {
+    "nixpkgs_14": {
       "locked": {
         "lastModified": 1696757521,
         "narHash": "sha256-cfgtLNCBLFx2qOzRLI6DHfqTdfWI+UbvsKYa3b3fvaA=",
@@ -680,7 +1077,23 @@
         "type": "github"
       }
     },
-    "nixpkgs_4": {
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1689261696,
+        "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_3": {
       "locked": {
         "lastModified": 1644525281,
         "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
@@ -696,7 +1109,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_5": {
+    "nixpkgs_4": {
       "locked": {
         "lastModified": 1679198465,
         "narHash": "sha256-VfXpHpniNWgg7pBzxb20pRX7kqn80LApPDQYTReiFCw=",
@@ -712,13 +1125,13 @@
         "type": "github"
       }
     },
-    "nixpkgs_6": {
+    "nixpkgs_5": {
       "locked": {
-        "lastModified": 1680273054,
-        "narHash": "sha256-Bs6/5LpvYp379qVqGt9mXxxx9GSE789k3oFc+OAL07M=",
+        "lastModified": 1697009197,
+        "narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3364b5b117f65fe1ce65a3cdd5612a078a3b31e3",
+        "rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54",
         "type": "github"
       },
       "original": {
@@ -728,7 +1141,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_7": {
+    "nixpkgs_6": {
       "locked": {
         "lastModified": 1644525281,
         "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
@@ -744,7 +1157,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_8": {
+    "nixpkgs_7": {
       "locked": {
         "lastModified": 1686701582,
         "narHash": "sha256-uCj6bWmhb2RF+kmCP7T5ov5pg3HjksIyv4WDsCHZQyU=",
@@ -760,7 +1173,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_9": {
+    "nixpkgs_8": {
       "locked": {
         "lastModified": 1696757521,
         "narHash": "sha256-cfgtLNCBLFx2qOzRLI6DHfqTdfWI+UbvsKYa3b3fvaA=",
@@ -776,12 +1189,83 @@
         "type": "github"
       }
     },
+    "nixpkgs_9": {
+      "locked": {
+        "lastModified": 1644525281,
+        "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "pre-commit-hooks": {
+      "inputs": {
+        "flake-compat": "flake-compat",
+        "flake-utils": "flake-utils",
+        "gitignore": "gitignore",
+        "nixpkgs": "nixpkgs_2",
+        "nixpkgs-stable": "nixpkgs-stable"
+      },
+      "locked": {
+        "lastModified": 1696846637,
+        "narHash": "sha256-0hv4kbXxci2+pxhuXlVgftj/Jq79VSmtAyvfabCCtYk=",
+        "owner": "cachix",
+        "repo": "pre-commit-hooks.nix",
+        "rev": "42e1b6095ef80a51f79595d9951eb38e91c4e6ca",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "pre-commit-hooks.nix",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
+        "feedback": "feedback",
         "flake-parts": "flake-parts",
+        "flake-to-gitlab-ci": "flake-to-gitlab-ci",
         "horizon-gen-nix": "horizon-gen-nix",
-        "horizon-shell": "horizon-shell",
-        "nixpkgs": "nixpkgs_10"
+        "horizon-shell": "horizon-shell"
+      }
+    },
+    "safe-coloured-text": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696884906,
+        "narHash": "sha256-7CanCNOCB5gFwqhEPFIoOojoM1iVJZKF5YRy7unUDuo=",
+        "owner": "NorfairKing",
+        "repo": "safe-coloured-text",
+        "rev": "50abcbfa2a2ed15c6186fa2381fe818bd93a730b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "safe-coloured-text",
+        "type": "github"
+      }
+    },
+    "sydtest": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696883645,
+        "narHash": "sha256-Yr5piSv96hgKC7z7aHqo8kMKJPyL8ZG2lbDb7oFUZxw=",
+        "owner": "NorfairKing",
+        "repo": "sydtest",
+        "rev": "6313c1b211d14c1215cdf97b9933675cf9c2adb9",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "sydtest",
+        "type": "github"
       }
     },
     "systems": {
@@ -813,6 +1297,37 @@
         "repo": "default",
         "type": "github"
       }
+    },
+    "systems_3": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "validity": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696884006,
+        "narHash": "sha256-w2dKXZrNxXm/hsYkef5ZLTDxm3IsIzdj3i2qc1GC+A8=",
+        "owner": "NorfairKing",
+        "repo": "validity",
+        "rev": "34e17fe6d92765209f1db8127aee13c74285805d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NorfairKing",
+        "repo": "validity",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/develop/flake.nix b/develop/flake.nix
index 54fd9c8315a4410d83df15f85efae17e8956c2ee..71f921e73f4bb4a05d7f6c4fc23b753faf7f9093 100644
--- a/develop/flake.nix
+++ b/develop/flake.nix
@@ -6,17 +6,17 @@
   };
 
   inputs = {
+    feedback.url = "github:NorfairKing/feedback";
     flake-parts.url = "github:hercules-ci/flake-parts";
-    horizon-gen-nix.url = "git+https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix?ref=refs/tags/0.10.4";
-    horizon-shell.url = "git+https://gitlab.horizon-haskell.net/shells/horizon-shell";
-    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+    flake-to-gitlab-ci.url = "git+https://gitlab.nixica.dev/haskell/flake-to-gitlab-ci?ref=refs/tags/0.2.4.2";
+    horizon-gen-nix.url = "git+https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix?ref=refs/tags/0.11.0";
+    horizon-shell.url = "git+https://gitlab.horizon-haskell.net/shells/horizon-shell?ref=refs/tags/0.0.9";
   };
 
   outputs =
     inputs@
     { self
     , flake-parts
-    , nixpkgs
     , ...
     }:
     flake-parts.lib.mkFlake { inherit inputs; }
@@ -24,23 +24,20 @@
         systems = [
           "x86_64-linux"
         ];
-        perSystem = { config, system, final, inputs', ... }:
+        perSystem = { system, ... }:
           let
-            pkgs = import inputs.nixpkgs { inherit system; };
+            feedback-app = {
+              type = "app";
+              program = "${inputs.feedback.packages.${system}.default}/bin/feedback";
+            };
           in
           {
 
             apps = {
+              feedback = feedback-app;
+              flake-to-gitlab-ci = inputs.flake-to-gitlab-ci.apps.${system}.default;
               horizon-gen-nix = inputs.horizon-gen-nix.apps.${system}.default;
-            };
-
-            devShells.default = pkgs.mkShell {
-              buildInputs = [
-                inputs.horizon-shell.packages.${system}.default
-              ];
-              shellHook = ''
-                exec horizon-shell
-              '';
+              horizon-shell = inputs.horizon-shell.apps.${system}.default;
             };
 
           };
diff --git a/flake.lock b/flake.lock
index 8bb3d0cd4574d4232eda99efc6575a1ab1e7934d..f526590fd823a5e2d9b340e24eb20958e4e636ce 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,11 @@
         "nixpkgs-lib": "nixpkgs-lib"
       },
       "locked": {
-        "lastModified": 1696343447,
-        "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
+        "lastModified": 1701473968,
+        "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
+        "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5",
         "type": "github"
       },
       "original": {
@@ -73,11 +73,11 @@
         "nixpkgs": "nixpkgs_2"
       },
       "locked": {
-        "lastModified": 1699118179,
-        "narHash": "sha256-gLf8NCNd+FbyiiUgZ2CmmuEB0THXlQPVG23UnMccyWc=",
+        "lastModified": 1701552836,
+        "narHash": "sha256-nUYNnU4xx0Wbm6Qg3mREX2zTmPuKvUpLJVULqaKo9vg=",
         "ref": "lts/ghc-9.6.x",
-        "rev": "43ec27a8b6a703c8228f42c0421275900a0592fa",
-        "revCount": 1175,
+        "rev": "93c8fd653cda7ec59673588bbfff45fc9730b209",
+        "revCount": 1189,
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
       },
@@ -93,11 +93,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1681737193,
-        "narHash": "sha256-c+0eLyF/VWZWGeB1DA88aDUZ3BjO6+jnsJpVW4wxs4w=",
+        "lastModified": 1699441004,
+        "narHash": "sha256-7v7CH8ZiB2RClPtpgDLfQxeR+14KXoFl2qTdXd27sL0=",
         "ref": "refs/heads/master",
-        "rev": "efaf89d12a6811f0e00034444904b8d169f0fa34",
-        "revCount": 48,
+        "rev": "226003d10c2d192b088f7c3c9ee7ca549c421a9c",
+        "revCount": 52,
         "type": "git",
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       },
@@ -112,11 +112,11 @@
         "nixpkgs": "nixpkgs_3"
       },
       "locked": {
-        "lastModified": 1681737193,
-        "narHash": "sha256-c+0eLyF/VWZWGeB1DA88aDUZ3BjO6+jnsJpVW4wxs4w=",
+        "lastModified": 1699441004,
+        "narHash": "sha256-7v7CH8ZiB2RClPtpgDLfQxeR+14KXoFl2qTdXd27sL0=",
         "ref": "refs/heads/master",
-        "rev": "efaf89d12a6811f0e00034444904b8d169f0fa34",
-        "revCount": 48,
+        "rev": "226003d10c2d192b088f7c3c9ee7ca549c421a9c",
+        "revCount": 52,
         "type": "git",
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       },
@@ -144,11 +144,11 @@
     "nixpkgs-lib": {
       "locked": {
         "dir": "lib",
-        "lastModified": 1696019113,
-        "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
+        "lastModified": 1701253981,
+        "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
+        "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58",
         "type": "github"
       },
       "original": {
@@ -161,16 +161,16 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1697501549,
-        "narHash": "sha256-4tmVqG7+087pOOSUKHGQCWEwC3XJ3tjzGl3Q2vLgoPk=",
+        "lastModified": 1701253981,
+        "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "fe082e6d4bdd896b0e195cbefa15fe77715b044d",
+        "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "haskell-updates",
+        "ref": "nixos-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -193,11 +193,11 @@
     },
     "nixpkgs_4": {
       "locked": {
-        "lastModified": 1698924604,
-        "narHash": "sha256-GCFbkl2tj8fEZBZCw3Tc0AkGo0v+YrQlohhEGJ/X4s0=",
+        "lastModified": 1701253981,
+        "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "fa804edfb7869c9fb230e174182a8a1a7e512c40",
+        "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58",
         "type": "github"
       },
       "original": {
diff --git a/horizon.dhall b/horizon.dhall
index 0acd00f0ea2f469bd205cde25ad254ad7245e749..4c7b4e2acd8f13507730666a28452039ffa9a8d1 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -8,9 +8,9 @@ let packages =
       , attoparsec-iso8601 = H.callHackage "attoparsec-iso8601" "1.1.0.1"
       , bin = H.callHackage "bin" "0.1.3"
       , binary-orphans = H.callHackage "binary-orphans" "1.0.4.1"
-      , brick = H.callHackage "brick" "1.10"
+      , brick = H.callHackage "brick" "2.1.1"
       , bytes = H.callHackage "bytes" "0.17.3"
-      , bytestring-lexing = H.callHackage "bytestring-lexing" "0.5.0.10"
+      , bytestring-lexing = H.callHackage "bytestring-lexing" "0.5.0.11"
       , cassava = H.callHackage "cassava" "0.5.3.0"
       , chell = H.callHackage "chell" "0.5.0.2"
       , chell-quickcheck = H.callHackage "chell-quickcheck" "0.2.5.4"
@@ -71,7 +71,7 @@ let packages =
       , mtl-compat = H.callHackage "mtl-compat" "0.2.2"
       , network-info = H.callHackage "network-info" "0.2.1"
       , newtype = H.callHackage "newtype" "0.2.2.0"
-      , openapi3 = H.callHackage "openapi3" "3.2.3"
+      , openapi3 = H.callHackage "openapi3" "3.2.4"
       , optics = H.callHackage "optics" "0.4.2.1"
       , optics-core = H.callHackage "optics-core" "0.4.1.1"
       , optics-extra = H.callHackage "optics-extra" "0.4.2.1"
@@ -86,22 +86,14 @@ let packages =
       , persistent-test = H.callHackage "persistent-test" "2.13.1.3"
       , polyparse = H.callHackage "polyparse" "1.13"
       , polysemy = H.callHackage "polysemy" "1.9.1.3"
-      , polysemy-plugin =
-          H.callGit
-            "https://github.com/locallycompact/polysemy"
-            "f42c55de0a214bcd6e604be55a8be1e84dd877cb"
-            (Some "polysemy-plugin/")
+      , polysemy-plugin = H.callHackage "polysemy-plugin" "0.4.5.1"
       , port-utils = H.callHackage "port-utils" "0.2.1.0"
       , postgres-options = H.callHackage "postgres-options" "0.2.1.0"
       , postgresql-libpq = H.callHackage "postgresql-libpq" "0.10.0.0"
       , postgresql-simple = H.callHackage "postgresql-simple" "0.7.0.0"
       , protolude = H.callHackage "protolude" "0.3.3"
       , quiet = H.callHackage "quiet" "0.2"
-      , recursion-schemes =
-          H.callGit
-            "https://github.com/recursion-schemes/recursion-schemes"
-            "cc2e88c3400a6548e975830c9addb12ab087545f"
-            (None H.Subdir)
+      , recursion-schemes = H.callHackage "recursion-schemes" "5.2.2.5"
       , regex-compat = H.callHackage "regex-compat" "0.95.2.1"
       , resource-pool = H.callHackage "resource-pool" "0.4.0.0"
       , rio = H.callHackage "rio" "0.1.22.0"
@@ -136,11 +128,10 @@ let packages =
       , system-filepath = H.callHackage "system-filepath" "0.4.14"
       , tagsoup = H.callHackage "tagsoup" "0.14.8"
       , tasty-wai = H.callHackage "tasty-wai" "0.1.2.0"
-      , th-abstraction = H.callHackage "th-abstraction" "0.6.0.0"
       , th-extras =
           H.callGit
-            "https://github.com/erikd/th-extras"
-            "b0f1907d6aa887b77339d85ba8aed25846f7ea13"
+            "https://github.com/mokus0/th-extras"
+            "962fbbd729635c6f3c5379b1639bbd11d8f6ca5a"
             (None H.Subdir)
       , tmp-postgres =
           H.callGit
@@ -152,25 +143,22 @@ let packages =
       , uri-bytestring = H.callHackage "uri-bytestring" "0.3.3.1"
       , uuid = H.callHackage "uuid" "1.3.15"
       , vinyl = H.callHackage "vinyl" "0.14.3"
-      , vty = H.callHackage "vty" "5.39"
+      , vty = H.callHackage "vty" "6.1"
+      , vty-crossplatform = H.callHackage "vty-crossplatform" "0.4.0.0"
+      , vty-unix = H.callHackage "vty-unix" "0.2.0.0"
       , wai-app-static = H.callHackage "wai-app-static" "3.1.8"
       , wai-extra = H.callHackage "wai-extra" "3.1.13.0"
-      , webdriver =
-          H.callGit
-            "https://github.com/NorfairKing/haskell-webdriver"
-            "693d286b318a86a803e9a95ffc32f048bda18a19"
-            (None H.Subdir)
+      , webdriver = H.callHackage "webdriver" "0.12.0.0"
       , xml-conduit = H.callHackage "xml-conduit" "1.9.1.3"
       , xml-types = H.callHackage "xml-types" "0.3.8"
       , xmlgen = H.callHackage "xmlgen" "0.6.2.2"
       , xss-sanitize = H.callHackage "xss-sanitize" "0.3.7.2"
       , yesod = H.callHackage "yesod" "1.6.2.1"
-      , yesod-core = H.callHackage "yesod-core" "1.6.24.5"
+      , yesod-core = H.callHackage "yesod-core" "1.6.25.1"
       , yesod-form = H.callHackage "yesod-form" "1.7.6"
       , yesod-persistent = H.callHackage "yesod-persistent" "1.6.0.8"
       , yesod-test = H.callHackage "yesod-test" "1.6.16"
       , zip-archive = H.callHackage "zip-archive" "0.4.3"
-      , zlib = H.callHackage "zlib" "0.6.3.0"
       }
 
 in  H.HorizonExport.MakeOverlay
diff --git a/horizon.lock b/horizon.lock
index 82dc1def6951297e16948ad1f57ed8a04aaf36ba..8c484850f0460f7d82e16a3f013a0dfc620dd3ba 100644
--- a/horizon.lock
+++ b/horizon.lock
@@ -24,7 +24,7 @@
   }
 , { mapKey = "brick"
   , mapValue =
-      "5f0258cc6aba7cb985b87f58fe5410f315b3c69902202d3a87bfb2d73be9a9e7"
+      "ed7469636ef9624dff841a78ab8d43737e9568aa2529f7beb2d51db43d8135ce"
   }
 , { mapKey = "bytes"
   , mapValue =
@@ -32,7 +32,7 @@
   }
 , { mapKey = "bytestring-lexing"
   , mapValue =
-      "b8e263855267a76bb49ed09cfd3760cc363536658a8a33eb344383008dcaabcd"
+      "1b4ac5e9746b5200c8f592887eda6c504c3f9bc476c3db2dfeb297c027bdaca8"
   }
 , { mapKey = "cassava"
   , mapValue =
@@ -248,7 +248,7 @@
   }
 , { mapKey = "openapi3"
   , mapValue =
-      "586453a86c7c61288684ed1f1597c4a115d7259e5ec2cf244c5123909f6122df"
+      "c0e1d7399351a660064b6220840e59bf3a994eb792891953fb7e60eceddccca1"
   }
 , { mapKey = "optics"
   , mapValue =
@@ -308,7 +308,7 @@
   }
 , { mapKey = "polysemy-plugin"
   , mapValue =
-      "de46091c19798fbca3c3ac1997198ec1a35d083ad18b2241916c56e46e924631"
+      "9136fe91aa29d99670d544093f6da19d18ae1b6077c821a3a3bc862abb2bef4a"
   }
 , { mapKey = "port-utils"
   , mapValue =
@@ -336,7 +336,7 @@
   }
 , { mapKey = "recursion-schemes"
   , mapValue =
-      "659eb98fb3a44252690d7651fc083e365951e062ebdef118c68e478e99276a3a"
+      "d71d344b1a2ecee364188ea4ab61de9a0ca98fd1d217caf43696a14345c2c992"
   }
 , { mapKey = "regex-compat"
   , mapValue =
@@ -458,13 +458,9 @@
   , mapValue =
       "b0032bfc26bd887a5fac289fed401595fdd55343d97407d50cac51765885f228"
   }
-, { mapKey = "th-abstraction"
-  , mapValue =
-      "b878b21c725d7637b3532e783c20bae1ba74a55e00616d48c4c2f5a1ad737df8"
-  }
 , { mapKey = "th-extras"
   , mapValue =
-      "038996a0720171971ad3581d1339c8b3e6c5dcad7bc0acc8871dfa642e792c9d"
+      "f25dfcd49a715a805cef1f66b31b92104b770e517fb85ca20bf4440c0ce83664"
   }
 , { mapKey = "tmp-postgres"
   , mapValue =
@@ -492,7 +488,15 @@
   }
 , { mapKey = "vty"
   , mapValue =
-      "086c8d6fad552672b00e7430a3fc1955cb13a42926d1a7c8ff798ae9f94622de"
+      "a9a89227a84e7445d224a9c82bf6a8ef6641cfc7f7d55a5fbdd566fdf9256225"
+  }
+, { mapKey = "vty-crossplatform"
+  , mapValue =
+      "0f9a32c4ea68b0481ad542a9268d16259563fe2dcb8583da4bd458666af85c1f"
+  }
+, { mapKey = "vty-unix"
+  , mapValue =
+      "5a5db2b050840b390ffaad36515484aeb7a54124ee8b60d699f83baf2a66eea7"
   }
 , { mapKey = "wai-app-static"
   , mapValue =
@@ -504,7 +508,7 @@
   }
 , { mapKey = "webdriver"
   , mapValue =
-      "184d574d30826834cbacaa04d2aa8246ab2ccb04f931fa9ca6b47df97c51bf13"
+      "cae12a27dd7610292d240e124c3872f112d25e5d58242d47469ba28d7af52358"
   }
 , { mapKey = "xml-conduit"
   , mapValue =
@@ -528,7 +532,7 @@
   }
 , { mapKey = "yesod-core"
   , mapValue =
-      "ee0aed865a9f38d26852ae18cb77de9607ac461b0ff3bf86715a000f33af41fc"
+      "629be36ddc45165a517751546b96d7b41e80537cfc66e97b3b1cb22e00567e4d"
   }
 , { mapKey = "yesod-form"
   , mapValue =
@@ -546,8 +550,4 @@
   , mapValue =
       "a7a002a414b4837901acea9735a7165ebc9dcf370be09295bbe4f2406ed28754"
   }
-, { mapKey = "zlib"
-  , mapValue =
-      "215fe638a3d2b13a57e51715ff23e77870555cd439a088cba30ca6d51e94694f"
-  }
 ]
\ No newline at end of file
diff --git a/overlay.nix b/overlay.nix
index 010722b33e87798cff0d68f510d7968006a19f82..25ec7eb3ebce427ff71b1c7e8df4b8050669a453 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -231,8 +231,6 @@ final: prev: with pkgs.haskell.lib; {
 
   tasty-wai = final.callPackage (./pkgs/tasty-wai.nix) { };
 
-  th-abstraction = final.callPackage (./pkgs/th-abstraction.nix) { };
-
   th-extras = final.callPackage (./pkgs/th-extras.nix) { };
 
   tmp-postgres = final.callPackage (./pkgs/tmp-postgres.nix) { };
@@ -249,6 +247,10 @@ final: prev: with pkgs.haskell.lib; {
 
   vty = final.callPackage (./pkgs/vty.nix) { };
 
+  vty-crossplatform = final.callPackage (./pkgs/vty-crossplatform.nix) { };
+
+  vty-unix = final.callPackage (./pkgs/vty-unix.nix) { };
+
   wai-app-static = final.callPackage (./pkgs/wai-app-static.nix) { };
 
   wai-extra = final.callPackage (./pkgs/wai-extra.nix) { };
@@ -275,6 +277,4 @@ final: prev: with pkgs.haskell.lib; {
 
   zip-archive = final.callPackage (./pkgs/zip-archive.nix) { };
 
-  zlib = final.callPackage (./pkgs/zlib.nix) { };
-
 }
diff --git a/pkgs/brick.nix b/pkgs/brick.nix
index f4c3f2ca017e3bcf4859f276a91145472f675a7d..e0391de13ec4832ca63bc3fd25bdefa01ab920a1 100644
--- a/pkgs/brick.nix
+++ b/pkgs/brick.nix
@@ -1,26 +1,28 @@
 { mkDerivation, QuickCheck, base, bimap, bytestring, config-ini
 , containers, data-clist, deepseq, directory, exceptions, filepath
 , lib, microlens, microlens-mtl, microlens-th, mtl, stm
-, template-haskell, text, text-zipper, unix, vector, vty, word-wrap
+, template-haskell, text, text-zipper, unix-compat, vector, vty
+, vty-crossplatform, vty-unix, word-wrap
 }:
 mkDerivation {
   pname = "brick";
-  version = "1.10";
-  sha256 = "79190c167c1767e79341fd88ff4cf2deb698286cba0c67bd221b14828bdf458f";
+  version = "2.1.1";
+  sha256 = "30280d6f7130eb3e6cbf5a55465a06a825169cb536d3b2e91883aec23532b31e";
   isLibrary = true;
   isExecutable = true;
   enableSeparateDataOutput = false;
   libraryHaskellDepends = [
     base bimap bytestring config-ini containers data-clist deepseq
     directory exceptions filepath microlens microlens-mtl microlens-th
-    mtl stm template-haskell text text-zipper unix vector vty word-wrap
+    mtl stm template-haskell text text-zipper unix-compat vector vty
+    vty-crossplatform word-wrap
   ];
   testHaskellDepends = [
-    base containers microlens QuickCheck vector vty
+    base containers microlens QuickCheck vector vty vty-unix
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/bytestring-lexing.nix b/pkgs/bytestring-lexing.nix
index 82255918db46c45d671e0b5c354b1e38245570bb..f7a268f0f75ef08288cbd91400c340475b510442 100644
--- a/pkgs/bytestring-lexing.nix
+++ b/pkgs/bytestring-lexing.nix
@@ -3,8 +3,8 @@
 }:
 mkDerivation {
   pname = "bytestring-lexing";
-  version = "0.5.0.10";
-  sha256 = "262c0e77ad85940e49718e24102f4ca2cf1a3867685fd1f1db7c0f31b48e7857";
+  version = "0.5.0.11";
+  sha256 = "5c0289536063327210cd3f20333ab9a06587b2eaf4b20108f32d98a8fef41b9b";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -14,7 +14,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/openapi3.nix b/pkgs/openapi3.nix
index fa8b0a88eefba9a17dd50fdacd2130911608fe69..0b32e99c29b27b00bbe9228c9103a67ef1ebdab2 100644
--- a/pkgs/openapi3.nix
+++ b/pkgs/openapi3.nix
@@ -8,10 +8,10 @@
 }:
 mkDerivation {
   pname = "openapi3";
-  version = "3.2.3";
-  sha256 = "d4e4570955bcc66fde72c3070bc3ef4bcf54b82ef71448f6541256d79dfa736b";
-  revision = "4";
-  editedCabalFile = "1wpdmp3xp948052y325h64smp6l809r8mcvh220bfbrb4vrbk43b";
+  version = "3.2.4";
+  sha256 = "dbcb90464b4712a03c37fa3fcaca3a6784ace2794d85730a8a8c5d9b3ea14ba0";
+  revision = "1";
+  editedCabalFile = "08ikd506fxz3pllg5w8lx9yn9qfqlx9il9xwzz7s17yxn5k3xmnk";
   isLibrary = true;
   isExecutable = true;
   enableSeparateDataOutput = false;
@@ -33,7 +33,7 @@ mkDerivation {
   testToolDepends = [ hspec-discover ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/polysemy-plugin.nix b/pkgs/polysemy-plugin.nix
index bb471de2f22f33998cab9bb2bdd35a2152ff3c20..a37f04e2ba9dfb61da49e23e17efcd394f729aef 100644
--- a/pkgs/polysemy-plugin.nix
+++ b/pkgs/polysemy-plugin.nix
@@ -1,18 +1,12 @@
 { mkDerivation, Cabal, base, cabal-doctest, containers, doctest
-, fetchgit, ghc, ghc-tcplugins-extra, hspec, hspec-discover
+, ghc, ghc-tcplugins-extra, hspec, hspec-discover
 , inspection-testing, lib, polysemy, should-not-typecheck, syb
 , transformers
 }:
 mkDerivation {
   pname = "polysemy-plugin";
   version = "0.4.5.1";
-  src = fetchgit {
-    url = "https://github.com/locallycompact/polysemy";
-    sha256 = "1czh24d57lwhn4d3jxa5ifrxnkid2hlkayl3hwmd0nia0hv4sg51";
-    rev = "f42c55de0a214bcd6e604be55a8be1e84dd877cb";
-    fetchSubmodules = true;
-  };
-  postUnpack = "sourceRoot+=/polysemy-plugin/; echo source root reset to $sourceRoot";
+  sha256 = "d7ac12b678daff450bd8ffd5e4ac2a9872775be8b5fa325f9a7da49a127fcf18";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -28,7 +22,7 @@ mkDerivation {
   testToolDepends = [ hspec-discover ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/recursion-schemes.nix b/pkgs/recursion-schemes.nix
index be241c69f2c86e18e52323dbacbeaaa971d06d4d..b5a09f030be693dcab93c405f487bf2e04318610 100644
--- a/pkgs/recursion-schemes.nix
+++ b/pkgs/recursion-schemes.nix
@@ -1,16 +1,10 @@
-{ mkDerivation, HUnit, base, comonad, containers, data-fix
-, fetchgit, free, lib, template-haskell, th-abstraction
-, transformers
+{ mkDerivation, HUnit, base, comonad, containers, data-fix, free
+, lib, template-haskell, th-abstraction, transformers
 }:
 mkDerivation {
   pname = "recursion-schemes";
-  version = "5.2.2.4";
-  src = fetchgit {
-    url = "https://github.com/recursion-schemes/recursion-schemes";
-    sha256 = "06shyihy6cpblv3pf18xgdfjgxqw2y2awvpcy33r76fr642gdvgn";
-    rev = "cc2e88c3400a6548e975830c9addb12ab087545f";
-    fetchSubmodules = true;
-  };
+  version = "5.2.2.5";
+  sha256 = "5cb79bd5d6dd5a0adf61ccc37a93c4fcfaeb6077f60a975c895feb32744d97ec";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -21,7 +15,7 @@ mkDerivation {
   testHaskellDepends = [ base HUnit template-haskell transformers ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/th-abstraction.nix b/pkgs/th-abstraction.nix
deleted file mode 100644
index f08d2e22887c5d7e0755a561d1703271d3c705b4..0000000000000000000000000000000000000000
--- a/pkgs/th-abstraction.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ mkDerivation, base, containers, ghc-prim, lib, template-haskell
-}:
-mkDerivation {
-  pname = "th-abstraction";
-  version = "0.6.0.0";
-  sha256 = "69ea6eca1f0c00b6e1e1f8329c908ec76e73855e2ce6e91ace2f8bbf92c51a30";
-  revision = "1";
-  editedCabalFile = "0z7cn1qcnkslajjqcma23sh0qglbpvb5y9bgbzfzqal1lak9z5fq";
-  isLibrary = true;
-  isExecutable = false;
-  enableSeparateDataOutput = false;
-  libraryHaskellDepends = [
-    base containers ghc-prim template-haskell
-  ];
-  testHaskellDepends = [ base containers template-haskell ];
-  enableLibraryProfiling = true;
-  enableExecutableProfiling = true;
-  doHaddock = false;
-  jailbreak = true;
-  doCheck = false;
-  doBenchmark = false;
-  hyperlinkSource = false;
-  homepage = "https://github.com/glguy/th-abstraction";
-  description = "Nicer interface for reified information about data types";
-  license = lib.licenses.isc;
-  broken = false;
-}
\ No newline at end of file
diff --git a/pkgs/th-extras.nix b/pkgs/th-extras.nix
index 9a54d3735a522635bd8895b873f1da8b194a9919..8e7d19df2f61fc4823596e0b51aecac8476188bf 100644
--- a/pkgs/th-extras.nix
+++ b/pkgs/th-extras.nix
@@ -5,9 +5,9 @@ mkDerivation {
   pname = "th-extras";
   version = "0.0.0.6";
   src = fetchgit {
-    url = "https://github.com/erikd/th-extras";
-    sha256 = "14jzzf2ikqhw7164rsfc0r1h4zw4nsmzsi79a29my19dzbcd9xd5";
-    rev = "b0f1907d6aa887b77339d85ba8aed25846f7ea13";
+    url = "https://github.com/mokus0/th-extras";
+    sha256 = "04frwz80m7v5hwmkv6q7dicq8db2ja0b6zpswra0ka6dhxka01w8";
+    rev = "962fbbd729635c6f3c5379b1639bbd11d8f6ca5a";
     fetchSubmodules = true;
   };
   isLibrary = true;
@@ -18,7 +18,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/vty-crossplatform.nix b/pkgs/vty-crossplatform.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e1cb81907436bfb55105f04eeb69d3e025043d80
--- /dev/null
+++ b/pkgs/vty-crossplatform.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib, vty, vty-unix }:
+mkDerivation {
+  pname = "vty-crossplatform";
+  version = "0.4.0.0";
+  sha256 = "35e5433512b883e83aa8bb8c3475221174445a87e51f162b2ce07f9cf1eb3c1a";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base vty vty-unix ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Cross-platform support for Vty";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/vty-unix.nix b/pkgs/vty-unix.nix
new file mode 100644
index 0000000000000000000000000000000000000000..02a0ffc585cda780e04cc4bde6d060a5fb083461
--- /dev/null
+++ b/pkgs/vty-unix.nix
@@ -0,0 +1,29 @@
+{ mkDerivation, ansi-terminal, base, blaze-builder, bytestring
+, containers, deepseq, lib, microlens, microlens-mtl, microlens-th
+, mtl, parsec, stm, terminfo, transformers, unix, utf8-string
+, vector, vty
+}:
+mkDerivation {
+  pname = "vty-unix";
+  version = "0.2.0.0";
+  sha256 = "c2ab67e09edc4bade04e269adc059320e83f68b31e428d11a69b20c4f161ddc1";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base blaze-builder bytestring containers deepseq microlens
+    microlens-mtl microlens-th mtl parsec stm terminfo transformers
+    unix utf8-string vector vty
+  ];
+  executableHaskellDepends = [ ansi-terminal base vty ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = true;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Unix backend for Vty";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
\ No newline at end of file
diff --git a/pkgs/vty.nix b/pkgs/vty.nix
index 7ab7042d9ce4b28b466ca55411f6e456dff6b7d9..79349037a057ee1de43aa707a47ec46cd02af581 100644
--- a/pkgs/vty.nix
+++ b/pkgs/vty.nix
@@ -1,26 +1,24 @@
-{ mkDerivation, ansi-terminal, base, binary, blaze-builder
-, bytestring, containers, deepseq, directory, filepath, lib
-, microlens, microlens-mtl, microlens-th, mtl, parsec, stm
-, terminfo, text, transformers, unix, utf8-string, vector
+{ mkDerivation, base, binary, blaze-builder, bytestring, deepseq
+, directory, filepath, lib, microlens, microlens-mtl, microlens-th
+, mtl, parsec, stm, text, utf8-string, vector
 }:
 mkDerivation {
   pname = "vty";
-  version = "5.39";
-  sha256 = "e5febb7ed7c4553b3e0926dfde2646c9cb1d924ba41a1e8ae1cda1fe52253274";
+  version = "6.1";
+  sha256 = "2fc64b7d09f16bce9c6456e234e6aca3a86be9a40f360435499fc087b94f7bd6";
+  revision = "1";
+  editedCabalFile = "1wy4vfyr4nbb8ycfx80yrp59ggigcbfrsh5w1qk768y04d114kaj";
   isLibrary = true;
-  isExecutable = true;
+  isExecutable = false;
   enableSeparateDataOutput = false;
   libraryHaskellDepends = [
-    ansi-terminal base binary blaze-builder bytestring containers
-    deepseq directory filepath microlens microlens-mtl microlens-th mtl
-    parsec stm terminfo text transformers unix utf8-string vector
-  ];
-  executableHaskellDepends = [
-    base containers directory filepath microlens microlens-mtl mtl
+    base binary blaze-builder bytestring deepseq directory filepath
+    microlens microlens-mtl microlens-th mtl parsec stm text
+    utf8-string vector
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/webdriver.nix b/pkgs/webdriver.nix
index f1dffcf59a1efe46ae6cb5b47891589f63b04e48..f57e35612e141441b0734dfb92c5a786ddc62926 100644
--- a/pkgs/webdriver.nix
+++ b/pkgs/webdriver.nix
@@ -1,19 +1,14 @@
 { mkDerivation, aeson, attoparsec, attoparsec-aeson, base
 , base64-bytestring, bytestring, call-stack, data-default-class
-, directory, directory-tree, exceptions, fetchgit, filepath
-, http-client, http-types, lib, lifted-base, monad-control, network
-, network-uri, scientific, temporary, text, time, transformers
+, directory, directory-tree, exceptions, filepath, http-client
+, http-types, lib, lifted-base, monad-control, network, network-uri
+, scientific, temporary, text, time, transformers
 , transformers-base, unordered-containers, vector, zip-archive
 }:
 mkDerivation {
   pname = "webdriver";
-  version = "0.11.0.0";
-  src = fetchgit {
-    url = "https://github.com/NorfairKing/haskell-webdriver";
-    sha256 = "12zif425b0xaqmaqf451nn7vlwkj23a7vv6sq4y41jc1q6mmz6vd";
-    rev = "693d286b318a86a803e9a95ffc32f048bda18a19";
-    fetchSubmodules = true;
-  };
+  version = "0.12.0.0";
+  sha256 = "a488a2754901d0fa05b3c9743f79d53a1db1b01c6b21ef1f77395bd69a88a4fc";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -26,7 +21,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/yesod-core.nix b/pkgs/yesod-core.nix
index 76dafb791b8ea2bef4c093715f459997927daaa8..e172a8f834e02900780b4fb993efb049532d22cd 100644
--- a/pkgs/yesod-core.nix
+++ b/pkgs/yesod-core.nix
@@ -10,8 +10,8 @@
 }:
 mkDerivation {
   pname = "yesod-core";
-  version = "1.6.24.5";
-  sha256 = "c24f278b7fb917013addc516bbf7a876c36100732b4f14b94e926b984ccb8823";
+  version = "1.6.25.1";
+  sha256 = "ac3151a7410ca5ee81fcfd46a79de786680295a428f1ab682610b84030770c45";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -35,7 +35,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/zlib.nix b/pkgs/zlib.nix
deleted file mode 100644
index 4c6b20bf81ed89e80570fa6962d50bf3663bda8e..0000000000000000000000000000000000000000
--- a/pkgs/zlib.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ mkDerivation, QuickCheck, base, bytestring, lib, tasty
-, tasty-quickcheck, zlib
-}:
-mkDerivation {
-  pname = "zlib";
-  version = "0.6.3.0";
-  sha256 = "9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da";
-  revision = "3";
-  editedCabalFile = "0hgh4rn9qinckiiwdnbp9rn0kpc06x18466i713971j03zf8wang";
-  isLibrary = true;
-  isExecutable = false;
-  enableSeparateDataOutput = false;
-  libraryHaskellDepends = [ base bytestring ];
-  librarySystemDepends = [ zlib ];
-  testHaskellDepends = [
-    base bytestring QuickCheck tasty tasty-quickcheck
-  ];
-  enableLibraryProfiling = true;
-  enableExecutableProfiling = true;
-  doHaddock = false;
-  jailbreak = true;
-  doCheck = false;
-  doBenchmark = false;
-  hyperlinkSource = false;
-  description = "Compression and decompression in the gzip and zlib formats";
-  license = lib.licenses.bsd3;
-  broken = false;
-}
\ No newline at end of file