diff --git a/develop/flake.lock b/develop/flake.lock
new file mode 100644
index 0000000000000000000000000000000000000000..9cc0745d36a2099b0dcbc70704fa62a29ba31b93
--- /dev/null
+++ b/develop/flake.lock
@@ -0,0 +1,1352 @@
+{
+  "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_7",
+        "get-flake": "get-flake_3",
+        "horizon-platform": "horizon-platform_2",
+        "lint-utils": "lint-utils_6",
+        "nixpkgs": "nixpkgs_11"
+      },
+      "locked": {
+        "lastModified": 1680415307,
+        "narHash": "sha256-r5AlSRqlamRyIigCkA+Hq2ZkqFt+lE0bfOGMcQWLUlg=",
+        "ref": "refs/heads/master",
+        "rev": "42f4da076ee81c8e245731bf6fdf57cb25db3604",
+        "revCount": 22,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/shells/crazyshell"
+      },
+      "original": {
+        "type": "git",
+        "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"
+      },
+      "locked": {
+        "lastModified": 1696343447,
+        "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-parts_2": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_2"
+      },
+      "locked": {
+        "lastModified": 1680392223,
+        "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-parts_3": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_3"
+      },
+      "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_4": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_4"
+      },
+      "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-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=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "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,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_3": {
+      "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_4": {
+      "inputs": {
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1694529238,
+        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+        "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=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_7": {
+      "locked": {
+        "lastModified": 1678901627,
+        "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_8": {
+      "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_9": {
+      "locked": {
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "get-flake": {
+      "locked": {
+        "lastModified": 1673819588,
+        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
+        "owner": "ursi",
+        "repo": "get-flake",
+        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ursi",
+        "repo": "get-flake",
+        "type": "github"
+      }
+    },
+    "get-flake_2": {
+      "locked": {
+        "lastModified": 1673819588,
+        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
+        "owner": "ursi",
+        "repo": "get-flake",
+        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ursi",
+        "repo": "get-flake",
+        "type": "github"
+      }
+    },
+    "get-flake_3": {
+      "locked": {
+        "lastModified": 1673819588,
+        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
+        "owner": "ursi",
+        "repo": "get-flake",
+        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ursi",
+        "repo": "get-flake",
+        "type": "github"
+      }
+    },
+    "get-flake_4": {
+      "locked": {
+        "lastModified": 1673819588,
+        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
+        "owner": "ursi",
+        "repo": "get-flake",
+        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ursi",
+        "repo": "get-flake",
+        "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_4",
+        "get-flake": "get-flake_2",
+        "lint-utils": "lint-utils_3",
+        "nixpkgs": "nixpkgs_7"
+      },
+      "locked": {
+        "lastModified": 1697043887,
+        "narHash": "sha256-+ts9eNlYP5EuPXIIrJHbCn+1+5gjU9BphDHs6VNyVec=",
+        "ref": "refs/heads/master",
+        "rev": "f8238d98b143e2b0e7d2044a587df79293b255af",
+        "revCount": 1109,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
+      }
+    },
+    "horizon-core_2": {
+      "inputs": {
+        "flake-parts": "flake-parts_6",
+        "get-flake": "get-flake_5",
+        "lint-utils": "lint-utils_7",
+        "nixpkgs": "nixpkgs_13"
+      },
+      "locked": {
+        "lastModified": 1697043887,
+        "narHash": "sha256-+ts9eNlYP5EuPXIIrJHbCn+1+5gjU9BphDHs6VNyVec=",
+        "ref": "refs/heads/master",
+        "rev": "f8238d98b143e2b0e7d2044a587df79293b255af",
+        "revCount": 1109,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
+      }
+    },
+    "horizon-gen-nix": {
+      "inputs": {
+        "flake-utils": "flake-utils_4",
+        "horizon-core": "horizon-core",
+        "lint-utils": "lint-utils_4",
+        "nixpkgs": "nixpkgs_8"
+      },
+      "locked": {
+        "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.11.0",
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix"
+      }
+    },
+    "horizon-platform": {
+      "inputs": {
+        "flake-parts": "flake-parts_3",
+        "get-flake": "get-flake",
+        "horizon-shell-flake": "horizon-shell-flake",
+        "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,
+        "narHash": "sha256-f6qp5jJFbvt/QU82s82C99xDs/ib6w7GAqrmXsvLw8M=",
+        "ref": "refs/heads/master",
+        "rev": "d987b5882bd0dc622687920e14398227a482c4db",
+        "revCount": 1060,
+        "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-shell": {
+      "inputs": {
+        "crazyshell": "crazyshell",
+        "flake-utils": "flake-utils_10",
+        "horizon-core": "horizon-core_2",
+        "lint-utils": "lint-utils_8",
+        "nixpkgs": "nixpkgs_14"
+      },
+      "locked": {
+        "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"
+      }
+    },
+    "horizon-shell-flake": {
+      "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"
+      }
+    },
+    "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_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,
+        "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_3": {
+      "inputs": {
+        "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"
+        ]
+      },
+      "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_5": {
+      "inputs": {
+        "flake-utils": "flake-utils_8",
+        "nixpkgs": "nixpkgs_9"
+      },
+      "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_6": {
+      "inputs": {
+        "flake-utils": "flake-utils_9",
+        "nixpkgs": [
+          "horizon-shell",
+          "crazyshell",
+          "nixpkgs"
+        ]
+      },
+      "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_7": {
+      "inputs": {
+        "flake-utils": "flake-utils_11",
+        "nixpkgs": "nixpkgs_12"
+      },
+      "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_8": {
+      "inputs": {
+        "flake-utils": "flake-utils_12",
+        "nixpkgs": [
+          "horizon-shell",
+          "nixpkgs"
+        ]
+      },
+      "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"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1696983906,
+        "narHash": "sha256-L7GyeErguS7Pg4h8nK0wGlcUTbfUMDu+HMf1UcyP72k=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "bd1cde45c77891214131cbbea5b1203e485a9d51",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-23.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1696019113,
+        "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "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,
+        "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib_5": {
+      "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_6": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1682879489,
+        "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "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": 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": "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_13": {
+      "locked": {
+        "lastModified": 1686701582,
+        "narHash": "sha256-uCj6bWmhb2RF+kmCP7T5ov5pg3HjksIyv4WDsCHZQyU=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "55843b93856ad113166142cb3d2b01ffdcdf5de0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "haskell-updates",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_14": {
+      "locked": {
+        "lastModified": 1696757521,
+        "narHash": "sha256-cfgtLNCBLFx2qOzRLI6DHfqTdfWI+UbvsKYa3b3fvaA=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "2646b294a146df2781b1ca49092450e8a32814e1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_15": {
+      "locked": {
+        "lastModified": 1697456312,
+        "narHash": "sha256-roiSnrqb5r+ehnKCauPLugoU8S36KgmWraHgRqVYndo=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "ca012a02bf8327be9e488546faecae5e05d7d749",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "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=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_4": {
+      "locked": {
+        "lastModified": 1679198465,
+        "narHash": "sha256-VfXpHpniNWgg7pBzxb20pRX7kqn80LApPDQYTReiFCw=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "5a05160f7671434e1c833b1b01284b876e04eca4",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_5": {
+      "locked": {
+        "lastModified": 1697009197,
+        "narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_6": {
+      "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_7": {
+      "locked": {
+        "lastModified": 1686701582,
+        "narHash": "sha256-uCj6bWmhb2RF+kmCP7T5ov5pg3HjksIyv4WDsCHZQyU=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "55843b93856ad113166142cb3d2b01ffdcdf5de0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "haskell-updates",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_8": {
+      "locked": {
+        "lastModified": 1696757521,
+        "narHash": "sha256-cfgtLNCBLFx2qOzRLI6DHfqTdfWI+UbvsKYa3b3fvaA=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "2646b294a146df2781b1ca49092450e8a32814e1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "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_15"
+      }
+    },
+    "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": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "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",
+  "version": 7
+}
diff --git a/develop/flake.nix b/develop/flake.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6e16f010878856191d14b30bc56c2b8ce84d9b95
--- /dev/null
+++ b/develop/flake.nix
@@ -0,0 +1,96 @@
+{
+
+  nixConfig = {
+    extra-substituters = "https://horizon.cachix.org";
+    extra-trusted-public-keys = "horizon.cachix.org-1:MeEEDRhRZTgv/FFGCv3479/dmJDfJ82G6kfUDxMSAw0=";
+  };
+
+  inputs = {
+    feedback.url = "github:NorfairKing/feedback";
+    flake-parts.url = "github:hercules-ci/flake-parts";
+    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";
+    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+  };
+
+  outputs =
+    inputs@
+    { self
+    , flake-parts
+    , nixpkgs
+    , ...
+    }:
+    flake-parts.lib.mkFlake { inherit inputs; }
+      {
+        systems = [
+          "aarch64-darwin"
+          "x86_64-darwin"
+          "x86_64-linux"
+        ];
+        perSystem = { system, pkgs, ... }:
+          let
+            cachix-push-horizon-ghc-only = pkgs.writers.writeBashBin "cachix-push-horizon-ghc-only" ''
+              nix build -L --json .#packages.x86_64-linux.ghc | ${pkgs.jq}/bin/jq -r '.[].outputs | to_entries[].value' | ${pkgs.cachix}/bin/cachix push horizon
+            '';
+
+            cachix-push-horizon-devour = pkgs.writers.writeBashBin "cachix-push-horizon-devour" ''
+              nix build github:srid/devour-flake -L --no-link --print-out-paths --override-input flake . | xargs cat | ${pkgs.cachix}/bin/cachix push horizon
+            '';
+
+            devour-flake = pkgs.writers.writeBashBin "devour-flake" ''
+              nix build github:srid/devour-flake -L --no-link --print-out-paths --override-input flake . --keep-going
+            '';
+
+            test-template = pkgs.writers.writeBashBin "test-template" ''
+              mkdir temp
+              cd temp
+              nix flake init -t 'git+https://gitlab.horizon-haskell.net/templates/horizon-templates#minimal'
+              git init .
+              git add *
+              nix build github:srid/devour-flake -L --no-link --print-out-paths --override-input flake . --override-input flake/horizon-platform ../ --keep-going
+              cd ..
+              rm temp -rf
+            '';
+
+            run-horizon-gen-nix = pkgs.writers.writeBashBin "run-horizon-gen-nix" ''
+              ${pkgs.cabal-install}/bin/cabal update
+              ${inputs.horizon-gen-nix.packages.${system}.default}/bin/horizon-gen-nix $@;
+            '';
+
+          in
+          {
+
+            apps = {
+              cachix-push-horizon-devour = {
+                type = "app";
+                program = "${cachix-push-horizon-devour}/bin/cachix-push-horizon-devour";
+              };
+              cachix-push-horizon-ghc-only = {
+                type = "app";
+                program = "${cachix-push-horizon-ghc-only}/bin/cachix-push-horizon-ghc-only";
+              };
+              devour-flake = {
+                type = "app";
+                program = "${devour-flake}/bin/devour-flake";
+              };
+              feedback = {
+                type = "app";
+                program = "${inputs.feedback.packages.${system}.default}/bin/feedback";
+              };
+              flake-to-gitlab-ci = inputs.flake-to-gitlab-ci.apps.${system}.default;
+              horizon-gen-nix = inputs.horizon-gen-nix.apps.${system}.default;
+              horizon-shell = inputs.horizon-shell.apps.${system}.default;
+              run-horizon-gen-nix = {
+                program = "${run-horizon-gen-nix}/bin/run-horizon-gen-nix";
+                type = "app";
+              };
+              test-template = {
+                type = "app";
+                program = "${test-template}/bin/test-template";
+              };
+            };
+
+          };
+      };
+}
diff --git a/feedback.yaml b/feedback.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bcc1d0e21dfa23ded3e6e3701c08802c3e9fe650
--- /dev/null
+++ b/feedback.yaml
@@ -0,0 +1,10 @@
+loops:
+  build:
+    command: nix build github:srid/devour-flake -L --no-link --print-out-paths --override-input flake . --keep-going
+    filter:
+      find: '*.nix'
+  check: nix flake check -L
+  gen:
+    command: dhall format horizon.dhall && nix run 'git+https://gitlab.horizon-haskell.net/haskell/horizon-gen-nix?ref=refs/tags/0.10.0' && git add pkgs && nix flake show 
+    filter:
+      find: horizon.dhall
diff --git a/flake.lock b/flake.lock
index 3729395be9653419adecd95019b2c95e794e7f65..6228a585f21303abf7a895065c294abf64aebb60 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,29 @@
         "nixpkgs-lib": "nixpkgs-lib"
       },
       "locked": {
-        "lastModified": 1683560683,
-        "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=",
+        "lastModified": 1698882062,
+        "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "006c75898cf814ef9497252b022e91c946ba8e17",
+        "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-parts_2": {
+      "inputs": {
+        "nixpkgs-lib": "nixpkgs-lib_2"
+      },
+      "locked": {
+        "lastModified": 1698882062,
+        "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
         "type": "github"
       },
       "original": {
@@ -23,11 +41,11 @@
         "systems": "systems"
       },
       "locked": {
-        "lastModified": 1681202837,
-        "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
+        "lastModified": 1694529238,
+        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
+        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
         "type": "github"
       },
       "original": {
@@ -65,50 +83,55 @@
         "type": "github"
       }
     },
-    "get-flake": {
+    "flake-utils_4": {
       "locked": {
-        "lastModified": 1673819588,
-        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
-        "owner": "ursi",
-        "repo": "get-flake",
-        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
         "type": "github"
       },
       "original": {
-        "owner": "ursi",
-        "repo": "get-flake",
+        "owner": "numtide",
+        "repo": "flake-utils",
         "type": "github"
       }
     },
-    "get-flake_2": {
+    "horizon-core": {
+      "inputs": {
+        "flake-parts": "flake-parts_2",
+        "lint-utils": "lint-utils",
+        "nixpkgs": "nixpkgs_2"
+      },
       "locked": {
-        "lastModified": 1673819588,
-        "narHash": "sha256-gRtwKAlu4htvS6dxyZnW3n+vMS1acqnMGVHqxUdETeY=",
-        "owner": "ursi",
-        "repo": "get-flake",
-        "rev": "e0917b6f564aa5acefb1484b5baf76da21746c3c",
-        "type": "github"
+        "lastModified": 1699788548,
+        "narHash": "sha256-9XTNSqYxT3HzVIglLW4UprhVMjyDsZzQY8s0qZDS+nw=",
+        "ref": "lts/ghc-9.4.x",
+        "rev": "3d5cb59b2e770f825f3927f26c279f69a6e2c490",
+        "revCount": 1184,
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
       },
       "original": {
-        "owner": "ursi",
-        "repo": "get-flake",
-        "type": "github"
+        "ref": "lts/ghc-9.4.x",
+        "type": "git",
+        "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
       }
     },
     "horizon-platform": {
       "inputs": {
         "flake-parts": "flake-parts",
-        "get-flake": "get-flake_2",
-        "horizon-shell-flake": "horizon-shell-flake",
-        "lint-utils": "lint-utils",
-        "nixpkgs": "nixpkgs_2"
+        "horizon-core": "horizon-core",
+        "lint-utils": "lint-utils_2",
+        "nixpkgs": "nixpkgs_4"
       },
       "locked": {
-        "lastModified": 1684509807,
-        "narHash": "sha256-TP6vNrr5cvWutgN7cj0xooYL4JGsSdTS/CRlJ5irbeQ=",
+        "lastModified": 1699798357,
+        "narHash": "sha256-nQXFpDYHoy3uh0aGkgsXSOlIOGYbky5dRPNmG8k6FnM=",
         "ref": "refs/heads/master",
-        "rev": "076fb696fc2b78604c931ffc2099e30fb67dbb09",
-        "revCount": 1082,
+        "rev": "f611fc1c4d45a64fe8f23b2eb0dfe0146505157d",
+        "revCount": 1158,
         "type": "git",
         "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-platform"
       },
@@ -117,50 +140,36 @@
         "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-platform"
       }
     },
-    "horizon-shell-flake": {
-      "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"
+    "lint-utils": {
+      "inputs": {
+        "flake-utils": "flake-utils_2",
+        "nixpkgs": "nixpkgs"
       },
-      "original": {
-        "ref": "refs/tags/0.0.8",
-        "type": "git",
-        "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
-      }
-    },
-    "horizon-shell-flake_2": {
-      "flake": false,
       "locked": {
-        "lastModified": 1680415280,
-        "narHash": "sha256-33DGfEUJP56lSAjXMPUdfR8OpL1PFri/Tnwr9EsDb9Q=",
+        "lastModified": 1699441004,
+        "narHash": "sha256-7v7CH8ZiB2RClPtpgDLfQxeR+14KXoFl2qTdXd27sL0=",
         "ref": "refs/heads/master",
-        "rev": "1eadace0dfaab411ad43d874116fa65d4e6aab70",
-        "revCount": 26,
+        "rev": "226003d10c2d192b088f7c3c9ee7ca549c421a9c",
+        "revCount": 52,
         "type": "git",
-        "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
+        "url": "https://gitlab.nixica.dev/nix/lint-utils"
       },
       "original": {
         "type": "git",
-        "url": "https://gitlab.horizon-haskell.net/shells/horizon-shell"
+        "url": "https://gitlab.nixica.dev/nix/lint-utils"
       }
     },
-    "lint-utils": {
+    "lint-utils_2": {
       "inputs": {
-        "flake-utils": "flake-utils_2",
-        "nixpkgs": "nixpkgs"
+        "flake-utils": "flake-utils_3",
+        "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"
       },
@@ -169,10 +178,10 @@
         "url": "https://gitlab.nixica.dev/nix/lint-utils"
       }
     },
-    "lint-utils_2": {
+    "lint-utils_3": {
       "inputs": {
-        "flake-utils": "flake-utils_3",
-        "nixpkgs": "nixpkgs_3"
+        "flake-utils": "flake-utils_4",
+        "nixpkgs": "nixpkgs_5"
       },
       "locked": {
         "lastModified": 1676204115,
@@ -207,11 +216,29 @@
     "nixpkgs-lib": {
       "locked": {
         "dir": "lib",
-        "lastModified": 1682879489,
-        "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=",
+        "lastModified": 1698611440,
+        "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0",
+        "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
+        "type": "github"
+      },
+      "original": {
+        "dir": "lib",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-lib_2": {
+      "locked": {
+        "dir": "lib",
+        "lastModified": 1698611440,
+        "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
         "type": "github"
       },
       "original": {
@@ -224,16 +251,16 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1683968890,
-        "narHash": "sha256-FuNtjMvT07cJydY5NRyRhIni/dEwkSkijmFEdsmqdkA=",
+        "lastModified": 1699099776,
+        "narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "ea11a3977f4cba013d8680667616be827c967ac0",
+        "rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixpkgs-unstable",
+        "ref": "nixos-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -256,11 +283,43 @@
     },
     "nixpkgs_4": {
       "locked": {
-        "lastModified": 1684570954,
-        "narHash": "sha256-FX5y4Sm87RWwfu9PI71XFvuRpZLowh00FQpIJ1WfXqE=",
+        "lastModified": 1699601893,
+        "narHash": "sha256-9f008k1k5SmEAO1ldjO5sQf+oWHFkeK5jhS3Ji3vFyk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3005f20ce0aaa58169cdee57c8aa12e5f1b6e1b3",
+        "rev": "e06c716ef149f466f25e62a836c30b90476e65e5",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_5": {
+      "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_6": {
+      "locked": {
+        "lastModified": 1700612854,
+        "narHash": "sha256-yrQ8osMD+vDLGFX7pcwsY/Qr5PUd6OmDMYJZzZi0+zc=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "19cbff58383a4ae384dea4d1d0c823d72b49d614",
         "type": "github"
       },
       "original": {
@@ -273,11 +332,9 @@
     "root": {
       "inputs": {
         "flake-utils": "flake-utils",
-        "get-flake": "get-flake",
         "horizon-platform": "horizon-platform",
-        "horizon-shell-flake": "horizon-shell-flake_2",
-        "lint-utils": "lint-utils_2",
-        "nixpkgs": "nixpkgs_4"
+        "lint-utils": "lint-utils_3",
+        "nixpkgs": "nixpkgs_6"
       }
     },
     "systems": {
diff --git a/flake.nix b/flake.nix
index 63ffef3b51c13e83c482b1c91409a91f66211fbf..2e2ffd9c0d3edb6b8731e30278be3baf53f04343 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,13 +2,6 @@
   description = "Horizon Haskell: Moon Base";
 
   inputs = {
-    get-flake.url = "github:ursi/get-flake";
-
-    horizon-shell-flake = {
-      url = "git+https://gitlab.horizon-haskell.net/shells/horizon-shell";
-      flake = false;
-    };
-
     horizon-platform.url = "git+https://gitlab.horizon-haskell.net/package-sets/horizon-platform";
 
     lint-utils.url = "git+https://gitlab.homotopic.tech/nix/lint-utils";
@@ -16,61 +9,49 @@
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
   };
 
-  outputs = inputs@
+  outputs =
+    inputs@
     { self
     , flake-utils
-    , get-flake
-    , horizon-shell-flake
     , horizon-platform
     , lint-utils
     , nixpkgs
     , ...
     }:
-    flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
-      let
-        pkgs = import nixpkgs { inherit system; };
-      in
-      with pkgs.lib;
-      let
-        horizon-shell = get-flake horizon-shell-flake;
-
-        overrides = composeManyExtensions [
-          (import ./overlay.nix { inherit pkgs; })
-        ];
-
-        legacyPackages = horizon-platform.legacyPackages.${system}.override {
-          inherit overrides;
-        };
-
-        packages = filterAttrs
-          (n: v: v != null
-            && builtins.typeOf v == "set"
-            && pkgs.lib.hasAttr "type" v
-            && v.type == "derivation"
-            && v.meta.broken == false)
-          legacyPackages;
-
-        devShell = pkgs.mkShell {
-          buildInputs = [
-            horizon-shell.packages.${system}.default
-          ];
-          shellHook = ''
-            horizon-shell
-            exit
-          '';
-        };
-
-      in
-      {
-        checks = with lint-utils.outputs.linters.${system}; {
-          dhall-format = dhall-format { src = self; };
-          nixpkgs-fmt = nixpkgs-fmt { src = self; };
+    flake-utils.lib.eachSystem [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ] (system:
+    let
+      pkgs = import nixpkgs { inherit system; };
+    in
+    with pkgs.lib;
+    let
+      overrides = composeManyExtensions [
+        (import ./overlay.nix { inherit pkgs; })
+      ];
+
+      legacyPackages = horizon-platform.legacyPackages.${system}.extend overrides;
+
+      packages = filterAttrs (_: isDerivation) legacyPackages;
+
+      horizon-hoogle = pkgs.writers.writeBashBin "horizon-hoogle" ''
+        ${legacyPackages.ghcWithHoogle (p: attrValues (packages // { hoogle = null; }))}/bin/hoogle server --local
+      '';
+
+    in
+    {
+
+      apps = {
+        run-hoogle = {
+          type = "app";
+          program = "${horizon-hoogle}/bin/horizon-hoogle";
         };
+      };
 
-        devShells.default = devShell;
+      checks = with lint-utils.outputs.linters.${system}; {
+        dhall-format = dhall-format { src = self; };
+        nixpkgs-fmt = nixpkgs-fmt { src = self; find = "flake.nix"; };
+      };
 
-        inherit legacyPackages;
-        inherit overrides;
-        inherit packages;
-      });
+      inherit legacyPackages;
+      inherit packages;
+    });
 }
diff --git a/horizon.dhall b/horizon.dhall
index f84a3f25b963455b1222401299c23b82758f16f3..bb412f8f804a6bdf0d6455673c97cc696852bfa5 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -3,28 +3,11 @@ let H =
 
 let packages =
       { arrows = H.callHackage "arrows" "0.4.4.2"
-      , clash-ghc =
-          H.callGit
-            "https://github.com/clash-lang/clash-compiler"
-            "8bfb4ec58543e14e968e2c336594a529565996c2"
-            (Some "clash-ghc/")
-      , clash-lib =
-          H.callGit
-            "https://github.com/clash-lang/clash-compiler"
-            "8bfb4ec58543e14e968e2c336594a529565996c2"
-            (Some "clash-lib/")
-      , clash-prelude =
-          H.callGit
-            "https://github.com/clash-lang/clash-compiler"
-            "8bfb4ec58543e14e968e2c336594a529565996c2"
-            (Some "clash-prelude/")
+      , clash-ghc = H.callHackage "clash-ghc" "1.8.1"
+      , clash-lib = H.callHackage "clash-lib" "1.8.1"
+      , clash-prelude = H.callHackage "clash-prelude" "1.8.1"
       , concurrent-supply = H.callHackage "concurrent-supply" "0.1.8"
       , ghc-typelits-extra = H.callHackage "ghc-typelits-extra" "0.4.5"
-      , hint =
-          H.callGit
-            "https://github.com/haskell-hint/hint"
-            "710745eafa6bb8d531f2dfdbc07c50c9b776f0b2"
-            (None H.Subdir)
       , implicit = H.callHackage "implicit" "0.4.0.0"
       , infinite-list = H.callHackage "infinite-list" "0.1"
       , prettyprinter-interp = H.callHackage "prettyprinter-interp" "0.2.0.0"
@@ -33,5 +16,5 @@ let packages =
 in  H.HorizonExport.MakeOverlay
       { overlayFile = "overlay.nix"
       , packagesDir = "pkgs/"
-      , overlay = { compiler = "ghc-9.4.4", packages = toMap packages }
-      }
\ No newline at end of file
+      , overlay = { compiler = "ghc-9.4.7", packages = toMap packages }
+      }
diff --git a/horizon.lock b/horizon.lock
index 8aef4c6a750b1976989e4ab26315cb9790cdb4f3..bea99413416193f4d83bb73c4cc8b2b3ec97c078 100644
--- a/horizon.lock
+++ b/horizon.lock
@@ -1,41 +1,37 @@
 [ { mapKey = "arrows"
   , mapValue =
-      "dcb6822b0e54f0d097f8f17c77580ee56df102fc59abc5454168c42e9842e8d1"
+      "61629974ad0c138c58f7618c87b13dddd3124cce7b4fe201d6ad0c4c00205da8"
   }
 , { mapKey = "clash-ghc"
   , mapValue =
-      "f5f8b21a6219d4560efbd5ee9ba5da9def6eb01f49ae7a751066d95523428e6c"
+      "5db38944fdecf6943ff27f6064a8a1c1fd0415d5b1ad605c73f344d820592329"
   }
 , { mapKey = "clash-lib"
   , mapValue =
-      "77009b87a568bc394cb7e69a76f7c7a9eab9a92096a4be9dc127e855e1a97b55"
+      "295d709b25e667a65683222f9752edfe9a63e104392979128a8a34ca8623d4b6"
   }
 , { mapKey = "clash-prelude"
   , mapValue =
-      "4a79c0b084e9527e4a299815d36a573a75914f55c0b6771113c0ddf47c6dee9c"
+      "41d31ca3b71a6e91ba97f78307c871458827918c5147ceef1df8e880a933ac82"
   }
 , { mapKey = "concurrent-supply"
   , mapValue =
-      "51aab302af5571b96abc8a7ba03152ef7a9161a10557a7267fde100f3c9b34f9"
+      "b4dfdcb5978ea4872b67179990fe06be9b9e46be966a3217af3fc0e993204f62"
   }
 , { mapKey = "ghc-typelits-extra"
   , mapValue =
-      "ee15d4ea7f7968e9f2fe818aa8db9cc565dd3f4246151d545d14034aad32c4c0"
-  }
-, { mapKey = "hint"
-  , mapValue =
-      "05ebe53cce5e2dcdce382af90b95f0af88f24ad0098fe13b360a3a785e49d614"
+      "7b71e464555005470fbd5a29f04663d73162f8c8e03bc31e44c2d2d0679dd0f7"
   }
 , { mapKey = "implicit"
   , mapValue =
-      "bc2953c9765b7edf8aec6b8cb10cdcb68cdb563b42c0a2c0c96b4be435af325f"
+      "b33ea310718c175ffb4a5ba6dfc2b7a56edfa424d12986d077123b6bbd7eebf0"
   }
 , { mapKey = "infinite-list"
   , mapValue =
-      "dddf9722e1d489b3ef18ab67deaa01e6f557a712013b35df9caed824cb41de99"
+      "e8b61b397b271279da684115d6497702a722441a91b41205d3bb524559864016"
   }
 , { mapKey = "prettyprinter-interp"
   , mapValue =
-      "649a3884a22b8fb598aa2342578082629bd40a4df7b77c1f766adbb071eb48d0"
+      "497ef67bcdad9c0ab717b5da15967cf12256eb6913405358a298865fe8ad99c0"
   }
 ]
\ No newline at end of file
diff --git a/overlay.nix b/overlay.nix
index ceb984f83a5cf179ec1c021da188d3599590102f..881e08fd59828e2feaaaa1acf9d2805f19779133 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -13,8 +13,6 @@ final: prev: with pkgs.haskell.lib; {
 
   ghc-typelits-extra = final.callPackage (./pkgs/ghc-typelits-extra.nix) { };
 
-  hint = final.callPackage (./pkgs/hint.nix) { };
-
   implicit = final.callPackage (./pkgs/implicit.nix) { };
 
   infinite-list = final.callPackage (./pkgs/infinite-list.nix) { };
diff --git a/pkgs/arrows.nix b/pkgs/arrows.nix
index 2cdb5e3ef57faa64d85df1bd292688d9b70f264a..2757cfb2a2da6392d81de803bfb7e44d5d4a735a 100644
--- a/pkgs/arrows.nix
+++ b/pkgs/arrows.nix
@@ -9,7 +9,7 @@ mkDerivation {
   libraryHaskellDepends = [ base Stream ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/clash-ghc.nix b/pkgs/clash-ghc.nix
index ebcdc89d51b2148e90bf8bb0de6a53e7a09ec345..bd5619458c5d5687f84bc07458b380c518a1e6ce 100644
--- a/pkgs/clash-ghc.nix
+++ b/pkgs/clash-ghc.nix
@@ -1,22 +1,16 @@
 { mkDerivation, Cabal, array, base, bytestring, clash-lib
 , clash-prelude, concurrent-supply, containers, data-binary-ieee754
-, deepseq, directory, exceptions, extra, fetchgit, filepath, ghc
-, ghc-bignum, ghc-boot, ghc-prim, ghc-typelits-extra
-, ghc-typelits-knownnat, ghc-typelits-natnormalise, ghci, hashable
-, haskeline, lens, lib, mtl, primitive, process, reflection, split
+, deepseq, directory, exceptions, extra, filepath, ghc, ghc-bignum
+, ghc-boot, ghc-prim, ghc-typelits-extra, ghc-typelits-knownnat
+, ghc-typelits-natnormalise, ghci, hashable, haskeline, lens, lib
+, mtl, primitive, process, reflection, split, string-interpolate
 , template-haskell, text, time, transformers, uniplate, unix
 , unordered-containers, utf8-string, vector
 }:
 mkDerivation {
   pname = "clash-ghc";
-  version = "1.7.0";
-  src = fetchgit {
-    url = "https://github.com/clash-lang/clash-compiler";
-    sha256 = "1myvhkbw93gqsq9kyk7anbvvrn4c45bw99sr8l2486nb6svkwabh";
-    rev = "8bfb4ec58543e14e968e2c336594a529565996c2";
-    fetchSubmodules = true;
-  };
-  postUnpack = "sourceRoot+=/clash-ghc/; echo source root reset to $sourceRoot";
+  version = "1.8.1";
+  sha256 = "c4975c3396ade9de629e311e59c78782faa708edfeae79cbc8c7ea41c01f4ef6";
   isLibrary = true;
   isExecutable = true;
   enableSeparateDataOutput = false;
@@ -26,13 +20,13 @@ mkDerivation {
     exceptions extra filepath ghc ghc-bignum ghc-boot ghc-prim
     ghc-typelits-extra ghc-typelits-knownnat ghc-typelits-natnormalise
     ghci hashable haskeline lens mtl primitive process reflection split
-    template-haskell text time transformers uniplate unix
-    unordered-containers utf8-string vector
+    string-interpolate template-haskell text time transformers uniplate
+    unix unordered-containers utf8-string vector
   ];
   executableHaskellDepends = [ base ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/clash-lib.nix b/pkgs/clash-lib.nix
index 0892ed8ef389f793fb3d647655ce01ebe8f0832b..5f844e2ec9d35c15e7d5deece8e74151abbc9df5 100644
--- a/pkgs/clash-lib.nix
+++ b/pkgs/clash-lib.nix
@@ -1,9 +1,9 @@
 { mkDerivation, Glob, aeson, aeson-pretty, ansi-terminal, array
-, async, attoparsec, base, base16-bytestring, binary, bytestring
-, clash-prelude, concurrent-supply, containers, cryptohash-sha256
-, data-binary-ieee754, data-default, deepseq, directory, dlist
-, doctest-parallel, exceptions, extra, fetchgit, filepath, ghc
-, ghc-bignum, ghc-boot-th, ghc-typelits-knownnat, hashable
+, async, attoparsec, attoparsec-aeson, base, base16-bytestring
+, binary, bytestring, clash-prelude, concurrent-supply, containers
+, cryptohash-sha256, data-binary-ieee754, data-default, deepseq
+, directory, dlist, doctest-parallel, exceptions, extra, filepath
+, ghc, ghc-bignum, ghc-boot-th, ghc-typelits-knownnat, hashable
 , haskell-src-exts, haskell-src-meta, hint, infinite-list, lens
 , lib, mtl, ordered-containers, pretty-show, prettyprinter
 , prettyprinter-interp, primitive, quickcheck-text
@@ -14,42 +14,37 @@
 }:
 mkDerivation {
   pname = "clash-lib";
-  version = "1.7.0";
-  src = fetchgit {
-    url = "https://github.com/clash-lang/clash-compiler";
-    sha256 = "1myvhkbw93gqsq9kyk7anbvvrn4c45bw99sr8l2486nb6svkwabh";
-    rev = "8bfb4ec58543e14e968e2c336594a529565996c2";
-    fetchSubmodules = true;
-  };
-  postUnpack = "sourceRoot+=/clash-lib/; echo source root reset to $sourceRoot";
+  version = "1.8.1";
+  sha256 = "c57bc82a2084f6cbb3f086d8319fa0ca53e5c5ede191ff8499bfd4df2e6861e8";
   isLibrary = true;
   isExecutable = true;
   enableSeparateDataOutput = true;
   libraryHaskellDepends = [
-    aeson aeson-pretty ansi-terminal array async attoparsec base
-    base16-bytestring binary bytestring clash-prelude concurrent-supply
-    containers cryptohash-sha256 data-binary-ieee754 data-default
-    deepseq directory dlist exceptions extra filepath ghc ghc-bignum
-    ghc-boot-th hashable haskell-src-meta hint infinite-list lens mtl
-    ordered-containers pretty-show prettyprinter prettyprinter-interp
-    primitive string-interpolate template-haskell temporary
-    terminal-size text time transformers trifecta unordered-containers
-    vector vector-binary-instances yaml
+    aeson aeson-pretty ansi-terminal array async attoparsec
+    attoparsec-aeson base base16-bytestring binary bytestring
+    clash-prelude concurrent-supply containers cryptohash-sha256
+    data-binary-ieee754 data-default deepseq directory dlist exceptions
+    extra filepath ghc ghc-bignum ghc-boot-th hashable haskell-src-meta
+    hint infinite-list lens mtl ordered-containers pretty-show
+    prettyprinter prettyprinter-interp primitive string-interpolate
+    template-haskell temporary terminal-size text time transformers
+    trifecta unordered-containers vector vector-binary-instances yaml
   ];
   executableHaskellDepends = [
-    aeson base bytestring containers deepseq directory Glob
-    stringsearch yaml
+    aeson attoparsec-aeson base bytestring containers deepseq directory
+    Glob stringsearch yaml
   ];
   testHaskellDepends = [
-    aeson aeson-pretty base base16-bytestring bytestring clash-prelude
-    concurrent-supply containers data-default deepseq doctest-parallel
-    filepath ghc ghc-typelits-knownnat haskell-src-exts lens
-    pretty-show quickcheck-text tasty tasty-hunit tasty-quickcheck
-    tasty-th template-haskell text transformers unordered-containers
+    aeson aeson-pretty attoparsec-aeson base base16-bytestring
+    bytestring clash-prelude concurrent-supply containers data-default
+    deepseq doctest-parallel filepath ghc ghc-typelits-knownnat
+    haskell-src-exts lens pretty-show quickcheck-text tasty tasty-hunit
+    tasty-quickcheck tasty-th template-haskell text transformers
+    unordered-containers
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/clash-prelude.nix b/pkgs/clash-prelude.nix
index 7539b4203d999b0f065178b5ccc286616b3035dc..dfec27269265af64827504f0f6df7506307d48c8 100644
--- a/pkgs/clash-prelude.nix
+++ b/pkgs/clash-prelude.nix
@@ -1,24 +1,19 @@
 { mkDerivation, QuickCheck, array, arrows, base, binary, bytestring
 , constraints, containers, criterion, data-binary-ieee754
 , data-default-class, deepseq, directory, doctest-parallel, extra
-, fetchgit, filepath, ghc-bignum, ghc-prim, ghc-typelits-extra
+, filepath, ghc-bignum, ghc-prim, ghc-typelits-extra
 , ghc-typelits-knownnat, ghc-typelits-natnormalise, half, hashable
-, hedgehog, hint, infinite-list, lens, lib, quickcheck-classes-base
-, recursion-schemes, reflection, singletons, string-interpolate
-, tasty, tasty-hedgehog, tasty-hunit, tasty-quickcheck, tasty-th
-, template-haskell, text, th-abstraction, th-lift, th-orphans, time
-, transformers, type-errors, uniplate, vector
+, hedgehog, hint, infinite-list, lens, lib, mtl
+, quickcheck-classes-base, recursion-schemes, reflection
+, singletons, string-interpolate, tasty, tasty-hedgehog
+, tasty-hunit, tasty-quickcheck, tasty-th, template-haskell, text
+, th-abstraction, th-lift, th-orphans, time, transformers
+, type-errors, uniplate, vector
 }:
 mkDerivation {
   pname = "clash-prelude";
-  version = "1.7.0";
-  src = fetchgit {
-    url = "https://github.com/clash-lang/clash-compiler";
-    sha256 = "1myvhkbw93gqsq9kyk7anbvvrn4c45bw99sr8l2486nb6svkwabh";
-    rev = "8bfb4ec58543e14e968e2c336594a529565996c2";
-    fetchSubmodules = true;
-  };
-  postUnpack = "sourceRoot+=/clash-prelude/; echo source root reset to $sourceRoot";
+  version = "1.8.1";
+  sha256 = "7e2cdb7c95e70db6a7247af1bce9c70d2755efcdd99b4e40ae5796c2351dc48f";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -26,7 +21,7 @@ mkDerivation {
     array arrows base binary bytestring constraints containers
     data-binary-ieee754 data-default-class deepseq extra ghc-bignum
     ghc-prim ghc-typelits-extra ghc-typelits-knownnat
-    ghc-typelits-natnormalise half hashable infinite-list lens
+    ghc-typelits-natnormalise half hashable infinite-list lens mtl
     QuickCheck recursion-schemes reflection singletons
     string-interpolate template-haskell text th-abstraction th-lift
     th-orphans time transformers type-errors uniplate vector
@@ -42,7 +37,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/concurrent-supply.nix b/pkgs/concurrent-supply.nix
index 71c346f6ac888e7348da601f50dd0d69a6189cde..48a892e7ef52fee0573b23329d646c22def0c2e9 100644
--- a/pkgs/concurrent-supply.nix
+++ b/pkgs/concurrent-supply.nix
@@ -3,8 +3,8 @@ mkDerivation {
   pname = "concurrent-supply";
   version = "0.1.8";
   sha256 = "ccf827dcd221298ae93fad6021c63a06707456de0671706b44f1f2fed867f21f";
-  revision = "1";
-  editedCabalFile = "1yzrr68k81w3jmrarx3y6z7ymzaaxwab509pp6kkd2fjia3g8wwk";
+  revision = "2";
+  editedCabalFile = "0ij8vz3vz2675mwapyzwhywnkkx8p67qq6vqs0c0hrj1659midl0";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -12,7 +12,7 @@ mkDerivation {
   testHaskellDepends = [ base containers ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/ghc-typelits-extra.nix b/pkgs/ghc-typelits-extra.nix
index 85714b619bd368a921586193329ec0eb95df5d8d..61c7c32e05cda1e936fc8a03585f2647a8dc4de2 100644
--- a/pkgs/ghc-typelits-extra.nix
+++ b/pkgs/ghc-typelits-extra.nix
@@ -19,7 +19,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/implicit.nix b/pkgs/implicit.nix
index 978eb8da010db3936fccdefe18ebd496d161ea9f..f22a0036393df3fc8af91fe0836172104812ab91 100644
--- a/pkgs/implicit.nix
+++ b/pkgs/implicit.nix
@@ -26,7 +26,7 @@ mkDerivation {
   benchmarkHaskellDepends = [ base criterion linear parsec ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/infinite-list.nix b/pkgs/infinite-list.nix
index 470cff4e69d7c766fbd86c8dea91e713944f653a..290d76a0f20cfe6576952b67d22247c5de84c209 100644
--- a/pkgs/infinite-list.nix
+++ b/pkgs/infinite-list.nix
@@ -17,7 +17,7 @@ mkDerivation {
   benchmarkHaskellDepends = [ base tasty-bench ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;
diff --git a/pkgs/prettyprinter-interp.nix b/pkgs/prettyprinter-interp.nix
index e7790c437082a951756852842ba5a2c252f0e141..2d462cf833d57554a0e91eac7cd3b2776e26c199 100644
--- a/pkgs/prettyprinter-interp.nix
+++ b/pkgs/prettyprinter-interp.nix
@@ -5,6 +5,8 @@ mkDerivation {
   pname = "prettyprinter-interp";
   version = "0.2.0.0";
   sha256 = "ce812e060c4a582f5091131a70535bf3ce5b5bd90e036cc1351ad8443c328056";
+  revision = "3";
+  editedCabalFile = "079c6ri9aahi4whnxzyh5d3nnawmjvn1kjkq6jdsnp96bflkkhv9";
   isLibrary = true;
   isExecutable = false;
   enableSeparateDataOutput = false;
@@ -16,7 +18,7 @@ mkDerivation {
   ];
   enableLibraryProfiling = true;
   enableExecutableProfiling = true;
-  doHaddock = false;
+  doHaddock = true;
   jailbreak = true;
   doCheck = false;
   doBenchmark = false;