diff --git a/configuration.nix b/configuration.nix
new file mode 100644
index 0000000000000000000000000000000000000000..238fef3a27492539f79ea4e543c44c283b3a38cb
--- /dev/null
+++ b/configuration.nix
@@ -0,0 +1,29 @@
+{ pkgs, pkgs-libR, ... }:
+
+with pkgs.haskell.lib;
+
+final: prev: {
+
+  R = pkgs-libR.R;
+
+  cardano-crypto-class = enableCabalFlag (addPkgconfigDepend prev.cardano-crypto-class pkgs.libsodium) "development";
+
+  cardano-crypto-praos = addPkgconfigDepend prev.cardano-crypto-praos pkgs.libsodium;
+
+  cardano-prelude = enableCabalFlag prev.cardano-prelude "development";
+
+  microstache = doJailbreak prev.microstache;
+
+  monoidal-containers = doJailbreak prev.monoidal-containers;
+
+  nonempty-vector = dontCheck (doJailbreak prev.nonempty-vector);
+
+  plutus-core = setBuildTarget (disableLibraryProfiling (dontBenchmark prev.plutus-core)) "plc";
+
+  plutus-ledger-api = disableLibraryProfiling (dontBenchmark prev.plutus-ledger-api);
+
+  plutus-tx = disableLibraryProfiling (dontBenchmark prev.plutus-tx);
+
+  secp256k1 = pkgs.secp256k1;
+
+}
diff --git a/flake.lock b/flake.lock
index 274a025770ee44ce5259a2582fae27dd58dd8918..cd5e715e606c5a67cbeabc73932a83e4f841a87d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -16,30 +16,14 @@
         "url": "https://gitlab.haskell.org/ghc/packages/Cabal"
       }
     },
-    "HaskellR": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1644844599,
-        "narHash": "sha256-q39Dp5hj4u5Lx6wWwPoc9CbyocH3KutYDmWVd3xevgo=",
-        "owner": "tweag",
-        "repo": "HaskellR",
-        "rev": "c3ba1023480e26ade420896bcb629ceaad59f308",
-        "type": "github"
-      },
-      "original": {
-        "owner": "tweag",
-        "repo": "HaskellR",
-        "type": "github"
-      }
-    },
     "all-cabal-hashes": {
       "flake": false,
       "locked": {
-        "lastModified": 1665080357,
-        "narHash": "sha256-J/abnrLrWzWaIA3v6Rp7yGFCnCVVS6vA5+6KPZb0VKs=",
+        "lastModified": 1664652215,
+        "narHash": "sha256-srogTegrD+241OSa1IVFnEzIRcdOi6rkQQ0z0v9S13E=",
         "owner": "commercialhaskell",
         "repo": "all-cabal-hashes",
-        "rev": "9f72eda9849486e6b55762056e59dbee946cbcbf",
+        "rev": "21f7dfd6196d284ace4cfa5a6e1aa73072312e84",
         "type": "github"
       },
       "original": {
@@ -49,20 +33,19 @@
         "type": "github"
       }
     },
-    "all-cabal-hashes_2": {
+    "cabal2nix": {
       "flake": false,
       "locked": {
-        "lastModified": 1664652215,
-        "narHash": "sha256-srogTegrD+241OSa1IVFnEzIRcdOi6rkQQ0z0v9S13E=",
-        "owner": "commercialhaskell",
-        "repo": "all-cabal-hashes",
-        "rev": "21f7dfd6196d284ace4cfa5a6e1aa73072312e84",
+        "lastModified": 1665402713,
+        "narHash": "sha256-eUk0m/24UaYi75mg9C36WK7PVnosKbMEIafkRa6npno=",
+        "owner": "NixOS",
+        "repo": "cabal2nix",
+        "rev": "b3ae6f9240d07ba103f1eb7ab22f6055e9cdb7dc",
         "type": "github"
       },
       "original": {
-        "owner": "commercialhaskell",
-        "ref": "hackage",
-        "repo": "all-cabal-hashes",
+        "owner": "NixOS",
+        "repo": "cabal2nix",
         "type": "github"
       }
     },
@@ -82,72 +65,6 @@
         "type": "github"
       }
     },
-    "cardano-base": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1664966805,
-        "narHash": "sha256-raPy7vCleco/6mARMOeUraq7SQO1YOV5zOn4iqEyxWI=",
-        "owner": "input-output-hk",
-        "repo": "cardano-base",
-        "rev": "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee",
-        "type": "github"
-      },
-      "original": {
-        "owner": "input-output-hk",
-        "repo": "cardano-base",
-        "type": "github"
-      }
-    },
-    "cardano-crypto": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1621376239,
-        "narHash": "sha256-oxIOVlgm07FAEmgGRF1C2me9TXqVxQulEOcJ22zpTRs=",
-        "owner": "input-output-hk",
-        "repo": "cardano-crypto",
-        "rev": "07397f0e50da97eaa0575d93bee7ac4b2b2576ec",
-        "type": "github"
-      },
-      "original": {
-        "owner": "input-output-hk",
-        "repo": "cardano-crypto",
-        "rev": "07397f0e50da97eaa0575d93bee7ac4b2b2576ec",
-        "type": "github"
-      }
-    },
-    "cardano-ledger": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1666097147,
-        "narHash": "sha256-cnI2vJQbI3QB7vBrQertdwD2MWAu5ikMhIR+qoYq/28=",
-        "owner": "milloni",
-        "repo": "cardano-ledger",
-        "rev": "2857b079bdab6e1545c60c614157ba8e7d19233e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "milloni",
-        "ref": "milloni/horizon",
-        "repo": "cardano-ledger",
-        "type": "github"
-      }
-    },
-    "cardano-prelude": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1664548869,
-        "narHash": "sha256-7YOyIYKuslh8yD8ZAPuOiDaON7IoWVfkFKHOrjLtUK8=",
-        "owner": "input-output-hk",
-        "repo": "cardano-prelude",
-        "rev": "b6053a23f53acd5c519cc559c3861dda3ebf8b35",
-        "type": "github"
-      },
-      "original": {
-        "owner": "input-output-hk",
-        "repo": "cardano-prelude",
-        "type": "github"
-      }
-    },
     "cborg": {
       "flake": false,
       "locked": {
@@ -328,23 +245,23 @@
         "type": "github"
       },
       "original": {
-        "id": "flake-utils",
-        "type": "indirect"
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
       }
     },
     "flake-utils_3": {
       "locked": {
-        "lastModified": 1644229661,
-        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
         "type": "github"
       },
       "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
+        "id": "flake-utils",
+        "type": "indirect"
       }
     },
     "flake-utils_4": {
@@ -362,103 +279,79 @@
         "type": "github"
       }
     },
