diff --git a/flake.lock b/flake.lock
index 42199231e340458d67b184f3d9d7bf66942448a4..f8adce78314099909886e9385f5d3bf6a4f65dbd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -19,65 +19,6 @@
       }
     },
     "flake-utils": {
-      "locked": {
-        "lastModified": 1667077288,
-        "narHash": "sha256-bdC8sFNDpT0HK74u9fUkpbf1MEzVYJ+ka7NXCdgBoaA=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_2": {
-      "locked": {
-        "lastModified": 1659877975,
-        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
-        "type": "github"
-      },
-      "original": {
-        "id": "flake-utils",
-        "type": "indirect"
-      }
-    },
-    "flake-utils_3": {
-      "locked": {
-        "lastModified": 1644229661,
-        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_4": {
-      "locked": {
-        "lastModified": 1644229661,
-        "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_5": {
       "locked": {
         "lastModified": 1644229661,
         "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
@@ -107,114 +48,7 @@
         "type": "github"
       }
     },
-    "get-flake_2": {
-      "locked": {
-        "lastModified": 1644686428,
-        "narHash": "sha256-zkhYsURWFrvEZLkIoBeqFBzSu+cA2u5mo6M8vq9LN7M=",
-        "owner": "ursi",
-        "repo": "get-flake",
-        "rev": "703f15558daa56dfae19d1858bb3046afe68831a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ursi",
-        "repo": "get-flake",
-        "type": "github"
-      }
-    },
-    "get-flake_3": {
-      "locked": {
-        "lastModified": 1644686428,
-        "narHash": "sha256-zkhYsURWFrvEZLkIoBeqFBzSu+cA2u5mo6M8vq9LN7M=",
-        "owner": "ursi",
-        "repo": "get-flake",
-        "rev": "703f15558daa56dfae19d1858bb3046afe68831a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ursi",
-        "repo": "get-flake",
-        "type": "github"
-      }
-    },
-    "horizon-gen-nix": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1674316125,
-        "narHash": "sha256-yUsmHUkNR/9eMnd9F/DC/cvSOaHFJDhdbaI4cG2aZcY=",
-        "ref": "refs/heads/master",
-        "rev": "32cb94962f2ec84090d0d2d36d9728ef443fe239",
-        "revCount": 119,
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
-      }
-    },
-    "horizon-gen-nix-flake": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "get-flake": "get-flake_2",
-        "horizon-gen-nix": "horizon-gen-nix",
-        "horizon-platform": "horizon-platform",
-        "lint-utils": "lint-utils_2",
-        "nixpkgs": "nixpkgs_3"
-      },
-      "locked": {
-        "lastModified": 1676371953,
-        "narHash": "sha256-F3TABf4YayjrxVJvZLz0CGCDFtuJqTuRUZ3/VjfbUd4=",
-        "ref": "refs/heads/master",
-        "rev": "49c69972aeb859b8f377121475be71bf3cfe2f87",
-        "revCount": 128,
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
-      }
-    },
-    "horizon-gen-nix_2": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1668479525,
-        "narHash": "sha256-9mG9K6vcT3cCnAMz1IPKAWQnESMQO730ImoUEqOcTsU=",
-        "ref": "refs/heads/master",
-        "rev": "db65485cc0cb0c462b84c21dff3786507de6821c",
-        "revCount": 50,
-        "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_2",
-        "get-flake": "get-flake_3",
-        "horizon-gen-nix": "horizon-gen-nix_2",
-        "lint-utils": "lint-utils",
-        "nixpkgs": "nixpkgs_2"
-      },
-      "locked": {
-        "lastModified": 1668510809,
-        "narHash": "sha256-e02lJAYXLPdGhJF8yexoiAE6ncUfOSgDxL7bb3a8ci4=",
-        "ref": "refs/heads/master",
-        "rev": "51ffeae6e4cb64c4c0b5c2af322990d3d4089ca2",
-        "revCount": 741,
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://gitlab.homotopic.tech/horizon/horizon-platform"
-      }
-    },
-    "horizon-platform_2": {
       "flake": false,
       "locked": {
         "lastModified": 1677263150,
@@ -232,50 +66,9 @@
     },
     "lint-utils": {
       "inputs": {
-        "flake-utils": "flake-utils_3",
+        "flake-utils": "flake-utils",
         "nixpkgs": "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_2": {
-      "inputs": {
-        "flake-utils": "flake-utils_4",
-        "nixpkgs": [
-          "horizon-gen-nix-flake",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1670623736,
-        "narHash": "sha256-CrA/yua5H0NfZ2tu1QZ2WpYi6pkWzyFxiwGk+KoF620=",
-        "ref": "refs/heads/master",
-        "rev": "ee76287dc9987dd01ec38d38839b788a26ee5f24",
-        "revCount": 45,
-        "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_5",
-        "nixpkgs": "nixpkgs_4"
-      },
       "locked": {
         "lastModified": 1670623736,
         "narHash": "sha256-CrA/yua5H0NfZ2tu1QZ2WpYi6pkWzyFxiwGk+KoF620=",
@@ -325,54 +118,6 @@
       }
     },
     "nixpkgs_2": {
-      "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_3": {
-      "locked": {
-        "lastModified": 1667055375,
-        "narHash": "sha256-xfSTHYxuKRiqF4dcuAFdti1OUvrC2lHpQqCHWUK5/JA=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "7f9be6a505a31f88499c5d20d11f98accf5ae6ba",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_4": {
-      "locked": {
-        "lastModified": 1644525281,
-        "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_5": {
       "locked": {
         "lastModified": 1673947312,
         "narHash": "sha256-xx/2nRwRy3bXrtry6TtydKpJpqHahjuDB5sFkQ/XNDE=",
@@ -392,10 +137,9 @@
       "inputs": {
         "flake-parts": "flake-parts",
         "get-flake": "get-flake",
-        "horizon-gen-nix-flake": "horizon-gen-nix-flake",
-        "horizon-platform": "horizon-platform_2",
-        "lint-utils": "lint-utils_3",
-        "nixpkgs": "nixpkgs_5"
+        "horizon-platform": "horizon-platform",
+        "lint-utils": "lint-utils",
+        "nixpkgs": "nixpkgs_2"
       }
     }
   },
diff --git a/flake.nix b/flake.nix
index 710c463622897cbc0d2b2486558aac05a59a50f1..a5a5fae93d274c5eb444b4b5702aa6be8d88bb3e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,7 +5,6 @@
   inputs = {
     get-flake.url = "github:ursi/get-flake";
     flake-parts.url = "github:hercules-ci/flake-parts";
-    horizon-gen-nix-flake.url = "git+https://gitlab.homotopic.tech/horizon/horizon-gen-nix";
     horizon-platform = {
       url = "git+https://gitlab.homotopic.tech/horizon/horizon-platform";
       flake = false;
@@ -20,7 +19,6 @@
     , get-flake
     , flake-parts
     , horizon-platform
-    , horizon-gen-nix-flake
     , lint-utils
     , nixpkgs
     , ...
@@ -43,7 +41,7 @@
             runtimeInputs = with pkgs; [ ghc cabal-install ];
             text = ''
               cabal update
-              ${horizon-gen-nix-flake.legacyPackages.${system}.horizon-gen-nix}/bin/horizon-gen-nix;
+              ${horizon-platform-prev.legacyPackages.${system}.horizon-gen-nix}/bin/horizon-gen-nix;
               ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt pkgs/*
               ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt initial-packages.nix
             '';
diff --git a/horizon.dhall b/horizon.dhall
index 5f76d31e575474c46d9fcfbc3d8d1c29ef062ce3..37d654246913efd11a257a89493d43934c793fbc 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -1,5 +1,6 @@
 let H =
       https://gitlab.homotopic.tech/horizon/horizon-spec/-/raw/0.6/dhall/package.dhall
+        sha256:9a80164572526dc5350f105c8db0790fdf36634629b4cf03402ba14fd173d121
 
 let packages =
       { BNFC = H.callHackage "BNFC" "2.9.4.1"
@@ -276,6 +277,7 @@ let packages =
       , derp = H.callHackage "derp" "0.1.6"
       , dhall = H.callHackage "dhall" "1.41.2"
       , dhall-json = H.callHackage "dhall-json" "1.7.11"
+      , dhall-nixpkgs = H.callHackage "dhall-nixpkgs" "1.0.9"
       , diagrams-contrib = H.callHackage "diagrams-contrib" "1.4.5"
       , diagrams-core = H.callHackage "diagrams-core" "1.5.0.1"
       , diagrams-lib = H.callHackage "diagrams-lib" "1.4.5.3"
@@ -538,6 +540,13 @@ let packages =
       , hls-retrie-plugin = H.callHackage "hls-retrie-plugin" "1.0.3.0"
       , hls-splice-plugin = H.callHackage "hls-splice-plugin" "1.0.3.0"
       , hls-test-utils = H.callHackage "hls-test-utils" "1.5.0.0"
+      , hnix =
+          H.callGit
+            "https://github.com/haskell-nix/hnix"
+            "48e962a3497893c30a749d085ebf82a8cc5cd5bd"
+            (None H.Subdir)
+      , hnix-store-core = H.callHackage "hnix-store-core" "0.6.1.0"
+      , hnix-store-remote = H.callHackage "hnix-store-remote" "0.6.0.0"
       , hopenssl = H.callHackage "hopenssl" "2.2.4"
       , horizon-gen-nix = H.callHackage "horizon-gen-nix" "0.6"
       , horizon-spec = H.callHackage "horizon-spec" "0.6.4"
@@ -673,6 +682,7 @@ let packages =
       , lens-aeson = H.callHackage "lens-aeson" "1.2.1"
       , lens-family-core = H.callHackage "lens-family-core" "2.1.2"
       , lens-family-th = H.callHackage "lens-family-th" "0.5.2.1"
+      , lens-family = H.callHackage "lens-family" "2.1.2"
       , libsodium = H.callHackage "libsodium" "1.0.18.2"
       , libsystemd-journal = H.callHackage "libsystemd-journal" "1.4.5"
       , libxml = H.callHackage "libxml" "0.1.1"
@@ -736,6 +746,7 @@ let packages =
       , mmorph = H.callHackage "mmorph" "1.2.0"
       , mockery = H.callHackage "mockery" "0.3.5"
       , mod = H.callHackage "mod" "0.1.2.2"
+      , monadlist = H.callHackage "monadlist" "0.0.2"
       , monad-control = H.callHackage "monad-control" "1.0.3.1"
       , monad-logger = H.callHackage "monad-logger" "0.3.37"
       , monad-loops = H.callHackage "monad-loops" "0.4.3"
@@ -770,9 +781,12 @@ let packages =
       , network-uri = H.callHackage "network-uri" "2.6.4.1"
       , newtype = H.callHackage "newtype" "0.2.2.0"
       , newtype-generics = H.callHackage "newtype-generics" "0.6.2"
+      , nix-derivation = H.callHackage "nix-derivation" "1.1.2"
       , nonempty-vector = H.callHackage "nonempty-vector" "0.2.1.0"
+      , non-negative = H.callHackage "non-negative" "0.1.2"
       , nothunks = H.callHackage "nothunks" "0.1.3"
       , numeric-extras = H.callHackage "numeric-extras" "0.1"
+      , numeric-prelude = H.callHackage "numeric-prelude" "0.4.4"
       , numtype-dk = H.callHackage "numtype-dk" "0.5.0.3"
       , odd-jobs =
           H.callGit
@@ -1033,6 +1047,7 @@ let packages =
       , some = H.callHackage "some" "1.0.4"
       , sop-core = H.callHackage "sop-core" "0.5.0.1"
       , sorted-list = H.callHackage "sorted-list" "0.2.1.0"
+      , sort = H.callHackage "sort" "1.0.0.0"
       , souffle-haskell = H.callHackage "souffle-haskell" "3.5.0"
       , special-values = H.callHackage "special-values" "0.1.0.0"
       , split = H.callHackage "split" "0.2.3.3"
@@ -1189,6 +1204,7 @@ let packages =
       , utility-ht = H.callHackage "utility-ht" "0.0.16"
       , uuid = H.callHackage "uuid" "1.3.15"
       , uuid-types = H.callHackage "uuid-types" "1.0.5"
+      , validation = H.callHackage "validation" "1.1.2"
       , validation-selective = H.callHackage "validation-selective" "0.1.0.2"
       , validity = H.callHackage "validity" "0.12.0.1"
       , validity-aeson = H.callHackage "validity-aeson" "0.2.0.5"
diff --git a/initial-packages.nix b/initial-packages.nix
index 6a41f1079d1fcbf87dde842b6d78a175f7bb0575..432a69f56de424df5ece1ccb8fa8937dfe26fe89 100644
--- a/initial-packages.nix
+++ b/initial-packages.nix
@@ -435,6 +435,8 @@ self: with pkgs.haskell.lib; {
 
   dhall-json = self.callPackage (./pkgs/dhall-json.nix) { };
 
+  dhall-nixpkgs = self.callPackage (./pkgs/dhall-nixpkgs.nix) { };
+
   diagrams-contrib = self.callPackage (./pkgs/diagrams-contrib.nix) { };
 
   diagrams-core = self.callPackage (./pkgs/diagrams-core.nix) { };
@@ -833,6 +835,12 @@ self: with pkgs.haskell.lib; {
 
   hls-test-utils = self.callPackage (./pkgs/hls-test-utils.nix) { };
 
+  hnix = self.callPackage (./pkgs/hnix.nix) { };
+
+  hnix-store-core = self.callPackage (./pkgs/hnix-store-core.nix) { };
+
+  hnix-store-remote = self.callPackage (./pkgs/hnix-store-remote.nix) { };
+
   hopenssl = self.callPackage (./pkgs/hopenssl.nix) { };
 
   horizon-gen-nix = self.callPackage (./pkgs/horizon-gen-nix.nix) { };
@@ -1051,6 +1059,8 @@ self: with pkgs.haskell.lib; {
 
   lens-aeson = self.callPackage (./pkgs/lens-aeson.nix) { };
 
+  lens-family = self.callPackage (./pkgs/lens-family.nix) { };
+
   lens-family-core = self.callPackage (./pkgs/lens-family-core.nix) { };
 
   lens-family-th = self.callPackage (./pkgs/lens-family-th.nix) { };
@@ -1187,6 +1197,8 @@ self: with pkgs.haskell.lib; {
 
   monad-time = self.callPackage (./pkgs/monad-time.nix) { };
 
+  monadlist = self.callPackage (./pkgs/monadlist.nix) { };
+
   monads-tf = self.callPackage (./pkgs/monads-tf.nix) { };
 
   mono-traversable = self.callPackage (./pkgs/mono-traversable.nix) { };
@@ -1237,12 +1249,18 @@ self: with pkgs.haskell.lib; {
 
   newtype-generics = self.callPackage (./pkgs/newtype-generics.nix) { };
 
+  nix-derivation = self.callPackage (./pkgs/nix-derivation.nix) { };
+
+  non-negative = self.callPackage (./pkgs/non-negative.nix) { };
+
   nonempty-vector = self.callPackage (./pkgs/nonempty-vector.nix) { };
 
   nothunks = self.callPackage (./pkgs/nothunks.nix) { };
 
   numeric-extras = self.callPackage (./pkgs/numeric-extras.nix) { };
 
+  numeric-prelude = self.callPackage (./pkgs/numeric-prelude.nix) { };
+
   numtype-dk = self.callPackage (./pkgs/numtype-dk.nix) { };
 
   odd-jobs = self.callPackage (./pkgs/odd-jobs.nix) { };
@@ -1669,6 +1687,8 @@ self: with pkgs.haskell.lib; {
 
   sop-core = self.callPackage (./pkgs/sop-core.nix) { };
 
+  sort = self.callPackage (./pkgs/sort.nix) { };
+
   sorted-list = self.callPackage (./pkgs/sorted-list.nix) { };
 
   souffle-haskell = self.callPackage (./pkgs/souffle-haskell.nix) { };
@@ -1949,6 +1969,8 @@ self: with pkgs.haskell.lib; {
 
   uuid-types = self.callPackage (./pkgs/uuid-types.nix) { };
 
+  validation = self.callPackage (./pkgs/validation.nix) { };
+
   validation-selective = self.callPackage (./pkgs/validation-selective.nix) { };
 
   validity = self.callPackage (./pkgs/validity.nix) { };
diff --git a/pkgs/dhall-nixpkgs.nix b/pkgs/dhall-nixpkgs.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5e73fc5bc536b4fdaad522f744361f64a203e55a
--- /dev/null
+++ b/pkgs/dhall-nixpkgs.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, aeson
+, base
+, base16-bytestring
+, base64-bytestring
+, bytestring
+, data-fix
+, dhall
+, foldl
+, hnix
+, lens-family-core
+, lib
+, megaparsec
+, mmorph
+, neat-interpolation
+, network-uri
+, optparse-applicative
+, prettyprinter
+, text
+, transformers
+, turtle
+}:
+mkDerivation {
+  pname = "dhall-nixpkgs";
+  version = "1.0.9";
+  sha256 = "a31c656973f30ddf4d750db75fa351d89a38e7a3937743a8f8f0d71f211611c8";
+  revision = "1";
+  editedCabalFile = "0140jhwf5mz9i5k1v0mbljhr77rgfvhbs5s3ak9naagnxszy725j";
+  isLibrary = false;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  executableHaskellDepends = [
+    aeson
+    base
+    base16-bytestring
+    base64-bytestring
+    bytestring
+    data-fix
+    dhall
+    foldl
+    hnix
+    lens-family-core
+    megaparsec
+    mmorph
+    neat-interpolation
+    network-uri
+    optparse-applicative
+    prettyprinter
+    text
+    transformers
+    turtle
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Convert Dhall projects to Nix packages";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/hnix-store-core.nix b/pkgs/hnix-store-core.nix
new file mode 100644
index 0000000000000000000000000000000000000000..a68b6866b29cb7e15a00fc702bca039aa38baf65
--- /dev/null
+++ b/pkgs/hnix-store-core.nix
@@ -0,0 +1,106 @@
+{ mkDerivation
+, algebraic-graphs
+, attoparsec
+, base
+, base16-bytestring
+, base64-bytestring
+, binary
+, bytestring
+, cereal
+, containers
+, cryptonite
+, directory
+, filepath
+, hashable
+, hspec
+, lib
+, lifted-base
+, memory
+, monad-control
+, mtl
+, nix-derivation
+, process
+, relude
+, saltine
+, tasty
+, tasty-discover
+, tasty-golden
+, tasty-hspec
+, tasty-hunit
+, tasty-quickcheck
+, temporary
+, text
+, time
+, unix
+, unordered-containers
+, vector
+}:
+mkDerivation {
+  pname = "hnix-store-core";
+  version = "0.6.1.0";
+  sha256 = "779c1ea6802b0ff4f217d95c7ad9963cf136c9d180f07f9db0182ab695e0f1af";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    algebraic-graphs
+    attoparsec
+    base
+    base16-bytestring
+    base64-bytestring
+    bytestring
+    cereal
+    containers
+    cryptonite
+    directory
+    filepath
+    hashable
+    lifted-base
+    memory
+    monad-control
+    mtl
+    nix-derivation
+    relude
+    saltine
+    text
+    time
+    unix
+    unordered-containers
+    vector
+  ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    base16-bytestring
+    base64-bytestring
+    binary
+    bytestring
+    containers
+    cryptonite
+    directory
+    filepath
+    hspec
+    process
+    relude
+    tasty
+    tasty-golden
+    tasty-hspec
+    tasty-hunit
+    tasty-quickcheck
+    temporary
+    text
+    unix
+  ];
+  testToolDepends = [ tasty-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-nix/hnix-store";
+  description = "Core effects for interacting with the Nix store";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hnix-store-remote.nix b/pkgs/hnix-store-remote.nix
new file mode 100644
index 0000000000000000000000000000000000000000..977d7e9137d3520c9ad80d995558ea8c52e5bc84
--- /dev/null
+++ b/pkgs/hnix-store-remote.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, attoparsec
+, base
+, binary
+, bytestring
+, containers
+, cryptonite
+, hnix-store-core
+, lib
+, mtl
+, network
+, nix-derivation
+, relude
+, text
+, time
+, unordered-containers
+}:
+mkDerivation {
+  pname = "hnix-store-remote";
+  version = "0.6.0.0";
+  sha256 = "f96cfc2ec7d0ccbaa1c6366a2b7f83b3e26807e63dae3d144f5de6f24d58d1d7";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    binary
+    bytestring
+    containers
+    cryptonite
+    hnix-store-core
+    mtl
+    network
+    nix-derivation
+    relude
+    text
+    time
+    unordered-containers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-nix/hnix-store";
+  description = "Remote hnix store";
+  license = lib.licenses.asl20;
+  broken = false;
+}
diff --git a/pkgs/hnix.nix b/pkgs/hnix.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8fd8e818bd0f8596bedef58a6bae8ea9b0abdf0b
--- /dev/null
+++ b/pkgs/hnix.nix
@@ -0,0 +1,218 @@
+{ mkDerivation
+, Diff
+, Glob
+, aeson
+, array
+, base
+, base16-bytestring
+, binary
+, bytestring
+, comonad
+, containers
+, criterion
+, cryptonite
+, data-fix
+, deepseq
+, deriving-compat
+, directory
+, exceptions
+, extra
+, fetchgit
+, filepath
+, free
+, gitrev
+, hashable
+, hashing
+, haskeline
+, hedgehog
+, hnix-store-core
+, hnix-store-remote
+, http-client
+, http-client-tls
+, http-types
+, lens-family
+, lens-family-core
+, lens-family-th
+, lib
+, logict
+, megaparsec
+, monad-control
+, monadlist
+, mtl
+, neat-interpolation
+, optparse-applicative
+, parser-combinators
+, pretty-show
+, prettyprinter
+, process
+, ref-tf
+, regex-tdfa
+, relude
+, repline
+, scientific
+, semialign
+, serialise
+, some
+, split
+, syb
+, tasty
+, tasty-hedgehog
+, tasty-hunit
+, tasty-th
+, template-haskell
+, text
+, th-lift-instances
+, these
+, time
+, transformers
+, transformers-base
+, unix-compat
+, unordered-containers
+, vector
+, xml
+}:
+mkDerivation {
+  pname = "hnix";
+  version = "0.16.0";
+  src = fetchgit {
+    url = "https://github.com/haskell-nix/hnix";
+    sha256 = "1ga7dg59ghq1w4j8mgy0lhk98lrqx1wmq5z6xbpf1i7qka5x8l1l";
+    rev = "48e962a3497893c30a749d085ebf82a8cc5cd5bd";
+    fetchSubmodules = true;
+  };
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    aeson
+    array
+    base
+    base16-bytestring
+    binary
+    bytestring
+    comonad
+    containers
+    cryptonite
+    data-fix
+    deepseq
+    deriving-compat
+    directory
+    exceptions
+    extra
+    filepath
+    free
+    gitrev
+    hashable
+    hashing
+    hnix-store-core
+    hnix-store-remote
+    http-client
+    http-client-tls
+    http-types
+    lens-family
+    lens-family-core
+    lens-family-th
+    logict
+    megaparsec
+    monad-control
+    monadlist
+    mtl
+    neat-interpolation
+    optparse-applicative
+    parser-combinators
+    pretty-show
+    prettyprinter
+    process
+    ref-tf
+    regex-tdfa
+    relude
+    scientific
+    semialign
+    serialise
+    some
+    split
+    syb
+    template-haskell
+    text
+    th-lift-instances
+    these
+    time
+    transformers
+    transformers-base
+    unix-compat
+    unordered-containers
+    vector
+    xml
+  ];
+  executableHaskellDepends = [
+    aeson
+    base
+    comonad
+    containers
+    data-fix
+    deepseq
+    exceptions
+    filepath
+    free
+    haskeline
+    optparse-applicative
+    pretty-show
+    prettyprinter
+    ref-tf
+    relude
+    repline
+    serialise
+    template-haskell
+    time
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    data-fix
+    Diff
+    directory
+    exceptions
+    filepath
+    Glob
+    hedgehog
+    megaparsec
+    neat-interpolation
+    optparse-applicative
+    pretty-show
+    prettyprinter
+    process
+    relude
+    serialise
+    split
+    tasty
+    tasty-hedgehog
+    tasty-hunit
+    tasty-th
+    template-haskell
+    time
+    unix-compat
+  ];
+  benchmarkHaskellDepends = [
+    base
+    criterion
+    data-fix
+    exceptions
+    filepath
+    optparse-applicative
+    relude
+    serialise
+    template-haskell
+    time
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell-nix/hnix#readme";
+  description = "Haskell implementation of the Nix language";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/lens-family.nix b/pkgs/lens-family.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2a2a29415b38de43ed2c2f7c5185f79f5748e5a5
--- /dev/null
+++ b/pkgs/lens-family.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, containers
+, lens-family-core
+, lib
+, mtl
+, transformers
+}:
+mkDerivation {
+  pname = "lens-family";
+  version = "2.1.2";
+  sha256 = "2b60afc3afc03b6e328fc96e291e21bb0a63b563657cabe7ba5febd471283648";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    containers
+    lens-family-core
+    mtl
+    transformers
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Lens Families";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/monadlist.nix b/pkgs/monadlist.nix
new file mode 100644
index 0000000000000000000000000000000000000000..671e6380955e35eff8312abb93c8237a2b013c89
--- /dev/null
+++ b/pkgs/monadlist.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "monadlist";
+  version = "0.0.2";
+  sha256 = "06bbe82c9fc2a35048788367da74bb5f79c7e6be2ae38eca20f332f8cbc5fdfe";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Monadic versions of list functions";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/nix-derivation.nix b/pkgs/nix-derivation.nix
new file mode 100644
index 0000000000000000000000000000000000000000..69fdc5824b79c9e5f9b27986ef34df0562349e87
--- /dev/null
+++ b/pkgs/nix-derivation.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, QuickCheck
+, attoparsec
+, base
+, containers
+, criterion
+, deepseq
+, filepath
+, lib
+, pretty-show
+, text
+, vector
+}:
+mkDerivation {
+  pname = "nix-derivation";
+  version = "1.1.2";
+  sha256 = "c7ff162f245021d7ba8ea24b993b1df2241744f6e0a78b0783092182fbea8808";
+  revision = "4";
+  editedCabalFile = "1bvrnaw0qpiaxdnwvdf7w1ybds4b5c5z8wfizla5pby2lnf8cv0x";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    attoparsec
+    base
+    containers
+    deepseq
+    filepath
+    text
+    vector
+  ];
+  executableHaskellDepends = [ attoparsec base pretty-show text ];
+  testHaskellDepends = [
+    attoparsec
+    base
+    filepath
+    QuickCheck
+    text
+    vector
+  ];
+  benchmarkHaskellDepends = [ attoparsec base criterion text ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Parse and render *.drv files";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/non-negative.nix b/pkgs/non-negative.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6493d4db91293dfbf894975b7c4a2e70ad17db24
--- /dev/null
+++ b/pkgs/non-negative.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, QuickCheck, base, lib, semigroups, utility-ht }:
+mkDerivation {
+  pname = "non-negative";
+  version = "0.1.2";
+  sha256 = "5614acf55f3c16a21fea263e375e8993f9b859e21997b0410c74fe6642c20138";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base QuickCheck semigroups utility-ht ];
+  testHaskellDepends = [ base QuickCheck semigroups utility-ht ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://code.haskell.org/~thielema/non-negative/";
+  description = "Non-negative numbers";
+  license = "GPL";
+  broken = false;
+}
diff --git a/pkgs/numeric-prelude.nix b/pkgs/numeric-prelude.nix
new file mode 100644
index 0000000000000000000000000000000000000000..66aa20d4035bfe31fbcf74d05b2b7679b77a3ba0
--- /dev/null
+++ b/pkgs/numeric-prelude.nix
@@ -0,0 +1,56 @@
+{ mkDerivation
+, QuickCheck
+, array
+, base
+, containers
+, deepseq
+, doctest-exitcode-stdio
+, doctest-lib
+, lib
+, non-negative
+, parsec
+, random
+, semigroups
+, storable-record
+, utility-ht
+}:
+mkDerivation {
+  pname = "numeric-prelude";
+  version = "0.4.4";
+  sha256 = "5a32f6b4dab913c68db30acc2e70e41e4b8f9fb00d25407ed4b0e4ae85cfa613";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    deepseq
+    non-negative
+    parsec
+    QuickCheck
+    random
+    semigroups
+    storable-record
+    utility-ht
+  ];
+  testHaskellDepends = [
+    base
+    doctest-exitcode-stdio
+    doctest-lib
+    QuickCheck
+    random
+    utility-ht
+  ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/haskellwiki/Numeric_Prelude";
+  description = "An experimental alternative hierarchy of numeric type classes";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/sort.nix b/pkgs/sort.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e7f57c36728f8030426a41f99e809249ceef9143
--- /dev/null
+++ b/pkgs/sort.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "sort";
+  version = "1.0.0.0";
+  sha256 = "cee3894879cb4b2150331eca96d5d27f51a6114bcb082d1d8dded55881f5770d";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/cdornan/sort";
+  description = "A Haskell sorting toolkit";
+  license = lib.licenses.bsd3;
+  broken = false;
+}
diff --git a/pkgs/validation.nix b/pkgs/validation.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7313b0969c7d4880267e0b879e5c93d5b9ddf695
--- /dev/null
+++ b/pkgs/validation.nix
@@ -0,0 +1,41 @@
+{ mkDerivation
+, HUnit
+, assoc
+, base
+, bifunctors
+, deepseq
+, hedgehog
+, lens
+, lib
+, semigroupoids
+, semigroups
+}:
+mkDerivation {
+  pname = "validation";
+  version = "1.1.2";
+  sha256 = "1dcd52a577d06fbeb66a5acdeb125a438fc9aa4f07ef854cd93f4123a7f81096";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    assoc
+    base
+    bifunctors
+    deepseq
+    lens
+    semigroupoids
+    semigroups
+  ];
+  testHaskellDepends = [ base hedgehog HUnit lens semigroups ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/qfpl/validation";
+  description = "A data-type like Either but with an accumulating Applicative";
+  license = lib.licenses.bsd3;
+  broken = false;
+}