-    "flat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1664966899,
-        "narHash": "sha256-j1ABQ4I9UlRz4PcJVpfVQMeRBB9UIkS/wljmmoDYG5w=",
-        "owner": "Quid2",
-        "repo": "flat",
-        "rev": "dd323e72857806a2b03b27b579596586d0a4d583",
-        "type": "github"
-      },
-      "original": {
-        "owner": "Quid2",
-        "repo": "flat",
-        "type": "github"
-      }
-    },
-    "ghc-exactprint": {
-      "flake": false,
+    "flake-utils_5": {
       "locked": {
-        "lastModified": 1664486261,
-        "narHash": "sha256-3SQPyJoQQTY7cG2S4TbpG9btPWS7U4F7AlGwAq5PXzk=",
-        "owner": "alanz",
-        "repo": "ghc-exactprint",
-        "rev": "8d3f0aa528e9a3fe5e0626cd733650641daaa2e9",
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
         "type": "github"
       },
       "original": {
-        "owner": "alanz",
-        "ref": "ghc-9.4",
-        "repo": "ghc-exactprint",
+        "owner": "numtide",
+        "repo": "flake-utils",
         "type": "github"
       }
     },
-    "ghc-typelits-knownnat": {
-      "flake": false,
+    "flake-utils_6": {
       "locked": {
-        "lastModified": 1658650195,
-        "narHash": "sha256-9ITC1f0wGvOH1VrFXegwSUugjR777FknFcfOsNxXhMY=",
-        "owner": "clash-lang",
-        "repo": "ghc-typelits-knownnat",
-        "rev": "634b0c076e5cf6ce24d80fa845121b38ec9efe01",
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
         "type": "github"
       },
       "original": {
-        "owner": "clash-lang",
-        "ref": "941-support",
-        "repo": "ghc-typelits-knownnat",
-        "type": "github"
+        "id": "flake-utils",
+        "type": "indirect"
       }
     },
-    "ghc-typelits-natnormalise": {
-      "flake": false,
+    "flake-utils_7": {
       "locked": {
-        "lastModified": 1663485752,
-        "narHash": "sha256-cHDm8Bd5VhN3hhCBQYFfaGl3uczC46CTbM1mIKZP9bY=",
-        "owner": "clash-lang",
-        "repo": "ghc-typelits-natnormalise",
-        "rev": "64f3fe6bbc1a3c8d729ede7c9f14b158e2a12641",
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
         "type": "github"
       },
       "original": {
-        "owner": "clash-lang",
-        "repo": "ghc-typelits-natnormalise",
+        "owner": "numtide",
+        "repo": "flake-utils",
         "type": "github"
       }
     },
-    "goblins": {
-      "flake": false,
+    "flake-utils_8": {
       "locked": {
-        "lastModified": 1663802529,
-        "narHash": "sha256-xeprp3H7lFTH6TxkHtchfD5vIuW0h4NdKaXQjInKTjc=",
-        "owner": "newhoggy",
-        "repo": "goblins",
-        "rev": "a315f41ec7250097fa6073b5ef4773e45758578f",
+        "lastModified": 1644229661,
+        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
         "type": "github"
       },
       "original": {
-        "owner": "newhoggy",
-        "ref": "a315f41ec7250097fa6073b5ef4773e45758578f",
-        "repo": "goblins",
+        "owner": "numtide",
+        "repo": "flake-utils",
         "type": "github"
       }
     },
-    "gray-code": {
+    "ghc-exactprint": {
       "flake": false,
       "locked": {
-        "lastModified": 1665142843,
-        "narHash": "sha256-Tv3cE4BDhEPHuzP2V4Onkn5JsRBsUCbZtQ6t9wZDvlc=",
-        "owner": "milloni",
-        "repo": "gray-code-0.3.1",
-        "rev": "f310a19e44416206633cfd084f10ffb7cfea9f1d",
+        "lastModified": 1664486261,
+        "narHash": "sha256-3SQPyJoQQTY7cG2S4TbpG9btPWS7U4F7AlGwAq5PXzk=",
+        "owner": "alanz",
+        "repo": "ghc-exactprint",
+        "rev": "8d3f0aa528e9a3fe5e0626cd733650641daaa2e9",
         "type": "github"
       },
       "original": {
-        "owner": "milloni",
-        "ref": "milloni/fix-quicktest",
-        "repo": "gray-code-0.3.1",
+        "owner": "alanz",
+        "ref": "ghc-9.4",
+        "repo": "ghc-exactprint",
         "type": "github"
       }
     },
@@ -543,10 +436,52 @@
         "type": "github"
       }
     },
+    "horizon-gen-nix": {
+      "inputs": {
+        "cabal2nix": "cabal2nix",
+        "flake-utils": "flake-utils_2",
+        "horizon-platform": "horizon-platform",
+        "lint-utils": "lint-utils_2",
+        "nixpkgs": "nixpkgs_3"
+      },
+      "locked": {
+        "lastModified": 1666357930,
+        "narHash": "sha256-J/fKWOjoafC9SzL7+F2df7PdrC4f6+gDGGuwL/Peufc=",
+        "ref": "master",
+        "rev": "c1586cd98d609bcd5ef6cd7661f14c070e841b3b",
+        "revCount": 16,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
+      }
+    },
     "horizon-platform": {
+      "inputs": {
+        "flake-utils": "flake-utils_3",
+        "lint-utils": "lint-utils",
+        "nixpkgs": "nixpkgs_2"
+      },
+      "locked": {
+        "lastModified": 1665929472,
+        "narHash": "sha256-8TtHWap72cgCF9aRop1DukLz0uQlvSTJwvnhHdFA9Fs=",
+        "ref": "refs/heads/master",
+        "rev": "195c05aef93557fac44d2c0ed61e28a36b0f5e6c",
+        "revCount": 145,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
+      }
+    },
+    "horizon-platform_2": {
       "inputs": {
         "Cabal": "Cabal",
-        "all-cabal-hashes": "all-cabal-hashes_2",
+        "all-cabal-hashes": "all-cabal-hashes",
         "cache-effectful": "cache-effectful",
         "cborg": "cborg",
         "compactable": "compactable",
@@ -556,15 +491,15 @@
         "ed25519": "ed25519",
         "ema": "ema",
         "flake-parts": "flake-parts_2",
-        "flake-utils": "flake-utils_2",
+        "flake-utils": "flake-utils_6",
         "ghc-exactprint": "ghc-exactprint",
         "haskell-src-meta": "haskell-src-meta",
         "hedgehog-golden": "hedgehog-golden",
         "hlint": "hlint",
         "hnix": "hnix",
-        "lint-utils": "lint-utils",
+        "lint-utils": "lint-utils_3",
         "memory": "memory",
-        "nixpkgs": "nixpkgs_2",
+        "nixpkgs": "nixpkgs_5",
         "polysemy": "polysemy",
         "quickcheck-dynamic": "quickcheck-dynamic",
         "servant": "servant",
@@ -589,13 +524,13 @@
     },
     "lint-utils": {
       "inputs": {
-        "flake-utils": "flake-utils_3",
+        "flake-utils": "flake-utils_4",
         "nixpkgs": "nixpkgs"
       },
       "locked": {
         "lastModified": 1655192403,
         "narHash": "sha256-XyKDvRGDh8VXA6zN8DUTnDaTMrk0MxMKg70MaAX1A2Y=",
-        "ref": "master",
+        "ref": "refs/heads/master",
         "rev": "a7ae54afdc4c05a5aabf202d5a76d02705eb6147",
         "revCount": 28,
         "type": "git",
@@ -608,8 +543,49 @@
     },
     "lint-utils_2": {
       "inputs": {
-        "flake-utils": "flake-utils_4",
-        "nixpkgs": "nixpkgs_3"
+        "flake-utils": "flake-utils_5",
+        "nixpkgs": [
+          "horizon-gen-nix",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1655192403,
+        "narHash": "sha256-XyKDvRGDh8VXA6zN8DUTnDaTMrk0MxMKg70MaAX1A2Y=",
+        "ref": "refs/heads/master",
+        "rev": "a7ae54afdc4c05a5aabf202d5a76d02705eb6147",
+        "revCount": 28,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      }
+    },
+    "lint-utils_3": {
+      "inputs": {
+        "flake-utils": "flake-utils_7",
+        "nixpkgs": "nixpkgs_4"
+      },
+      "locked": {
+        "lastModified": 1655192403,
+        "narHash": "sha256-XyKDvRGDh8VXA6zN8DUTnDaTMrk0MxMKg70MaAX1A2Y=",
+        "ref": "master",
+        "rev": "a7ae54afdc4c05a5aabf202d5a76d02705eb6147",
+        "revCount": 28,
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.homotopic.tech/nix/lint-utils"
+      }
+    },
+    "lint-utils_4": {
+      "inputs": {
+        "flake-utils": "flake-utils_8",
+        "nixpkgs": "nixpkgs_6"
       },
       "locked": {
         "lastModified": 1655192403,
@@ -642,23 +618,6 @@
         "type": "github"
       }
     },
-    "moo": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1665149984,
-        "narHash": "sha256-HWxnkf6xEAFfY14QxQFU/RsQ09skzLSMKvrAB1EQstU=",
-        "owner": "milloni",
-        "repo": "moo",
-        "rev": "20e4c6ee880e7d62b18b995750063dd7349a3f8e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "milloni",
-        "ref": "milloni/build-fix",
-        "repo": "moo",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1644525281,
@@ -693,11 +652,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1664556388,
-        "narHash": "sha256-04xEtpc0AqLhgDtJ/kT+aZGPrXOI+1a3obf6iWrJQXs=",
+        "lastModified": 1665830552,
+        "narHash": "sha256-qel2bZ9TqfW8WzWCWdjuCy4bVFhhGsEeqFv/bj1ka2s=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "511213e0ece88be30a4bd73488f7d1cd85879654",
+        "rev": "26b7e6ab6a864c3e7e077bcb27a49f0480b9894a",
         "type": "github"
       },
       "original": {
@@ -708,6 +667,22 @@
       }
     },
     "nixpkgs_3": {
+      "locked": {
+        "lastModified": 1665830552,
+        "narHash": "sha256-qel2bZ9TqfW8WzWCWdjuCy4bVFhhGsEeqFv/bj1ka2s=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "26b7e6ab6a864c3e7e077bcb27a49f0480b9894a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_4": {
       "locked": {
         "lastModified": 1644525281,
         "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
@@ -723,52 +698,51 @@
         "type": "github"
       }
     },
-    "nixpkgs_4": {
+    "nixpkgs_5": {
       "locked": {
-        "lastModified": 1664989420,
-        "narHash": "sha256-Q8IxomUjjmewsoJgO3htkXLfCckQ7HkDJ/ZhdYVf/fA=",
+        "lastModified": 1664556388,
+        "narHash": "sha256-04xEtpc0AqLhgDtJ/kT+aZGPrXOI+1a3obf6iWrJQXs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "37bd39839acf99c5b738319f42478296f827f274",
+        "rev": "511213e0ece88be30a4bd73488f7d1cd85879654",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixos-unstable",
+        "ref": "nixpkgs-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nothunks": {
-      "flake": false,
+    "nixpkgs_6": {
       "locked": {
-        "lastModified": 1662301055,
-        "narHash": "sha256-ZJ3cwh1q8KCD4aL8IE5dcX+W0ZuRLQwRtWK5Fu0mwjU=",
-        "owner": "locallycompact",
-        "repo": "nothunks",
-        "rev": "0d7e3565407aa4eb21d861d075dff6f20d090f97",
+        "lastModified": 1644525281,
+        "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
         "type": "github"
       },
       "original": {
-        "owner": "locallycompact",
-        "repo": "nothunks",
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "plutus": {
-      "flake": false,
+    "nixpkgs_7": {
       "locked": {
-        "lastModified": 1665072514,
-        "narHash": "sha256-o613DcnvD/uvwUo3c7KV4N3CrG0k+ndu/3lLcxfG/18=",
-        "owner": "milloni",
-        "repo": "plutus",
-        "rev": "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd",
+        "lastModified": 1664989420,
+        "narHash": "sha256-Q8IxomUjjmewsoJgO3htkXLfCckQ7HkDJ/ZhdYVf/fA=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "37bd39839acf99c5b738319f42478296f827f274",
         "type": "github"
       },
       "original": {
-        "owner": "milloni",
-        "ref": "milloni/ghc942",
-        "repo": "plutus",
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
         "type": "github"
       }
     },
@@ -807,29 +781,14 @@
     },
     "root": {
       "inputs": {
-        "HaskellR": "HaskellR",
-        "all-cabal-hashes": "all-cabal-hashes",
-        "cardano-base": "cardano-base",
-        "cardano-crypto": "cardano-crypto",
-        "cardano-ledger": "cardano-ledger",
-        "cardano-prelude": "cardano-prelude",
         "flake-parts": "flake-parts",
         "flake-utils": "flake-utils",
-        "flat": "flat",
-        "ghc-typelits-knownnat": "ghc-typelits-knownnat",
-        "ghc-typelits-natnormalise": "ghc-typelits-natnormalise",
-        "goblins": "goblins",
-        "gray-code": "gray-code",
         "haskell-flake": "haskell-flake",
-        "horizon-platform": "horizon-platform",
-        "lint-utils": "lint-utils_2",
-        "moo": "moo",
-        "nixpkgs": "nixpkgs_4",
-        "nixpkgs-libR": "nixpkgs-libR",
-        "nothunks": "nothunks",
-        "plutus": "plutus",
-        "strict-containers": "strict-containers",
-        "typerep-map": "typerep-map"
+        "horizon-gen-nix": "horizon-gen-nix",
+        "horizon-platform": "horizon-platform_2",
+        "lint-utils": "lint-utils_4",
+        "nixpkgs": "nixpkgs_7",
+        "nixpkgs-libR": "nixpkgs-libR"
       }
     },
     "servant": {
@@ -849,23 +808,6 @@
         "type": "github"
       }
     },
-    "strict-containers": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1665410955,
-        "narHash": "sha256-K0QfB5GFYlJ/D0KO3U6SxWOBgZx8NvcuAgRhV1JhbOg=",
-        "owner": "milloni",
-        "repo": "strict-containers",
-        "rev": "9e833be00bc2c5cdb0b4e743b7a2cde00dd4f616",
-        "type": "github"
-      },
-      "original": {
-        "owner": "milloni",
-        "ref": "milloni/fix",
-        "repo": "strict-containers",
-        "type": "github"
-      }
-    },
     "sydtest": {
       "flake": false,
       "locked": {
@@ -914,23 +856,6 @@
         "type": "github"
       }
     },
-    "typerep-map": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1661208811,
-        "narHash": "sha256-3ATQgkB0dIyA3q/VzsTUk9KwVtmNudu7u3WeqXIWbgg=",
-        "owner": "parsonsmatt",
-        "repo": "typerep-map",
-        "rev": "75b7cd5d45986be07420a6821d352ad2adc0b697",
-        "type": "github"
-      },
-      "original": {
-        "owner": "parsonsmatt",
-        "ref": "75b7cd5d45986be07420a6821d352ad2adc0b697",
-        "repo": "typerep-map",
-        "type": "github"
-      }
-    },
     "unicode-data": {
       "flake": false,
       "locked": {
diff --git a/flake.nix b/flake.nix
index cb89adfa4ecf23b39fee4ce8fc199d34c3b74dc8..89842d5dea9918b9f010c73d0da78eb3bd849b0c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,91 +1,28 @@
 {
   inputs = {
-    all-cabal-hashes = {
-      url = "github:commercialhaskell/all-cabal-hashes?ref=hackage";
-      flake = false;
-    };
-    cardano-base = {
-      url = "github:input-output-hk/cardano-base";
-      flake = false;
-    };
-    cardano-crypto = {
-      url = "github:input-output-hk/cardano-crypto/07397f0e50da97eaa0575d93bee7ac4b2b2576ec";
-      flake = false;
-    };
-    cardano-ledger = {
-      url = "github:milloni/cardano-ledger?ref=milloni/horizon";
-      flake = false;
-    };
-    cardano-prelude = {
-      url = "github:input-output-hk/cardano-prelude";
-      flake = false;
-    };
-    flat = {
-      url = "github:Quid2/flat";
-      flake = false;
-    };
     flake-parts.url = "github:hercules-ci/flake-parts";
     flake-parts.inputs.nixpkgs.follows = "nixpkgs";
-    ghc-typelits-knownnat = {
-      url = "github:clash-lang/ghc-typelits-knownnat?ref=941-support";
-      flake = false;
-    };
-    ghc-typelits-natnormalise = {
-      url = "github:clash-lang/ghc-typelits-natnormalise";
-      flake = false;
-    };
-    goblins = {
-      url = "github:newhoggy/goblins?ref=a315f41ec7250097fa6073b5ef4773e45758578f";
-      flake = false;
-    };
-    gray-code = {
-      url = "github:milloni/gray-code-0.3.1?ref=milloni/fix-quicktest";
-      flake = false;
-    };
     haskell-flake.url = "github:srid/haskell-flake";
     horizon-platform = {
       url = "git+https://gitlab.homotopic.tech/horizon/horizon-platform";
     };
-    HaskellR = {
-      url = "github:tweag/HaskellR";
-      flake = false;
-    };
     lint-utils.url = "git+https://gitlab.homotopic.tech/nix/lint-utils";
-    moo = {
-      url = "github:milloni/moo?ref=milloni/build-fix";
-      flake = false;
-    };
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-libR.url = "github:nixos/nixpkgs/602748c14b82a2e17078713686fe1df2824fa502";
-    nothunks = {
-      url = "github:locallycompact/nothunks";
-      flake = false;
-    };
-    plutus = {
-      url = "github:milloni/plutus?ref=milloni/ghc942";
-      flake = false;
-    };
-    strict-containers = {
-      url = "github:milloni/strict-containers?ref=milloni/fix";
-      flake = false;
-    };
-    typerep-map = {
-      url = "github:parsonsmatt/typerep-map?ref=75b7cd5d45986be07420a6821d352ad2adc0b697";
-      flake = false;
-    };
+    horizon-gen-nix.url = "git+https://gitlab.homotopic.tech/horizon/horizon-gen-nix";
   };
-  outputs = inputs@{ self, nixpkgs, nixpkgs-libR, horizon-platform, flake-utils, lint-utils, ... }:
+  outputs = inputs@{ self, nixpkgs, nixpkgs-libR, horizon-gen-nix, horizon-platform, flake-utils, lint-utils, ... }:
     flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
       let
-        overlay-ach = final: prev: { all-cabal-hashes = inputs.all-cabal-hashes; };
         pkgs-libR = import nixpkgs-libR { inherit system; };
-        pkgs = import nixpkgs { inherit system; overlays = [ overlay-ach (final: prev: { R = pkgs-libR.R; })];};
+        pkgs = import nixpkgs { inherit system; };
 
         overrides-hp = final: prev:
           (horizon-platform.overrides.${system}.ghc942 final prev
             // (import ./overlay.nix { inherit inputs pkgs; } final prev));
+        configuration = import ./configuration.nix { inherit inputs pkgs pkgs-libR; };
         hp = pkgs.haskell.packages.ghc942.override {
-          overrides = overrides-hp;
+          overrides = pkgs.lib.composeManyExtensions [ overrides-hp configuration ];
         };
         hp' = pkgs.lib.filterAttrs
           (n: v: v != null
@@ -96,7 +33,14 @@
           hp;
       in
       {
+        apps = {
+          horizon-gen-nix = {
+            type = "app";
+            program = "${horizon-gen-nix.outputs.packages.x86_64-linux.default}/bin/horizon-gen-nix";
+          };
+        };
         checks = {
+          dhall-format = lint-utils.outputs.linters.linters.x86_64-linux.dhall-format ./.;
           nixpkgs-fmt = lint-utils.outputs.linters.x86_64-linux.nixpkgs-fmt ./.;
         };
         overrides.ghc942 = overrides-hp;
diff --git a/manifest.dhall b/manifest.dhall
new file mode 100644
index 0000000000000000000000000000000000000000..0631186be75fabb8fb9f592afd7a141226e30a88
--- /dev/null
+++ b/manifest.dhall
@@ -0,0 +1,210 @@
+let HsSrc =
+      < FromHackage : { name : Text, version : Text }
+      | FromGit :
+          { url : Text, revision : Optional Text, subdir : Optional Text }
+      >
+
+let Modifiers =
+      { Type = { doJailbreak : Bool, doCheck : Bool }
+      , default = { doJailbreak = True, doCheck = False }
+      }
+
+let Attr = λ(a : Type) → { mapKey : Text, mapValue : a }
+
+let HsPkg =
+      { Type = { source : HsSrc, modifiers : Modifiers.Type }
+      , default.modifiers = Modifiers.default
+      }
+
+let callHackage
+    : ∀(name : Text) → ∀(version : Text) → Attr HsPkg.Type
+    = λ(name : Text) →
+      λ(version : Text) →
+        { mapKey = name
+        , mapValue = HsPkg::{ source = HsSrc.FromHackage { name, version } }
+        }
+
+let callCabal2nix
+    : ∀(name : Text) →
+      ∀(url : Text) →
+      ∀(revision : Optional Text) →
+      ∀(subdir : Optional Text) →
+        Attr HsPkg.Type
+    = λ(name : Text) →
+      λ(url : Text) →
+      λ(revision : Optional Text) →
+      λ(subdir : Optional Text) →
+        { mapKey = name
+        , mapValue = HsPkg::{ source = HsSrc.FromGit { url, revision, subdir } }
+        }
+
+in  [ callHackage "PyF" "0.11.0.0"
+    , callHackage "Unique" "0.4.7.9"
+    , callHackage "algebraic-graphs" "0.7"
+    , callHackage "base64-bytestring-type" "1.0.1"
+    , callHackage "bech32" "1.1.2"
+    , callCabal2nix
+        "byron-spec-chain"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "eras/byron/chain/executable-spec")
+    , callCabal2nix
+        "byron-spec-ledger"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "eras/byron/ledger/executable-spec")
+    , callHackage "canonical-json" "0.6.0.1"
+    , callCabal2nix
+        "cardano-binary"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "binary")
+    , callCabal2nix
+        "cardano-binary-test"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "binary/test")
+    , callCabal2nix
+        "cardano-crypto"
+        "https://github.com/input-output-hk/cardano-crypto"
+        (Some "07397f0e50da97eaa0575d93bee7ac4b2b2576ec")
+        (None Text)
+    , callCabal2nix
+        "cardano-crypto-class"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "cardano-crypto-class")
+    , callCabal2nix
+        "cardano-crypto-praos"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "cardano-crypto-praos")
+    , callCabal2nix
+        "cardano-crypto-test"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "eras/byron/crypto/test")
+    , callCabal2nix
+        "cardano-crypto-wrapper"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "eras/byron/crypto")
+    , callCabal2nix
+        "cardano-ledger-byron"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "eras/byron/ledger/impl")
+    , callCabal2nix
+        "cardano-strict-containers"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "cardano-strict-containers")
+    , callCabal2nix
+        "cardano-prelude"
+        "https://github.com/input-output-hk/cardano-prelude"
+        (Some "b6053a23f53acd5c519cc559c3861dda3ebf8b35")
+        (Some "cardano-prelude")
+    , callCabal2nix
+        "cardano-prelude-test"
+        "https://github.com/input-output-hk/cardano-prelude"
+        (Some "b6053a23f53acd5c519cc559c3861dda3ebf8b35")
+        (Some "cardano-prelude-test")
+    , callCabal2nix
+        "flat"
+        "https://github.com/Quid2/flat"
+        (Some "2121ee96201e39764e3a6fcbc53241afb0050647")
+        (None Text)
+    , callHackage "generic-monoid" "0.1.0.1"
+    , callCabal2nix
+        "ghc-typelits-knownnat"
+        "https://github.com/clash-lang/ghc-typelits-knownnat"
+        (Some "1bc4ee33e005e96d1f7785c715588a289707cd48")
+        (None Text)
+    , callCabal2nix
+        "ghc-typelits-natnormalise"
+        "https://github.com/clash-lang/ghc-typelits-natnormalise"
+        (Some "e0af5b3c69a7d8e1dd402eb727631801e7d9be3d")
+        (None Text)
+    , callCabal2nix
+        "goblins"
+        "https://github.com/newhoggy/goblins"
+        (Some "a315f41ec7250097fa6073b5ef4773e45758578f")
+        (None Text)
+    , callCabal2nix
+        "gray-code"
+        "https://github.com/milloni/gray-code-0.3.1"
+        (Some "f310a19e44416206633cfd084f10ffb7cfea9f1d")
+        (None Text)
+    , callCabal2nix
+        "heapwords"
+        "https://github.com/input-output-hk/cardano-base"
+        (Some "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee")
+        (Some "heapwords")
+    , callCabal2nix
+        "inline-r"
+        "https://github.com/tweag/HaskellR"
+        (Some "fe9b5bd06cd4d3988e47b9933b11d83b6108e255")
+        (Some "inline-r")
+    , callCabal2nix
+        "moo"
+        "https://github.com/milloni/moo"
+        (Some "20e4c6ee880e7d62b18b995750063dd7349a3f8e")
+        (None Text)
+    , callCabal2nix
+        "nothunks"
+        "https://github.com/locallycompact/nothunks"
+        (Some "0d7e3565407aa4eb21d861d075dff6f20d090f97")
+        (None Text)
+    , callCabal2nix
+        "plutus-core"
+        "https://github.com/milloni/plutus"
+        (Some "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd")
+        (Some "plutus-core")
+    , callCabal2nix
+        "plutus-ledger-api"
+        "https://github.com/milloni/plutus"
+        (Some "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd")
+        (Some "plutus-ledger-api")
+    , callCabal2nix
+        "plutus-tx"
+        "https://github.com/milloni/plutus"
+        (Some "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd")
+        (Some "plutus-tx")
+    , callCabal2nix
+        "prettyprinter-configurable"
+        "https://github.com/milloni/plutus"
+        (Some "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd")
+        (Some "prettyprinter-configurable")
+    , callHackage "protolude" "0.3.2"
+    , callHackage "ral" "0.1"
+    , callHackage "recursion-schemes" "5.2.2.2"
+    , callHackage "ref-tf" "0.5.0.1"
+    , callHackage "singletons-th" "3.1.1"
+    , callCabal2nix
+        "small-steps"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "libs/small-steps")
+    , callCabal2nix
+        "small-steps-test"
+        "https://github.com/milloni/cardano-ledger"
+        (Some "2857b079bdab6e1545c60c614157ba8e7d19233e")
+        (Some "libs/small-steps-test")
+    , callHackage "streaming-bytestring" "0.2.4"
+    , callCabal2nix
+        "strict-containers"
+        "https://github.com/milloni/strict-containers"
+        (Some "9e833be00bc2c5cdb0b4e743b7a2cde00dd4f616")
+        (Some "strict-containers")
+    , callHackage "th-desugar" "1.14"
+    , callCabal2nix
+        "typerep-map"
+        "https://github.com/parsonsmatt/typerep-map"
+        (Some "75b7cd5d45986be07420a6821d352ad2adc0b697")
+        (None Text)
+    , callCabal2nix
+        "word-array"
+        "https://github.com/milloni/plutus"
+        (Some "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd")
+        (Some "word-array")
+    ]
diff --git a/overlay.nix b/overlay.nix
index d6b935d4f2b6537f4c6b3c9d6494454ccd168d91..bbe50a0d88b69c48da48cb1b053d22281a222623 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1,122 +1,94 @@
-{ inputs, pkgs }:
-final: prev: with pkgs.haskell.lib; 
-  let doDevbreak = x: enableCabalFlag (dontCheck (doJailbreak x)) "development";
- in
- {
+{ pkgs, ... }:
 
-  PyF = prev.callHackage "PyF" "0.11.0.0" { };
+final: prev: with pkgs.haskell.lib; {
+  PyF = prev.callPackage (./pkgs/PyF.nix) { };
 
-  Unique = dontCheck (doJailbreak (prev.callHackage "Unique" "0.4.7.9" {}));
+  Unique = prev.callPackage (./pkgs/Unique.nix) { };
 
-  algebraic-graphs = prev.callHackage "algebraic-graphs" "0.7" {};
+  algebraic-graphs = prev.callPackage (./pkgs/algebraic-graphs.nix) { };
 
-  bin = doJailbreak prev.bin;
+  base64-bytestring-type = prev.callPackage (./pkgs/base64-bytestring-type.nix) { };
 
-  base16 = doJailbreak (dontCheck prev.base16);
+  bech32 = prev.callPackage (./pkgs/bech32.nix) { };
 
-  base64-bytestring-type = doJailbreak (prev.callHackage "base64-bytestring-type" "1.0.1" {});
+  byron-spec-chain = prev.callPackage (./pkgs/byron-spec-chain.nix) { };
 
-  bech32 = dontCheck (prev.callHackage "bech32" "1.1.2" { });
+  byron-spec-ledger = prev.callPackage (./pkgs/byron-spec-ledger.nix) { };
 
-  byron-spec-chain = doJailbreak (prev.callCabal2nix "byron-spec-chain" (inputs.cardano-ledger + /eras/byron/chain/executable-spec) {});
+  canonical-json = prev.callPackage (./pkgs/canonical-json.nix) { };
 
-  byron-spec-ledger = doJailbreak (prev.callCabal2nix "byron-spec-ledger" (inputs.cardano-ledger + /eras/byron/ledger/executable-spec) {});
+  cardano-binary = prev.callPackage (./pkgs/cardano-binary.nix) { };
 
-  canonical-json = dontCheck (doJailbreak (prev.callHackage "canonical-json" "0.6.0.1" {}));
+  cardano-binary-test = prev.callPackage (./pkgs/cardano-binary-test.nix) { };
 
-  cardano-binary = doDevbreak (prev.callCabal2nix "cardano-binary" (inputs.cardano-base + /binary) {});
+  cardano-crypto = prev.callPackage (./pkgs/cardano-crypto.nix) { };
 
-  cardano-binary-test = doJailbreak (prev.callCabal2nix "cardano-binary-test" (inputs.cardano-base + /binary/test) {});
+  cardano-crypto-class = prev.callPackage (./pkgs/cardano-crypto-class.nix) { };
 
-  cardano-crypto = prev.callCabal2nix "cardano-crypto" inputs.cardano-crypto { };
+  cardano-crypto-praos = prev.callPackage (./pkgs/cardano-crypto-praos.nix) { };
 
-  cardano-crypto-class = doDevbreak (addPkgconfigDepend (prev.callCabal2nix "cardano-crypto-class" (inputs.cardano-base + /cardano-crypto-class) {}) pkgs.libsodium);
+  cardano-crypto-test = prev.callPackage (./pkgs/cardano-crypto-test.nix) { };
 
-  cardano-crypto-praos = doDevbreak (addPkgconfigDepend (prev.callCabal2nix "cardano-crypto-praos" (inputs.cardano-base + /cardano-crypto-praos) {}) pkgs.libsodium);
+  cardano-crypto-wrapper = prev.callPackage (./pkgs/cardano-crypto-wrapper.nix) { };
 
-  cardano-crypto-test = doJailbreak (prev.callCabal2nix "cardano-crypto-test" (inputs.cardano-ledger + /eras/byron/crypto/test) {});
+  cardano-ledger-byron = prev.callPackage (./pkgs/cardano-ledger-byron.nix) { };
 
-  cardano-crypto-wrapper = doJailbreak (prev.callCabal2nix "cardano-crypto-wrapper" (inputs.cardano-ledger + /eras/byron/crypto) {});
+  cardano-prelude = prev.callPackage (./pkgs/cardano-prelude.nix) { };
 
-  cardano-ledger-byron = dontCheck (doJailbreak (prev.callCabal2nix "cardano-ledger-byron" (inputs.cardano-ledger + /eras/byron/ledger/impl) {}));
+  cardano-prelude-test = prev.callPackage (./pkgs/cardano-prelude-test.nix) { };
 
-  cardano-prelude = enableCabalFlag (doJailbreak (prev.callCabal2nix "cardano-prelude" (inputs.cardano-prelude + /cardano-prelude) {})) "development";
+  cardano-strict-containers = prev.callPackage (./pkgs/cardano-strict-containers.nix) { };
 
-  cardano-prelude-test = dontHaddock (prev.callCabal2nix "cardano-prelude-test" (inputs.cardano-prelude + /cardano-prelude-test) {});
+  flat = prev.callPackage (./pkgs/flat.nix) { };
 
-  cardano-strict-containers = enableCabalFlag (prev.callCabal2nix "cardano-strict-containers" (inputs.cardano-base + /cardano-strict-containers) {}) "development";
+  generic-monoid = prev.callPackage (./pkgs/generic-monoid.nix) { };
 
-  flat = dontCheck (prev.callCabal2nix "flat" inputs.flat { });
+  ghc-typelits-knownnat = prev.callPackage (./pkgs/ghc-typelits-knownnat.nix) { };
 
-  fin = doJailbreak prev.fin;
+  ghc-typelits-natnormalise = prev.callPackage (./pkgs/ghc-typelits-natnormalise.nix) { };
 
-  generic-monoid = doJailbreak (prev.callHackage "generic-monoid" "0.1.0.1" {});
+  goblins = prev.callPackage (./pkgs/goblins.nix) { };
 
-  ghc-typelits-knownnat = prev.callCabal2nix "ghc-typelits-knownnat" inputs.ghc-typelits-knownnat {};
+  gray-code = prev.callPackage (./pkgs/gray-code.nix) { };
 
-  ghc-typelits-natnormalise = prev.callCabal2nix "ghc-typelits-natnormalise" inputs.ghc-typelits-natnormalise {};
+  heapwords = prev.callPackage (./pkgs/heapwords.nix) { };
 
-  goblins = doJailbreak (prev.callCabal2nix "goblins" inputs.goblins {});
+  inline-r = prev.callPackage (./pkgs/inline-r.nix) { };
 
-  gray-code = prev.callCabal2nix "gray-code" inputs.gray-code {};
+  moo = prev.callPackage (./pkgs/moo.nix) { };
 
-  heapwords = enableCabalFlag (prev.callCabal2nix "heapwords" (inputs.cardano-base + /heapwords) {}) "development";
+  nothunks = prev.callPackage (./pkgs/nothunks.nix) { };
 
-  inline-r = doJailbreak (prev.callCabal2nix "inline-r" (inputs.HaskellR + /inline-r) {});
+  plutus-core = prev.callPackage (./pkgs/plutus-core.nix) { };
 
-  jsaddle = doJailbreak (prev.callHackage "jsaddle" "0.9.8.2" { });
+  plutus-ledger-api = prev.callPackage (./pkgs/plutus-ledger-api.nix) { };
 
-  microstache = doJailbreak prev.microstache;
+  plutus-tx = prev.callPackage (./pkgs/plutus-tx.nix) { };
 
-  monoidal-containers = doJailbreak prev.monoidal-containers;
+  prettyprinter-configurable = prev.callPackage (./pkgs/prettyprinter-configurable.nix) { };
 
-  moo = dontCheck (prev.callCabal2nix "moo" inputs.moo {});
+  protolude = prev.callPackage (./pkgs/protolude.nix) { };
 
-  multiset = dontCheck prev.multiset;
+  ral = prev.callPackage (./pkgs/ral.nix) { };
 
-  nonempty-vector = doJailbreak (dontCheck prev.nonempty-vector);
+  recursion-schemes = prev.callPackage (./pkgs/recursion-schemes.nix) { };
 
-#  nothunks = dontCheck (prev.callHackage "nothunks" "0.1.3" { });
-  nothunks = dontCheck (doJailbreak (prev.callCabal2nix "nothunks" inputs.nothunks { }));
+  ref-tf = prev.callPackage (./pkgs/ref-tf.nix) { };
 
-  prettyprinter-configurable = dontCheck (prev.callCabal2nix "prettyprinter-configurable" (inputs.plutus + /prettyprinter-configurable) {});
+  singletons-th = prev.callPackage (./pkgs/singletons-th.nix) { };
 
-  plutus-core = setBuildTarget (disableLibraryProfiling (dontBenchmark (dontCheck (doJailbreak (prev.callCabal2nix "plutus-core" (inputs.plutus + /plutus-core) {}))))) "plc";
+  small-steps = prev.callPackage (./pkgs/small-steps.nix) { };
 
-  plutus-ledger-api = disableLibraryProfiling (dontBenchmark (dontCheck (doJailbreak (prev.callCabal2nix "plutus-ledger-api" (inputs.plutus + /plutus-ledger-api) {}))));
+  small-steps-test = prev.callPackage (./pkgs/small-steps-test.nix) { };
 
-  plutus-tx = disableLibraryProfiling (dontBenchmark (dontCheck (doJailbreak (prev.callCabal2nix "plutus-tx" (inputs.plutus + /plutus-tx) {}))));
+  streaming-bytestring = prev.callPackage (./pkgs/streaming-bytestring.nix) { };
 
-  protolude = doJailbreak (prev.callHackage "protolude" "0.3.2" { });
+  strict-containers = prev.callPackage (./pkgs/strict-containers.nix) { };
 
-  ral = doJailbreak (prev.callHackage "ral" "0.1" { });
+  th-desugar = prev.callPackage (./pkgs/th-desugar.nix) { };
 
-  recursion-schemes = doJailbreak (prev.callHackage "recursion-schemes" "5.2.2.2" { });
+  typerep-map = prev.callPackage (./pkgs/typerep-map.nix) { };
 
-  ref-tf = prev.callHackage "ref-tf" "0.5.0.1" { };
-
-  secp256k1 = pkgs.secp256k1;
-
-  secp256k1-haskell = addPkgconfigDepend (dontCheck (prev.secp256k1-haskell)) pkgs.secp256k1;
-
-  singletons-th = prev.callHackage "singletons-th" "3.1.1" { };
-
-  small-steps = doJailbreak (prev.callCabal2nix "small-steps" (inputs.cardano-ledger + /libs/small-steps) {});
-
-  small-steps-test = doJailbreak (prev.callCabal2nix "small-steps-test" (inputs.cardano-ledger + /libs/small-steps-test) {});
-
-  streaming-bytestring = doJailbreak (prev.callHackage "streaming-bytestring" "0.2.4" {});
-
-  strict-containers = dontCheck (doJailbreak (prev.callCabal2nix "strict-containers" (inputs.strict-containers + /strict-containers) {}));
-
-  th-extras = doJailbreak prev.th-extras;
-
-  th-desugar = prev.callHackage "th-desugar" "1.14" {};
-
-  typerep-map = doJailbreak (prev.callCabal2nix "typerep-map" inputs.typerep-map {});
-
-  vector-binary-instances = doJailbreak prev.vector-binary-instances;
-
-  word-array = prev.callCabal2nix "word-array" (inputs.plutus + /word-array) {};
+  word-array = prev.callPackage (./pkgs/word-array.nix) { };
 
 }
diff --git a/pkgs/PyF.nix b/pkgs/PyF.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2eb2c5313d826859659e6a4ca24cbcbcc0097a23
--- /dev/null
+++ b/pkgs/PyF.nix
@@ -0,0 +1,55 @@
+{ mkDerivation
+, base
+, bytestring
+, deepseq
+, filepath
+, ghc
+, ghc-boot
+, hspec
+, HUnit
+, lib
+, mtl
+, parsec
+, process
+, template-haskell
+, temporary
+, text
+, time
+}:
+mkDerivation {
+  pname = "PyF";
+  version = "0.11.0.0";
+  sha256 = "aa9a5ef335f5f380e1e534335f6e8cb0979fb897b1226d76c8369ba62254ad30";
+  revision = "1";
+  editedCabalFile = "091gbpmwhzvkmsk1kpsczwqb02vyw3603mqxflrajg9h2idgsdkd";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    ghc
+    ghc-boot
+    mtl
+    parsec
+    template-haskell
+    text
+    time
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    filepath
+    hspec
+    HUnit
+    process
+    template-haskell
+    temporary
+    text
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Quasiquotations for a python like interpolated string formatter";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/Unique.nix b/pkgs/Unique.nix
new file mode 100644
index 0000000000000000000000000000000000000000..204c2ec5b995a7141c944e4fcdbd391527825467
--- /dev/null
+++ b/pkgs/Unique.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, criterion
+, extra
+, hashable
+, hspec
+, lib
+, QuickCheck
+, quickcheck-instances
+, unordered-containers
+}:
+mkDerivation {
+  pname = "Unique";
+  version = "0.4.7.9";
+  sha256 = "34e8247ef2769cae219ff05bed0c8269d680396c451c1d31aa6ad506abc5c191";
+  libraryHaskellDepends = [
+    base
+    containers
+    extra
+    hashable
+    unordered-containers
+  ];
+  testHaskellDepends = [ base containers hspec QuickCheck ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    criterion
+    hashable
+    QuickCheck
+    quickcheck-instances
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "It provides the functionality like unix \"uniq\" utility";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/algebraic-graphs.nix b/pkgs/algebraic-graphs.nix
new file mode 100644
index 0000000000000000000000000000000000000000..afaf60f2c0cf6121e45d7bf6e598cd9a0ad05e90
--- /dev/null
+++ b/pkgs/algebraic-graphs.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, array
+, base
+, containers
+, deepseq
+, extra
+, inspection-testing
+, lib
+, QuickCheck
+, transformers
+}:
+mkDerivation {
+  pname = "algebraic-graphs";
+  version = "0.7";
+  sha256 = "51159a0d18690ab51e6709e3c576275402f96f57d901f87d734da6854582e568";
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    deepseq
+    transformers
+  ];
+  testHaskellDepends = [
+    array
+    base
+    containers
+    deepseq
+    extra
+    inspection-testing
+    QuickCheck
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/snowleopard/alga";
+  description = "A library for algebraic graph construction and transformation";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/base64-bytestring-type.nix b/pkgs/base64-bytestring-type.nix
new file mode 100644
index 0000000000000000000000000000000000000000..94f7d22457cc3310cc636a6abb54c432c8ad484a
--- /dev/null
+++ b/pkgs/base64-bytestring-type.nix
@@ -0,0 +1,58 @@
+{ mkDerivation
+, aeson
+, base
+, base-compat
+, base64-bytestring
+, binary
+, bytestring
+, cereal
+, deepseq
+, hashable
+, http-api-data
+, lib
+, QuickCheck
+, serialise
+, tasty
+, tasty-quickcheck
+, text
+}:
+mkDerivation {
+  pname = "base64-bytestring-type";
+  version = "1.0.1";
+  sha256 = "f607d07c4aab227b4536c495fa7c07b35ddc9c2c013d385c16c02f236526780e";
+  revision = "14";
+  editedCabalFile = "0pfj807231v2jn5067yhn13f6qq3d77fqnglmzh5wp445ikd5q0s";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base-compat
+    base64-bytestring
+    binary
+    bytestring
+    cereal
+    deepseq
+    hashable
+    http-api-data
+    QuickCheck
+    serialise
+    text
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    binary
+    bytestring
+    cereal
+    http-api-data
+    serialise
+    tasty
+    tasty-quickcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/base64-bytestring-type#readme";
+  description = "A newtype around ByteString, for base64 encoding";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/bech32.nix b/pkgs/bech32.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f0bb9b96405d780a37d9dd192f51405f76e594d2
--- /dev/null
+++ b/pkgs/bech32.nix
@@ -0,0 +1,65 @@
+{ mkDerivation
+, array
+, base
+, base58-bytestring
+, bytestring
+, containers
+, deepseq
+, extra
+, hspec
+, hspec-discover
+, lib
+, memory
+, optparse-applicative
+, process
+, QuickCheck
+, text
+, vector
+}:
+mkDerivation {
+  pname = "bech32";
+  version = "1.1.2";
+  sha256 = "489e1922dce97ce59f72d87b17480eb0087b6661d4bcb7be124e027abcb7d2c7";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    extra
+    text
+  ];
+  executableHaskellDepends = [
+    base
+    base58-bytestring
+    bytestring
+    extra
+    memory
+    optparse-applicative
+    text
+  ];
+  testHaskellDepends = [
+    base
+    base58-bytestring
+    bytestring
+    containers
+    deepseq
+    extra
+    hspec
+    memory
+    process
+    QuickCheck
+    text
+    vector
+  ];
+  testToolDepends = [ hspec-discover ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/bech32";
+  description = "Implementation of the Bech32 cryptocurrency address format (BIP 0173)";
+  license = lib.licenses.asl20;
+  mainProgram = "bech32";
+}
diff --git a/pkgs/byron-spec-chain.nix b/pkgs/byron-spec-chain.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b0ea2c33aaa6d44e22a65f43e0f6bb0c114be011
--- /dev/null
+++ b/pkgs/byron-spec-chain.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, base
+, bimap
+, byron-spec-ledger
+, bytestring
+, containers
+, data-ordlist
+, fetchgit
+, hashable
+, hedgehog
+, lib
+, microlens
+, microlens-th
+, small-steps
+, small-steps-test
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+}:
+mkDerivation {
+  pname = "byron-spec-chain";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/eras/byron/chain/executable-spec/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    bimap
+    byron-spec-ledger
+    bytestring
+    containers
+    hashable
+    hedgehog
+    microlens
+    microlens-th
+    small-steps
+    small-steps-test
+  ];
+  testHaskellDepends = [
+    base
+    byron-spec-ledger
+    containers
+    data-ordlist
+    hedgehog
+    microlens
+    small-steps
+    small-steps-test
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/cardano-legder";
+  description = "Executable specification of the Cardano blockchain";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/byron-spec-ledger.nix b/pkgs/byron-spec-ledger.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8c4cd25dadf995ca880026d49f4737fb3ec7f7b9
--- /dev/null
+++ b/pkgs/byron-spec-ledger.nix
@@ -0,0 +1,73 @@
+{ mkDerivation
+, base
+, bimap
+, bytestring
+, cardano-binary
+, cardano-crypto-class
+, containers
+, cryptonite
+, fetchgit
+, hashable
+, hedgehog
+, lib
+, microlens
+, microlens-th
+, nothunks
+, small-steps
+, small-steps-test
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, template-haskell
+, Unique
+}:
+mkDerivation {
+  pname = "byron-spec-ledger";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/eras/byron/ledger/executable-spec/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    bimap
+    bytestring
+    cardano-binary
+    cardano-crypto-class
+    containers
+    cryptonite
+    hashable
+    hedgehog
+    microlens
+    microlens-th
+    nothunks
+    small-steps
+    small-steps-test
+    template-haskell
+    Unique
+  ];
+  testHaskellDepends = [
+    base
+    bimap
+    containers
+    hedgehog
+    microlens
+    microlens-th
+    small-steps
+    small-steps-test
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    Unique
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/cardano-legder";
+  description = "Executable specification of Cardano ledger";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/canonical-json.nix b/pkgs/canonical-json.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a28390ea487c2377bed8299e07f86bfc481865ba
--- /dev/null
+++ b/pkgs/canonical-json.nix
@@ -0,0 +1,48 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, containers
+, criterion
+, deepseq
+, lib
+, parsec
+, pretty
+, QuickCheck
+, tasty
+, tasty-quickcheck
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "canonical-json";
+  version = "0.6.0.1";
+  sha256 = "33df39d9058d33357956cdf7f911184a26da20c49b90f844ec6374f6bf5ace7e";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    deepseq
+    parsec
+    pretty
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    QuickCheck
+    tasty
+    tasty-quickcheck
+    unordered-containers
+    vector
+  ];
+  benchmarkHaskellDepends = [ base bytestring containers criterion ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/well-typed/canonical-json";
+  description = "Canonical JSON for signing and hashing JSON values";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/cardano-binary-test.nix b/pkgs/cardano-binary-test.nix
new file mode 100644
index 0000000000000000000000000000000000000000..299692c725590fa6c448e327c7ae1cbecd8e84bc
--- /dev/null
+++ b/pkgs/cardano-binary-test.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, base
+, bytestring
+, cardano-binary
+, cardano-prelude-test
+, cborg
+, containers
+, fetchgit
+, formatting
+, hedgehog
+, hspec
+, lib
+, pretty-show
+, QuickCheck
+, quickcheck-instances
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "cardano-binary-test";
+  version = "1.3.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/binary/test/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    cardano-binary
+    cardano-prelude-test
+    cborg
+    containers
+    formatting
+    hedgehog
+    hspec
+    pretty-show
+    QuickCheck
+    quickcheck-instances
+    text
+    time
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Test helpers from cardano-binary exposed to other packages";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/cardano-binary.nix b/pkgs/cardano-binary.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4856b94e8cfe57b6b0e21881ae5fa5d531973648
--- /dev/null
+++ b/pkgs/cardano-binary.nix
@@ -0,0 +1,78 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, cardano-prelude-test
+, cborg
+, containers
+, data-fix
+, deepseq
+, fetchgit
+, formatting
+, hedgehog
+, hspec
+, lib
+, nothunks
+, pretty-show
+, primitive
+, QuickCheck
+, quickcheck-instances
+, recursion-schemes
+, safe-exceptions
+, tagged
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "cardano-binary";
+  version = "1.5.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/binary/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    cborg
+    containers
+    data-fix
+    deepseq
+    formatting
+    nothunks
+    primitive
+    recursion-schemes
+    safe-exceptions
+    tagged
+    text
+    time
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    cardano-prelude-test
+    cborg
+    containers
+    formatting
+    hedgehog
+    hspec
+    pretty-show
+    QuickCheck
+    quickcheck-instances
+    tagged
+    text
+    time
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Binary serialization for Cardano";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-crypto-class.nix b/pkgs/cardano-crypto-class.nix
new file mode 100644
index 0000000000000000000000000000000000000000..26d3513f426d7db2266b5d198bd3c229a5067e7b
--- /dev/null
+++ b/pkgs/cardano-crypto-class.nix
@@ -0,0 +1,64 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, bytestring
+, cardano-binary
+, cardano-strict-containers
+, cryptonite
+, deepseq
+, fetchgit
+, heapwords
+, lib
+, libsodium
+, memory
+, nothunks
+, primitive
+, secp256k1
+, serialise
+, template-haskell
+, text
+, th-compat
+, transformers
+, unix
+, vector
+}:
+mkDerivation {
+  pname = "cardano-crypto-class";
+  version = "2.0.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/cardano-crypto-class/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    bytestring
+    cardano-binary
+    cardano-strict-containers
+    cryptonite
+    deepseq
+    heapwords
+    memory
+    nothunks
+    primitive
+    serialise
+    template-haskell
+    text
+    th-compat
+    transformers
+    vector
+  ];
+  libraryPkgconfigDepends = [ libsodium secp256k1 ];
+  testHaskellDepends = [ base bytestring unix ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Type classes abstracting over cryptography primitives for Cardano";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-crypto-praos.nix b/pkgs/cardano-crypto-praos.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4563e4cb259e905e36c37096c95ae4ef772e2b30
--- /dev/null
+++ b/pkgs/cardano-crypto-praos.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, base
+, bytestring
+, cardano-binary
+, cardano-crypto-class
+, deepseq
+, fetchgit
+, lib
+, libsodium
+, nothunks
+}:
+mkDerivation {
+  pname = "cardano-crypto-praos";
+  version = "2.0.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/cardano-crypto-praos/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    cardano-binary
+    cardano-crypto-class
+    deepseq
+    nothunks
+  ];
+  libraryPkgconfigDepends = [ libsodium ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Crypto primitives from libsodium";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-crypto-test.nix b/pkgs/cardano-crypto-test.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f191a7572ddd44023a06b60a3d9200c213e8ce2e
--- /dev/null
+++ b/pkgs/cardano-crypto-test.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, bytestring
+, cardano-binary
+, cardano-binary-test
+, cardano-crypto
+, cardano-crypto-wrapper
+, cardano-prelude
+, cardano-prelude-test
+, cryptonite
+, fetchgit
+, hedgehog
+, lib
+, memory
+}:
+mkDerivation {
+  pname = "cardano-crypto-test";
+  version = "1.3.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/eras/byron/crypto/test/; echo source root reset to $sourceRoot";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    cardano-binary
+    cardano-binary-test
+    cardano-crypto
+    cardano-crypto-wrapper
+    cardano-prelude
+    cardano-prelude-test
+    cryptonite
+    hedgehog
+    memory
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Test helpers from cardano-crypto exposed to other packages";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-crypto-wrapper.nix b/pkgs/cardano-crypto-wrapper.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8cc0fc80180a7696aeda45835596d7cd04162f2a
--- /dev/null
+++ b/pkgs/cardano-crypto-wrapper.nix
@@ -0,0 +1,81 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, base64-bytestring
+, base64-bytestring-type
+, binary
+, bytestring
+, canonical-json
+, cardano-binary
+, cardano-binary-test
+, cardano-crypto
+, cardano-prelude
+, cardano-prelude-test
+, cryptonite
+, data-default
+, fetchgit
+, filepath
+, formatting
+, heapwords
+, hedgehog
+, lib
+, memory
+, mtl
+, nothunks
+, text
+}:
+mkDerivation {
+  pname = "cardano-crypto-wrapper";
+  version = "1.3.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/eras/byron/crypto/; echo source root reset to $sourceRoot";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    base64-bytestring
+    base64-bytestring-type
+    binary
+    bytestring
+    canonical-json
+    cardano-binary
+    cardano-crypto
+    cardano-prelude
+    cryptonite
+    data-default
+    formatting
+    heapwords
+    memory
+    mtl
+    nothunks
+    text
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    cardano-binary
+    cardano-binary-test
+    cardano-crypto
+    cardano-prelude
+    cardano-prelude-test
+    cryptonite
+    filepath
+    formatting
+    hedgehog
+    memory
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Cryptographic primitives used in the Cardano project";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-crypto.nix b/pkgs/cardano-crypto.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d8d6ab92d22993bf757f7bc5541c19832160f269
--- /dev/null
+++ b/pkgs/cardano-crypto.nix
@@ -0,0 +1,59 @@
+{ mkDerivation
+, base
+, basement
+, bytestring
+, cryptonite
+, deepseq
+, fetchgit
+, foundation
+, gauge
+, hashable
+, integer-gmp
+, lib
+, memory
+}:
+mkDerivation {
+  pname = "cardano-crypto";
+  version = "1.1.0";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-crypto";
+    sha256 = "06sdx5ndn2g722jhpicmg96vsrys89fl81k8290b3lr6b1b0w4m3";
+    rev = "07397f0e50da97eaa0575d93bee7ac4b2b2576ec";
+    fetchSubmodules = true;
+  };
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    basement
+    bytestring
+    cryptonite
+    deepseq
+    foundation
+    hashable
+    integer-gmp
+    memory
+  ];
+  testHaskellDepends = [
+    base
+    basement
+    bytestring
+    cryptonite
+    foundation
+    memory
+  ];
+  benchmarkHaskellDepends = [
+    base
+    bytestring
+    cryptonite
+    gauge
+    memory
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/cardano-crypto#readme";
+  description = "Cryptography primitives for cardano";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/cardano-ledger-byron.nix b/pkgs/cardano-ledger-byron.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b769780a351a1e96215e0c63e5884c9b90f290ed
--- /dev/null
+++ b/pkgs/cardano-ledger-byron.nix
@@ -0,0 +1,134 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, base58-bytestring
+, bimap
+, binary
+, byron-spec-chain
+, byron-spec-ledger
+, bytestring
+, Cabal
+, canonical-json
+, cardano-binary
+, cardano-binary-test
+, cardano-crypto
+, cardano-crypto-test
+, cardano-crypto-wrapper
+, cardano-prelude
+, cardano-prelude-test
+, cborg
+, containers
+, contra-tracer
+, cryptonite
+, deepseq
+, digest
+, directory
+, fetchgit
+, filepath
+, formatting
+, generic-monoid
+, heapwords
+, hedgehog
+, lib
+, microlens
+, mtl
+, nothunks
+, quiet
+, resourcet
+, small-steps
+, small-steps-test
+, streaming
+, streaming-binary
+, streaming-bytestring
+, tasty
+, tasty-hedgehog
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "cardano-ledger-byron";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/eras/byron/ledger/impl/; echo source root reset to $sourceRoot";
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    aeson
+    base
+    base58-bytestring
+    bimap
+    binary
+    bytestring
+    Cabal
+    canonical-json
+    cardano-binary
+    cardano-crypto
+    cardano-crypto-wrapper
+    cardano-prelude
+    cborg
+    containers
+    contra-tracer
+    cryptonite
+    deepseq
+    digest
+    directory
+    filepath
+    formatting
+    heapwords
+    mtl
+    nothunks
+    quiet
+    resourcet
+    streaming
+    streaming-binary
+    streaming-bytestring
+    text
+    time
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    base16-bytestring
+    bimap
+    byron-spec-chain
+    byron-spec-ledger
+    bytestring
+    cardano-binary
+    cardano-binary-test
+    cardano-crypto
+    cardano-crypto-test
+    cardano-crypto-wrapper
+    cardano-prelude
+    cardano-prelude-test
+    cborg
+    containers
+    directory
+    filepath
+    formatting
+    generic-monoid
+    heapwords
+    hedgehog
+    microlens
+    resourcet
+    small-steps
+    small-steps-test
+    streaming
+    tasty
+    tasty-hedgehog
+    text
+    time
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "The blockchain layer of Cardano during the Byron era";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/cardano-prelude-test.nix b/pkgs/cardano-prelude-test.nix
new file mode 100644
index 0000000000000000000000000000000000000000..57cb69ffb63c24370ed5884029b5fb7e12e9a0c7
--- /dev/null
+++ b/pkgs/cardano-prelude-test.nix
@@ -0,0 +1,74 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, attoparsec
+, base
+, base16-bytestring
+, bytestring
+, canonical-json
+, cardano-prelude
+, containers
+, cryptonite
+, fetchgit
+, formatting
+, ghc-heap
+, ghc-prim
+, hedgehog
+, hspec
+, lib
+, pretty-show
+, QuickCheck
+, quickcheck-instances
+, template-haskell
+, text
+, th-compat
+, time
+}:
+mkDerivation {
+  pname = "cardano-prelude-test";
+  version = "0.1.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-prelude";
+    sha256 = "1bshxlraxkm12kj5fn98n8vqwdl8ivxh069zr1y5icmfh8hv50zd";
+    rev = "b6053a23f53acd5c519cc559c3861dda3ebf8b35";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/cardano-prelude-test/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    aeson-pretty
+    attoparsec
+    base
+    base16-bytestring
+    bytestring
+    canonical-json
+    cardano-prelude
+    containers
+    cryptonite
+    formatting
+    hedgehog
+    hspec
+    pretty-show
+    QuickCheck
+    quickcheck-instances
+    template-haskell
+    text
+    th-compat
+    time
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    cardano-prelude
+    ghc-heap
+    ghc-prim
+    hedgehog
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Utility types and functions for testing Cardano";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/cardano-prelude.nix b/pkgs/cardano-prelude.nix
new file mode 100644
index 0000000000000000000000000000000000000000..90b7c60afacd29f1c7aa3e419e41472ecb756521
--- /dev/null
+++ b/pkgs/cardano-prelude.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, bytestring
+, canonical-json
+, cborg
+, containers
+, fetchgit
+, formatting
+, ghc-heap
+, ghc-prim
+, integer-gmp
+, lib
+, microlens
+, mtl
+, protolude
+, tagged
+, text
+, time
+}:
+mkDerivation {
+  pname = "cardano-prelude";
+  version = "0.1.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-prelude";
+    sha256 = "1bshxlraxkm12kj5fn98n8vqwdl8ivxh069zr1y5icmfh8hv50zd";
+    rev = "b6053a23f53acd5c519cc559c3861dda3ebf8b35";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/cardano-prelude/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    bytestring
+    canonical-json
+    cborg
+    containers
+    formatting
+    ghc-heap
+    ghc-prim
+    integer-gmp
+    microlens
+    mtl
+    protolude
+    tagged
+    text
+    time
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "A Prelude replacement for the Cardano project";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/cardano-strict-containers.nix b/pkgs/cardano-strict-containers.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9a3c54d551a42a15674fe7a204395e50c36ba9c5
--- /dev/null
+++ b/pkgs/cardano-strict-containers.nix
@@ -0,0 +1,43 @@
+{ mkDerivation
+, aeson
+, base
+, cardano-binary
+, cborg
+, containers
+, data-default-class
+, deepseq
+, fetchgit
+, fingertree
+, lib
+, nothunks
+, serialise
+}:
+mkDerivation {
+  pname = "cardano-strict-containers";
+  version = "0.1.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/cardano-strict-containers/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    cardano-binary
+    cborg
+    containers
+    data-default-class
+    deepseq
+    fingertree
+    nothunks
+    serialise
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Various strict container types";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/flat.nix b/pkgs/flat.nix
new file mode 100644
index 0000000000000000000000000000000000000000..46e198525a8f616f97ad0d662f6ed0154142f3e9
--- /dev/null
+++ b/pkgs/flat.nix
@@ -0,0 +1,82 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, deepseq
+, dlist
+, fetchgit
+, filepath
+, ghc-prim
+, hashable
+, lib
+, list-t
+, mono-traversable
+, pretty
+, primitive
+, QuickCheck
+, quickcheck-text
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+, timeit
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "flat";
+  version = "0.5.2";
+  src = fetchgit {
+    url = "https://github.com/Quid2/flat";
+    sha256 = "19dhz3gg9fv4mjkrwckiv2269z1x07ah691s38yk7ysp6rxygvbn";
+    rev = "2121ee96201e39764e3a6fcbc53241afb0050647";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    deepseq
+    dlist
+    ghc-prim
+    hashable
+    list-t
+    mono-traversable
+    pretty
+    primitive
+    text
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    deepseq
+    dlist
+    filepath
+    ghc-prim
+    list-t
+    mono-traversable
+    pretty
+    QuickCheck
+    quickcheck-text
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+    timeit
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://quid2.org";
+  description = "Principled and efficient bit-oriented binary serialization";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/generic-monoid.nix b/pkgs/generic-monoid.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ba11a480a6d4336371964c26f26aaf0ce2be3b71
--- /dev/null
+++ b/pkgs/generic-monoid.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "generic-monoid";
+  version = "0.1.0.1";
+  sha256 = "cfd072ad70af41c1b94ac24e42e2635f37ed2a54e8f4be871be78b18b66b2adf";
+  revision = "1";
+  editedCabalFile = "17dfarnbv6si8rgajb3jqsbc4k1nxmvga2h1lhmpnq43n2fdkqkq";
+  libraryHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Derive monoid instances for product types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/ghc-typelits-knownnat.nix b/pkgs/ghc-typelits-knownnat.nix
new file mode 100644
index 0000000000000000000000000000000000000000..909a09cba01bc2ee0ae39fd57ba1bceca65f5c8a
--- /dev/null
+++ b/pkgs/ghc-typelits-knownnat.nix
@@ -0,0 +1,47 @@
+{ mkDerivation
+, base
+, fetchgit
+, ghc
+, ghc-prim
+, ghc-tcplugins-extra
+, ghc-typelits-natnormalise
+, lib
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, transformers
+}:
+mkDerivation {
+  pname = "ghc-typelits-knownnat";
+  version = "0.7.7";
+  src = fetchgit {
+    url = "https://github.com/clash-lang/ghc-typelits-knownnat";
+    sha256 = "0pqfmkr15zpd3vimg3xp5akz920qn21v1yp4c55nadj3s0cfb3vg";
+    rev = "1bc4ee33e005e96d1f7785c715588a289707cd48";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    ghc
+    ghc-prim
+    ghc-tcplugins-extra
+    ghc-typelits-natnormalise
+    template-haskell
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    ghc-typelits-natnormalise
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://clash-lang.org/";
+  description = "Derive KnownNat constraints from other KnownNat constraints";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/ghc-typelits-natnormalise.nix b/pkgs/ghc-typelits-natnormalise.nix
new file mode 100644
index 0000000000000000000000000000000000000000..16b12dc85b5e9a1cf01b13bf1a30bdf163b4fab8
--- /dev/null
+++ b/pkgs/ghc-typelits-natnormalise.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, base
+, containers
+, fetchgit
+, ghc
+, ghc-bignum
+, ghc-prim
+, ghc-tcplugins-extra
+, lib
+, tasty
+, tasty-hunit
+, template-haskell
+, transformers
+}:
+mkDerivation {
+  pname = "ghc-typelits-natnormalise";
+  version = "0.7.7";
+  src = fetchgit {
+    url = "https://github.com/clash-lang/ghc-typelits-natnormalise";
+    sha256 = "1zzkq16y56zg81abrn0c4d3bvzjk26hfvmbmfcy0zj46fy2bmc6b";
+    rev = "e0af5b3c69a7d8e1dd402eb727631801e7d9be3d";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    containers
+    ghc
+    ghc-bignum
+    ghc-tcplugins-extra
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    ghc-prim
+    tasty
+    tasty-hunit
+    template-haskell
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.clash-lang.org/";
+  description = "GHC typechecker plugin for types of kind GHC.TypeLits.Nat";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/goblins.nix b/pkgs/goblins.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b8e519b382bd6f169aea13ea85986e5de2972335
--- /dev/null
+++ b/pkgs/goblins.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, base
+, bimap
+, binary
+, bytestring
+, containers
+, extra
+, fetchgit
+, hedgehog
+, lib
+, microlens
+, microlens-mtl
+, microlens-th
+, mmorph
+, monad-control
+, moo
+, random
+, template-haskell
+, temporary
+, th-utilities
+, transformers
+, tree-diff
+, typerep-map
+}:
+mkDerivation {
+  pname = "goblins";
+  version = "0.2.0.0";
+  src = fetchgit {
+    url = "https://github.com/newhoggy/goblins";
+    sha256 = "0dsfra4qrl5555fq71xlwli6ygkw47biwr1wx73m957vf6knpsn5";
+    rev = "a315f41ec7250097fa6073b5ef4773e45758578f";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    bimap
+    binary
+    bytestring
+    containers
+    extra
+    hedgehog
+    microlens
+    microlens-mtl
+    microlens-th
+    mmorph
+    monad-control
+    moo
+    random
+    template-haskell
+    th-utilities
+    transformers
+    tree-diff
+    typerep-map
+  ];
+  testHaskellDepends = [ base hedgehog temporary ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/goblins";
+  description = "Genetic algorithm based randomised testing";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/gray-code.nix b/pkgs/gray-code.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ba6a0a089cd9f7a8e265f10f368a7f0141dff26a
--- /dev/null
+++ b/pkgs/gray-code.nix
@@ -0,0 +1,19 @@
+{ mkDerivation, base, fetchgit, lib }:
+mkDerivation {
+  pname = "gray-code";
+  version = "0.3.1";
+  src = fetchgit {
+    url = "https://github.com/milloni/gray-code-0.3.1";
+    sha256 = "0mxy8c3ggb8fnpcjcl3c22qljzljly1mgxikpg3l7123h09xrzaf";
+    rev = "f310a19e44416206633cfd084f10ffb7cfea9f1d";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://bitbucket.org/astanin/hs-gray-code";
+  description = "Gray code encoder/decoder";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/heapwords.nix b/pkgs/heapwords.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c0b938d05c98f9f23c746f4045f66feaa3d631a4
--- /dev/null
+++ b/pkgs/heapwords.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, fetchgit
+, ghc-prim
+, lib
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "heapwords";
+  version = "0.1.0.1";
+  src = fetchgit {
+    url = "https://github.com/input-output-hk/cardano-base";
+    sha256 = "0qn56ahqmy79riwyaq5m0d4vpamdjkkk04b0x8zwlyd5y3pg58xd";
+    rev = "46cd4c97cff9f1f0a0da976aa9e32bd2899c85ee";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/heapwords/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    ghc-prim
+    text
+    time
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Heapwords";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/inline-r.nix b/pkgs/inline-r.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bb3ff3144280c86f4cac2eaae1cdce679759dffe
--- /dev/null
+++ b/pkgs/inline-r.nix
@@ -0,0 +1,122 @@
+{ mkDerivation
+, aeson
+, base
+, bytestring
+, containers
+, criterion
+, data-default-class
+, deepseq
+, directory
+, exceptions
+, fetchgit
+, filepath
+, heredoc
+, ieee754
+, inline-c
+, lib
+, mtl
+, pretty
+, primitive
+, process
+, quickcheck-assertions
+, R
+, reflection
+, setenv
+, silently
+, singletons
+, singletons-th
+, strict
+, tasty
+, tasty-expected-failure
+, tasty-golden
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, temporary
+, text
+, th-lift
+, th-orphans
+, transformers
+, unix
+, vector
+}:
+mkDerivation {
+  pname = "inline-r";
+  version = "0.10.5";
+  src = fetchgit {
+    url = "https://github.com/tweag/HaskellR";
+    sha256 = "1a72f3bbyfs1cvbag49dav8fmshbkf3qmaimf862fsaabig2c9vw";
+    rev = "fe9b5bd06cd4d3988e47b9933b11d83b6108e255";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/inline-r/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    data-default-class
+    deepseq
+    exceptions
+    heredoc
+    inline-c
+    mtl
+    pretty
+    primitive
+    process
+    reflection
+    setenv
+    singletons
+    singletons-th
+    template-haskell
+    temporary
+    text
+    th-lift
+    th-orphans
+    transformers
+    unix
+    vector
+  ];
+  libraryPkgconfigDepends = [ R ];
+  testHaskellDepends = [
+    base
+    bytestring
+    directory
+    filepath
+    heredoc
+    ieee754
+    mtl
+    process
+    quickcheck-assertions
+    silently
+    singletons
+    strict
+    tasty
+    tasty-expected-failure
+    tasty-golden
+    tasty-hunit
+    tasty-quickcheck
+    template-haskell
+    temporary
+    text
+    unix
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    filepath
+    primitive
+    process
+    singletons
+    template-haskell
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://tweag.github.io/HaskellR";
+  description = "Seamlessly call R from Haskell and vice versa. No FFI required.";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/moo.nix b/pkgs/moo.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d59be907c2576b6a02c2c75a9b698269ae369b70
--- /dev/null
+++ b/pkgs/moo.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, array
+, base
+, containers
+, fetchgit
+, gray-code
+, HUnit
+, lib
+, mersenne-random-pure64
+, MonadRandom
+, mtl
+, parallel
+, random
+, random-shuffle
+, time
+, vector
+}:
+mkDerivation {
+  pname = "moo";
+  version = "1.2";
+  src = fetchgit {
+    url = "https://github.com/milloni/moo";
+    sha256 = "1mdj218hgh7s5a6b9k14vg9i06zxah0wa42ycdgh245izs8nfv0x";
+    rev = "20e4c6ee880e7d62b18b995750063dd7349a3f8e";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    gray-code
+    mersenne-random-pure64
+    MonadRandom
+    mtl
+    parallel
+    random
+    random-shuffle
+    time
+    vector
+  ];
+  testHaskellDepends = [
+    array
+    base
+    containers
+    gray-code
+    HUnit
+    mersenne-random-pure64
+    MonadRandom
+    mtl
+    parallel
+    random
+    random-shuffle
+    time
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.github.com/astanin/moo/";
+  description = "Genetic algorithm library";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/nothunks.nix b/pkgs/nothunks.nix
new file mode 100644
index 0000000000000000000000000000000000000000..27c0ddeb1449aa622c18fb8a8fc5ff26b0457703
--- /dev/null
+++ b/pkgs/nothunks.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, base
+, bytestring
+, containers
+, fetchgit
+, ghc-heap
+, ghc-prim
+, hedgehog
+, lib
+, random
+, stm
+, tasty
+, tasty-hedgehog
+, text
+, time
+, vector
+}:
+mkDerivation {
+  pname = "nothunks";
+  version = "0.1.3";
+  src = fetchgit {
+    url = "https://github.com/locallycompact/nothunks";
+    sha256 = "0df24vnidfb2nl8hqbcikg8rczvibm721z52w61s1w3a3p1dr7b4";
+    rev = "0d7e3565407aa4eb21d861d075dff6f20d090f97";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    bytestring
+    containers
+    ghc-heap
+    stm
+    text
+    time
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    ghc-prim
+    hedgehog
+    random
+    stm
+    tasty
+    tasty-hedgehog
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Examine values for unexpected thunks";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/plutus-core.nix b/pkgs/plutus-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d4010ec8299072eb4172573c979c5ff291acf0e1
--- /dev/null
+++ b/pkgs/plutus-core.nix
@@ -0,0 +1,277 @@
+{ mkDerivation
+, aeson
+, aeson-pretty
+, algebraic-graphs
+, array
+, barbies
+, base
+, base64-bytestring
+, bifunctors
+, bimap
+, bytestring
+, cardano-crypto
+, cardano-crypto-class
+, cassava
+, cborg
+, composition-prelude
+, containers
+, criterion
+, criterion-measurement
+, cryptonite
+, data-default-class
+, deepseq
+, dependent-map
+, dependent-sum-template
+, deriving-aeson
+, deriving-compat
+, directory
+, dlist
+, dom-lt
+, exceptions
+, extra
+, fetchgit
+, filepath
+, flat
+, ghc-prim
+, hashable
+, hedgehog
+, hex-text
+, HUnit
+, inline-r
+, int-cast
+, integer-gmp
+, lazy-search
+, lens
+, lib
+, megaparsec
+, mmorph
+, monoidal-containers
+, mtl
+, multiset
+, nonempty-vector
+, nothunks
+, optparse-applicative
+, parser-combinators
+, pretty-show
+, prettyprinter
+, prettyprinter-configurable
+, primitive
+, QuickCheck
+, quickcheck-instances
+, ral
+, random
+, recursion-schemes
+, semigroupoids
+, semigroups
+, serialise
+, size-based
+, some
+, split
+, Stream
+, tagged
+, tasty
+, tasty-golden
+, tasty-hedgehog
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, text
+, th-compat
+, th-lift
+, th-lift-instances
+, th-utilities
+, time
+, transformers
+, unordered-containers
+, vector
+, witherable
+, word-array
+}:
+mkDerivation {
+  pname = "plutus-core";
+  version = "1.0.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/plutus";
+    sha256 = "0pzzqqbp6jvrzxp7gyi4dnnc5pg0jnr76dsaq6pzn3zgr46pgbd3";
+    rev = "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/plutus-core/; echo source root reset to $sourceRoot";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson
+    algebraic-graphs
+    array
+    barbies
+    base
+    base64-bytestring
+    bifunctors
+    bimap
+    bytestring
+    cardano-crypto
+    cardano-crypto-class
+    cassava
+    cborg
+    composition-prelude
+    containers
+    cryptonite
+    data-default-class
+    deepseq
+    dependent-map
+    dependent-sum-template
+    deriving-aeson
+    deriving-compat
+    dlist
+    dom-lt
+    exceptions
+    extra
+    filepath
+    flat
+    ghc-prim
+    hashable
+    hedgehog
+    int-cast
+    integer-gmp
+    lazy-search
+    lens
+    megaparsec
+    mmorph
+    monoidal-containers
+    mtl
+    multiset
+    nonempty-vector
+    nothunks
+    parser-combinators
+    prettyprinter
+    prettyprinter-configurable
+    primitive
+    ral
+    recursion-schemes
+    semigroupoids
+    semigroups
+    serialise
+    size-based
+    some
+    Stream
+    tagged
+    tasty
+    tasty-golden
+    tasty-hedgehog
+    tasty-hunit
+    template-haskell
+    text
+    th-compat
+    th-lift
+    th-lift-instances
+    th-utilities
+    time
+    transformers
+    unordered-containers
+    vector
+    witherable
+    word-array
+  ];
+  executableHaskellDepends = [
+    aeson
+    aeson-pretty
+    barbies
+    base
+    bytestring
+    cardano-crypto-class
+    cassava
+    containers
+    criterion
+    criterion-measurement
+    deepseq
+    directory
+    exceptions
+    extra
+    filepath
+    flat
+    hedgehog
+    inline-r
+    integer-gmp
+    lens
+    megaparsec
+    monoidal-containers
+    mtl
+    optparse-applicative
+    prettyprinter
+    QuickCheck
+    quickcheck-instances
+    random
+    split
+    text
+    time
+    transformers
+    vector
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    bytestring
+    cardano-crypto-class
+    cassava
+    containers
+    data-default-class
+    extra
+    filepath
+    flat
+    hedgehog
+    hex-text
+    HUnit
+    lens
+    megaparsec
+    mmorph
+    mtl
+    nonempty-vector
+    pretty-show
+    prettyprinter
+    QuickCheck
+    quickcheck-instances
+    serialise
+    split
+    tasty
+    tasty-golden
+    tasty-hedgehog
+    tasty-hunit
+    tasty-quickcheck
+    template-haskell
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    text
+    th-lift-instances
+    th-utilities
+    transformers
+    vector
+  ];
+  benchmarkHaskellDepends = [
+    barbies
+    base
+    bytestring
+    cassava
+    criterion
+    exceptions
+    extra
+    hedgehog
+    inline-r
+    mmorph
+    nonempty-vector
+    ral
+    random
+    template-haskell
+    text
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Language library for Plutus Core";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/plutus-ledger-api.nix b/pkgs/plutus-ledger-api.nix
new file mode 100644
index 0000000000000000000000000000000000000000..84ff4e97f5ee16a04a2864ab688234b887cce4ad
--- /dev/null
+++ b/pkgs/plutus-ledger-api.nix
@@ -0,0 +1,104 @@
+{ mkDerivation
+, async
+, barbies
+, base
+, base16-bytestring
+, base64-bytestring
+, bytestring
+, cborg
+, containers
+, deepseq
+, extra
+, fetchgit
+, filepath
+, flat
+, hedgehog
+, lens
+, lib
+, mtl
+, nothunks
+, plutus-core
+, plutus-tx
+, prettyprinter
+, PyF
+, serialise
+, tagged
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "plutus-ledger-api";
+  version = "1.0.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/plutus";
+    sha256 = "0pzzqqbp6jvrzxp7gyi4dnnc5pg0jnr76dsaq6pzn3zgr46pgbd3";
+    rev = "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/plutus-ledger-api/; echo source root reset to $sourceRoot";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    base16-bytestring
+    base64-bytestring
+    bytestring
+    cborg
+    containers
+    deepseq
+    extra
+    flat
+    lens
+    mtl
+    nothunks
+    plutus-core
+    plutus-tx
+    prettyprinter
+    PyF
+    serialise
+    tagged
+    template-haskell
+    text
+    transformers
+  ];
+  executableHaskellDepends = [
+    async
+    base
+    extra
+    filepath
+    mtl
+    plutus-core
+    serialise
+    tasty
+    tasty-hunit
+  ];
+  testHaskellDepends = [
+    barbies
+    base
+    bytestring
+    containers
+    extra
+    hedgehog
+    lens
+    mtl
+    nothunks
+    plutus-core
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    tasty-quickcheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Interface to the Plutus ledger for the Cardano ledger";
+  license = lib.licenses.asl20;
+  mainProgram = "evaluation-test";
+}
diff --git a/pkgs/plutus-tx.nix b/pkgs/plutus-tx.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4f58ede7b57997764b48eb8dd5d4c2366ce9a2d8
--- /dev/null
+++ b/pkgs/plutus-tx.nix
@@ -0,0 +1,98 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, bytestring
+, cborg
+, containers
+, deepseq
+, deriving-compat
+, doctest
+, extra
+, fetchgit
+, filepath
+, flat
+, ghc-prim
+, hashable
+, hedgehog
+, hedgehog-fn
+, lens
+, lib
+, memory
+, mtl
+, plutus-core
+, pretty-show
+, prettyprinter
+, serialise
+, tagged
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, template-haskell
+, text
+, th-abstraction
+, th-compat
+, transformers
+}:
+mkDerivation {
+  pname = "plutus-tx";
+  version = "1.0.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/plutus";
+    sha256 = "0pzzqqbp6jvrzxp7gyi4dnnc5pg0jnr76dsaq6pzn3zgr46pgbd3";
+    rev = "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/plutus-tx/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    bytestring
+    containers
+    deepseq
+    deriving-compat
+    extra
+    filepath
+    flat
+    ghc-prim
+    hashable
+    lens
+    memory
+    mtl
+    plutus-core
+    prettyprinter
+    serialise
+    tagged
+    tasty
+    template-haskell
+    text
+    th-abstraction
+    th-compat
+    transformers
+  ];
+  testHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    bytestring
+    cborg
+    filepath
+    hedgehog
+    hedgehog-fn
+    plutus-core
+    pretty-show
+    serialise
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    text
+    transformers
+  ];
+  testToolDepends = [ doctest ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Libraries for Plutus Tx and its prelude";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/prettyprinter-configurable.nix b/pkgs/prettyprinter-configurable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3886d138bdf3fc368b28708cc7ecde0c837abe05
--- /dev/null
+++ b/pkgs/prettyprinter-configurable.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, base
+, Cabal
+, cabal-doctest
+, doctest
+, fetchgit
+, lib
+, megaparsec
+, microlens
+, mtl
+, parser-combinators
+, prettyprinter
+, QuickCheck
+, quickcheck-text
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, text
+}:
+mkDerivation {
+  pname = "prettyprinter-configurable";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/plutus";
+    sha256 = "0pzzqqbp6jvrzxp7gyi4dnnc5pg0jnr76dsaq6pzn3zgr46pgbd3";
+    rev = "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/prettyprinter-configurable/; echo source root reset to $sourceRoot";
+  setupHaskellDepends = [ base Cabal cabal-doctest ];
+  libraryHaskellDepends = [ base microlens mtl prettyprinter text ];
+  testHaskellDepends = [
+    base
+    doctest
+    megaparsec
+    parser-combinators
+    prettyprinter
+    QuickCheck
+    quickcheck-text
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  license = "unknown";
+}
diff --git a/pkgs/protolude.nix b/pkgs/protolude.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ebe04dc6d518f358a08cad2ba81114503ffda737
--- /dev/null
+++ b/pkgs/protolude.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, array
+, async
+, base
+, bytestring
+, containers
+, deepseq
+, ghc-prim
+, hashable
+, lib
+, mtl
+, mtl-compat
+, stm
+, text
+, transformers
+, transformers-compat
+}:
+mkDerivation {
+  pname = "protolude";
+  version = "0.3.2";
+  sha256 = "7ec019f3d445563a54fad8ba89564bffaae6028798a1cc3f033f5b425ef7a344";
+  libraryHaskellDepends = [
+    array
+    async
+    base
+    bytestring
+    containers
+    deepseq
+    ghc-prim
+    hashable
+    mtl
+    mtl-compat
+    stm
+    text
+    transformers
+    transformers-compat
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/sdiehl/protolude";
+  description = "A small prelude";
+  license = lib.licenses.mit;
+}
diff --git a/pkgs/ral.nix b/pkgs/ral.nix
new file mode 100644
index 0000000000000000000000000000000000000000..87162fa4f745b311edfa1aa58be4e4ca0348f0d1
--- /dev/null
+++ b/pkgs/ral.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, adjunctions
+, base
+, bin
+, criterion
+, deepseq
+, distributive
+, fin
+, hashable
+, lib
+, QuickCheck
+, semigroupoids
+, vector
+}:
+mkDerivation {
+  pname = "ral";
+  version = "0.1";
+  sha256 = "048cf2b5b394229503bdd748c93cc19650b4223d01e11e954b373f7595c21241";
+  revision = "2";
+  editedCabalFile = "0a3ryzcmjgyp64f8s2pl95pkz8zddq9qsn76dlimg23gczf1cql4";
+  libraryHaskellDepends = [
+    adjunctions
+    base
+    bin
+    deepseq
+    distributive
+    fin
+    hashable
+    QuickCheck
+    semigroupoids
+  ];
+  benchmarkHaskellDepends = [ base criterion vector ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/phadej/vec";
+  description = "Random access lists";
+  license = lib.licenses.gpl2Plus;
+}
diff --git a/pkgs/recursion-schemes.nix b/pkgs/recursion-schemes.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c608d8f3b8ebf5350b862e64fbfd2b5dcd49d634
--- /dev/null
+++ b/pkgs/recursion-schemes.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, base-orphans
+, comonad
+, containers
+, data-fix
+, free
+, HUnit
+, lib
+, template-haskell
+, th-abstraction
+, transformers
+}:
+mkDerivation {
+  pname = "recursion-schemes";
+  version = "5.2.2.2";
+  sha256 = "66c3492a2fb10cea81348d0828c518b96b39f354d9e37d028a3fa279933c1405";
+  revision = "1";
+  editedCabalFile = "1l6wbzx8804pb6p8gvk45hal6sz8r1gvyxb8aa9ih6j8pqv4q04c";
+  libraryHaskellDepends = [
+    base
+    base-orphans
+    comonad
+    containers
+    data-fix
+    free
+    template-haskell
+    th-abstraction
+    transformers
+  ];
+  testHaskellDepends = [ base HUnit template-haskell transformers ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/recursion-schemes/";
+  description = "Representing common recursion patterns as higher-order functions";
+  license = lib.licenses.bsd2;
+}
diff --git a/pkgs/ref-tf.nix b/pkgs/ref-tf.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8c3e9d7ae665a71d42066f0ef9072afe06a028b9
--- /dev/null
+++ b/pkgs/ref-tf.nix
@@ -0,0 +1,13 @@
+{ mkDerivation, base, lib, stm, transformers }:
+mkDerivation {
+  pname = "ref-tf";
+  version = "0.5.0.1";
+  sha256 = "a5c3243c30119be1cc53d04fddc3f3a3969c72912a52a111f45f04bed8a35147";
+  libraryHaskellDepends = [ base stm transformers ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "A type class for monads with references using type families";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/singletons-th.nix b/pkgs/singletons-th.nix
new file mode 100644
index 0000000000000000000000000000000000000000..9d481e1ab247cc0f283bf34eb81854c611b2f528
--- /dev/null
+++ b/pkgs/singletons-th.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, base
+, containers
+, ghc-boot-th
+, lib
+, mtl
+, singletons
+, syb
+, template-haskell
+, th-desugar
+, th-orphans
+, transformers
+}:
+mkDerivation {
+  pname = "singletons-th";
+  version = "3.1.1";
+  sha256 = "466b91be35ee07bc06f5bf01d15f4bd9dc99a1151deb09ee114d99b9e052e9ae";
+  libraryHaskellDepends = [
+    base
+    containers
+    ghc-boot-th
+    mtl
+    singletons
+    syb
+    template-haskell
+    th-desugar
+    th-orphans
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.github.com/goldfirere/singletons";
+  description = "A framework for generating singleton types";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/small-steps-test.nix b/pkgs/small-steps-test.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f1f4e85f9dccedd11f3bdfbcf61d1a00899abc59
--- /dev/null
+++ b/pkgs/small-steps-test.nix
@@ -0,0 +1,72 @@
+{ mkDerivation
+, base
+, cardano-binary
+, cardano-crypto-class
+, cardano-strict-containers
+, containers
+, deepseq
+, fetchgit
+, hedgehog
+, lib
+, microlens
+, microlens-th
+, mtl
+, nothunks
+, QuickCheck
+, small-steps
+, tasty
+, tasty-expected-failure
+, tasty-hedgehog
+, tasty-hunit
+, tasty-quickcheck
+, transformers
+, Unique
+}:
+mkDerivation {
+  pname = "small-steps-test";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/libs/small-steps-test/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    cardano-strict-containers
+    deepseq
+    hedgehog
+    microlens
+    microlens-th
+    mtl
+    nothunks
+    QuickCheck
+    small-steps
+    tasty-hunit
+    transformers
+  ];
+  testHaskellDepends = [
+    base
+    cardano-binary
+    cardano-crypto-class
+    containers
+    hedgehog
+    mtl
+    QuickCheck
+    small-steps
+    tasty
+    tasty-expected-failure
+    tasty-hedgehog
+    tasty-hunit
+    tasty-quickcheck
+    Unique
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/cardano-ledger";
+  description = "Small step semantics testing library";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/small-steps.nix b/pkgs/small-steps.nix
new file mode 100644
index 0000000000000000000000000000000000000000..85d67c859e37312cfc1c20bd714fc4556e18267d
--- /dev/null
+++ b/pkgs/small-steps.nix
@@ -0,0 +1,46 @@
+{ mkDerivation
+, aeson
+, base
+, cardano-strict-containers
+, containers
+, data-default-class
+, fetchgit
+, free
+, lib
+, mtl
+, nothunks
+, text
+, transformers
+, validation-selective
+}:
+mkDerivation {
+  pname = "small-steps";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/cardano-ledger";
+    sha256 = "0vzz5a3alzl4hh62krifc0qzc03pxpm42szhxq0p88qvjjy3cwkj";
+    rev = "2857b079bdab6e1545c60c614157ba8e7d19233e";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/libs/small-steps/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    aeson
+    base
+    cardano-strict-containers
+    containers
+    data-default-class
+    free
+    mtl
+    nothunks
+    text
+    transformers
+    validation-selective
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/input-output-hk/cardano-ledger";
+  description = "Small step semantics";
+  license = lib.licenses.asl20;
+}
diff --git a/pkgs/streaming-bytestring.nix b/pkgs/streaming-bytestring.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7f39720d333a8425134aebd2809c0f5be3bdfe08
--- /dev/null
+++ b/pkgs/streaming-bytestring.nix
@@ -0,0 +1,54 @@
+{ mkDerivation
+, base
+, bytestring
+, deepseq
+, exceptions
+, ghc-prim
+, lib
+, mmorph
+, mtl
+, resourcet
+, smallcheck
+, streaming
+, tasty
+, tasty-hunit
+, tasty-smallcheck
+, transformers
+, transformers-base
+}:
+mkDerivation {
+  pname = "streaming-bytestring";
+  version = "0.2.4";
+  sha256 = "b0dfd86f8ee711dbbd7b51d04531cf2e1c79c6dc05f23bb3902b35175481e447";
+  libraryHaskellDepends = [
+    base
+    bytestring
+    deepseq
+    exceptions
+    ghc-prim
+    mmorph
+    mtl
+    resourcet
+    streaming
+    transformers
+    transformers-base
+  ];
+  testHaskellDepends = [
+    base
+    bytestring
+    resourcet
+    smallcheck
+    streaming
+    tasty
+    tasty-hunit
+    tasty-smallcheck
+    transformers
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-streaming/streaming-bytestring";
+  description = "Fast, effectful byte streams";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/strict-containers.nix b/pkgs/strict-containers.nix
new file mode 100644
index 0000000000000000000000000000000000000000..47c31c1213d0e89e1c8f079a46621027272da580
--- /dev/null
+++ b/pkgs/strict-containers.nix
@@ -0,0 +1,84 @@
+{ mkDerivation
+, array
+, base
+, base-orphans
+, binary
+, ChasingBottoms
+, containers
+, deepseq
+, fetchgit
+, hashable
+, HUnit
+, indexed-traversable
+, lib
+, primitive
+, QuickCheck
+, random
+, strict
+, tasty
+, tasty-hunit
+, tasty-quickcheck
+, template-haskell
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, transformers
+, unordered-containers
+, vector
+, vector-binary-instances
+}:
+mkDerivation {
+  pname = "strict-containers";
+  version = "0.1.1";
+  src = fetchgit {
+    url = "https://github.com/milloni/strict-containers";
+    sha256 = "1fpbfp8frvyhvy2qw63512llyswwm690bk890bi1rhqnm2v10q3k";
+    rev = "9e833be00bc2c5cdb0b4e743b7a2cde00dd4f616";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/strict-containers/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    array
+    base
+    binary
+    containers
+    deepseq
+    hashable
+    indexed-traversable
+    primitive
+    strict
+    unordered-containers
+    vector
+    vector-binary-instances
+  ];
+  testHaskellDepends = [
+    array
+    base
+    base-orphans
+    ChasingBottoms
+    containers
+    deepseq
+    hashable
+    HUnit
+    primitive
+    QuickCheck
+    random
+    tasty
+    tasty-hunit
+    tasty-quickcheck
+    template-haskell
+    test-framework
+    test-framework-hunit
+    test-framework-quickcheck2
+    transformers
+    unordered-containers
+    vector
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskellari/strict-containers";
+  description = "Strict containers";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/th-desugar.nix b/pkgs/th-desugar.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2b335eaf486415ede77de34996bd435c81d4d1a3
--- /dev/null
+++ b/pkgs/th-desugar.nix
@@ -0,0 +1,53 @@
+{ mkDerivation
+, base
+, containers
+, ghc-prim
+, hspec
+, HUnit
+, lib
+, mtl
+, ordered-containers
+, syb
+, template-haskell
+, th-abstraction
+, th-lift
+, th-orphans
+, transformers-compat
+}:
+mkDerivation {
+  pname = "th-desugar";
+  version = "1.14";
+  sha256 = "dfb2d3c5f3ffec189452b1db7edb743b9b7b006cc16c19a9ece083de4bd8a7ac";
+  libraryHaskellDepends = [
+    base
+    containers
+    ghc-prim
+    mtl
+    ordered-containers
+    syb
+    template-haskell
+    th-abstraction
+    th-lift
+    th-orphans
+    transformers-compat
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    hspec
+    HUnit
+    mtl
+    syb
+    template-haskell
+    th-abstraction
+    th-lift
+    th-orphans
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/goldfirere/th-desugar";
+  description = "Functions to desugar Template Haskell";
+  license = lib.licenses.bsd3;
+}
diff --git a/pkgs/typerep-map.nix b/pkgs/typerep-map.nix
new file mode 100644
index 0000000000000000000000000000000000000000..11e7fd10fcd7eeab35dc015f7aea23625bd0f2c9
--- /dev/null
+++ b/pkgs/typerep-map.nix
@@ -0,0 +1,57 @@
+{ mkDerivation
+, base
+, containers
+, criterion
+, deepseq
+, dependent-map
+, dependent-sum
+, fetchgit
+, ghc-prim
+, ghc-typelits-knownnat
+, hedgehog
+, hspec
+, hspec-hedgehog
+, lib
+, primitive
+, vector
+}:
+mkDerivation {
+  pname = "typerep-map";
+  version = "0.5.0.0";
+  src = fetchgit {
+    url = "https://github.com/parsonsmatt/typerep-map";
+    sha256 = "023f2rrak7kmpfxxpfcdv5bb1llksk2cxmdgvs08qx3l821d016w";
+    rev = "75b7cd5d45986be07420a6821d352ad2adc0b697";
+    fetchSubmodules = true;
+  };
+  libraryHaskellDepends = [
+    base
+    containers
+    deepseq
+    ghc-prim
+    primitive
+    vector
+  ];
+  testHaskellDepends = [
+    base
+    ghc-typelits-knownnat
+    hedgehog
+    hspec
+    hspec-hedgehog
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    deepseq
+    dependent-map
+    dependent-sum
+    ghc-typelits-knownnat
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/kowainik/typerep-map";
+  description = "Efficient implementation of a dependent map with types as keys";
+  license = lib.licenses.mpl20;
+}
diff --git a/pkgs/word-array.nix b/pkgs/word-array.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d11de84ffbc960045fb1851584196d518482204a
--- /dev/null
+++ b/pkgs/word-array.nix
@@ -0,0 +1,45 @@
+{ mkDerivation
+, base
+, deepseq
+, fetchgit
+, lib
+, mono-traversable
+, primitive
+, QuickCheck
+, tasty
+, tasty-bench
+, tasty-quickcheck
+, vector
+}:
+mkDerivation {
+  pname = "word-array";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/milloni/plutus";
+    sha256 = "0pzzqqbp6jvrzxp7gyi4dnnc5pg0jnr76dsaq6pzn3zgr46pgbd3";
+    rev = "81cd1ada745c12af2c2c28afce1f6b6b28b38fdd";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/word-array/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base
+    deepseq
+    mono-traversable
+    primitive
+  ];
+  testHaskellDepends = [
+    base
+    mono-traversable
+    QuickCheck
+    tasty
+    tasty-quickcheck
+    vector
+  ];
+  benchmarkHaskellDepends = [ base primitive tasty-bench ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/plutus";
+  license = lib.licenses.asl20;
+}