diff --git a/dhall/package.dhall b/dhall/package.dhall
index 085e964e69e75fe5caf1e7a83d330f3a3fd25c22..87c3c431efc60abc1f3cb01f3f2e1d2036589dff 100644
--- a/dhall/package.dhall
+++ b/dhall/package.dhall
@@ -72,42 +72,28 @@ let HorizonExport =
       >
 
 let callHackage
-    : Name → Version → PackageEntry
+    : Name → Version → HaskellPackage.Type
     = λ(name : Name) →
       λ(version : Version) →
-        { mapKey = name
-        , mapValue = HaskellPackage::{
-          , source = HaskellSource.FromHackage { name, version }
-          }
-        }
+        HaskellPackage::{ source = HaskellSource.FromHackage { name, version } }
 
 let callGit
-    : Name → Url → Revision → Optional Subdir → PackageEntry
-    = λ(name : Name) →
-      λ(url : Url) →
+    : Url → Revision → Optional Subdir → HaskellPackage.Type
+    = λ(url : Url) →
       λ(revision : Revision) →
       λ(subdir : Optional Subdir) →
-        { mapKey = name
-        , mapValue = HaskellPackage::{
-          , source = HaskellSource.FromGit { url, revision, subdir }
-          }
+        HaskellPackage::{
+        , source = HaskellSource.FromGit { url, revision, subdir }
         }
 
 let callLocal
-    : Name → Subdir → PackageEntry
-    = λ(name : Name) →
-      λ(subdir : Subdir) →
-        { mapKey = name
-        , mapValue = HaskellPackage::{ source = HaskellSource.FromLocal subdir }
-        }
+    : Subdir → HaskellPackage.Type
+    = λ(subdir : Subdir) →
+        HaskellPackage::{ source = HaskellSource.FromLocal subdir }
 
 let callTarball
-    : Name → Url → PackageEntry
-    = λ(name : Name) →
-      λ(url : Url) →
-        { mapKey = name
-        , mapValue = HaskellPackage::{ source = HaskellSource.FromTarball url }
-        }
+    : Url → HaskellPackage.Type
+    = λ(url : Url) → HaskellPackage::{ source = HaskellSource.FromTarball url }
 
 let modPackageList
     : Modifiers.Type → PackageList → PackageList
diff --git a/test/data/modified-overlay/input.dhall b/test/data/modified-overlay/input.dhall
index 56bd41873a1f07c76e0fe4ddd84ea29ff20138f9..3f19353a434f4a88caa082c4a348be352f9d6e01 100644
--- a/test/data/modified-overlay/input.dhall
+++ b/test/data/modified-overlay/input.dhall
@@ -2,15 +2,17 @@ let H = ../../../dhall/package.dhall
 
 in    H.modPackageList
         H.Modifiers::{ doCheck = True, doJailbreak = False }
-        [ H.callHackage "lens" "5.2"
-        , H.callGit
-            "Cabal-syntax"
-            "https://gitlab.haskell.org/ghc/packages/Cabal"
-            "e714824c6e652bf894f914bc57feccc15759668a"
-            (Some "Cabal-syntax")
-        , H.callTarball
-            "network-mux"
-            "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-        , H.callLocal "myPackage" "./myPackage"
-        ]
+        ( toMap
+            { lens = H.callHackage "lens" "5.2"
+            , Cabal-syntax =
+                H.callGit
+                  "https://gitlab.haskell.org/ghc/packages/Cabal"
+                  "e714824c6e652bf894f914bc57feccc15759668a"
+                  (Some "Cabal-syntax")
+            , network-mux =
+                H.callTarball
+                  "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+            , myPackage = H.callLocal "./myPackage"
+            }
+        )
     : H.Overlay
diff --git a/test/data/modified-package-set/input.dhall b/test/data/modified-package-set/input.dhall
index baf8eaac4a3138224488ff6608b9581614a2b077..5cc071fc14af56eefb69479008214a103bd9a14a 100644
--- a/test/data/modified-package-set/input.dhall
+++ b/test/data/modified-package-set/input.dhall
@@ -1,19 +1,21 @@
 let H = ../../../dhall/package.dhall
 
-in    H.modPackageSet
-        H.Modifiers::{ doCheck = True, doJailbreak = False }
-        { compiler = "ghc-9.4.2"
-        , packages =
-          [ H.callHackage "lens" "5.2"
-          , H.callGit
-              "Cabal-syntax"
-              "https://gitlab.haskell.org/ghc/packages/Cabal"
-              "e714824c6e652bf894f914bc57feccc15759668a"
-              (Some "Cabal-syntax")
-          , H.callTarball
-              "network-mux"
-              "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-          , H.callLocal "myPackage" "./myPackage"
-          ]
-        }
+in    { compiler = "ghc-9.4.2"
+      , packages =
+          H.modPackageList
+            H.Modifiers::{ doCheck = True, doJailbreak = False }
+            ( toMap
+                { lens = H.callHackage "lens" "5.2"
+                , Cabal-syntax =
+                    H.callGit
+                      "https://gitlab.haskell.org/ghc/packages/Cabal"
+                      "e714824c6e652bf894f914bc57feccc15759668a"
+                      (Some "Cabal-syntax")
+                , network-mux =
+                    H.callTarball
+                      "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+                , myPackage = H.callLocal "./myPackage"
+                }
+            )
+      }
     : H.PackageSet
diff --git a/test/data/sample-overlay-export/input.dhall b/test/data/sample-overlay-export/input.dhall
index d8fc0d258b48b74fc47a7d5586a411c17a78d0bc..0018b054e6a0255b9b9036c5facdf89fecc6bf80 100644
--- a/test/data/sample-overlay-export/input.dhall
+++ b/test/data/sample-overlay-export/input.dhall
@@ -3,16 +3,16 @@ let H = ../../../dhall/package.dhall
 in  H.HorizonExport.MakeOverlay
       { overlayFile = "overlay.nix"
       , packagesDir = "pkgs"
-      , overlay =
-        [ H.callHackage "lens" "5.2"
-        , H.callGit
-            "Cabal-syntax"
-            "https://gitlab.haskell.org/ghc/packages/Cabal"
-            "e714824c6e652bf894f914bc57feccc15759668a"
-            (Some "Cabal-syntax")
-        , H.callTarball
-            "network-mux"
-            "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-        , H.callLocal "myPackage" "./myPackage"
-        ]
+      , overlay = toMap
+          { lens = H.callHackage "lens" "5.2"
+          , Cabal-syntax =
+              H.callGit
+                "https://gitlab.haskell.org/ghc/packages/Cabal"
+                "e714824c6e652bf894f914bc57feccc15759668a"
+                (Some "Cabal-syntax")
+          , network-mux =
+              H.callTarball
+                "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+          , myPackage = H.callLocal "./myPackage"
+          }
       }
diff --git a/test/data/sample-overlay/input.dhall b/test/data/sample-overlay/input.dhall
index 180d10f69503f13e17cc5b2c64fa3bcec97efefe..0d43347cdcf2534d4a41c31213728ac78dc28f45 100644
--- a/test/data/sample-overlay/input.dhall
+++ b/test/data/sample-overlay/input.dhall
@@ -1,14 +1,15 @@
 let H = ../../../dhall/package.dhall
 
-in    [ H.callHackage "lens" "5.2"
-      , H.callGit
-          "Cabal-syntax"
-          "https://gitlab.haskell.org/ghc/packages/Cabal"
-          "e714824c6e652bf894f914bc57feccc15759668a"
-          (Some "Cabal-syntax")
-      , H.callTarball
-          "network-mux"
-          "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-      , H.callLocal "myPackage" "./myPackage"
-      ]
+in  toMap
+      { lens = H.callHackage "lens" "5.2"
+      , Cabal-syntax =
+          H.callGit
+            "https://gitlab.haskell.org/ghc/packages/Cabal"
+            "e714824c6e652bf894f914bc57feccc15759668a"
+            (Some "Cabal-syntax")
+      , network-mux =
+          H.callTarball
+            "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+      , myPackage = H.callLocal "./myPackage"
+      }
     : H.Overlay
diff --git a/test/data/sample-package-set-export/input.dhall b/test/data/sample-package-set-export/input.dhall
index 0d21aae795c8071fb8c43edce74b2ff82cdf104c..857d312e2a563b794cb05d85d46dd28ebe82d594 100644
--- a/test/data/sample-package-set-export/input.dhall
+++ b/test/data/sample-package-set-export/input.dhall
@@ -5,17 +5,17 @@ in  H.HorizonExport.MakePackageSet
       , packagesDir = "pkgs"
       , packageSet =
         { compiler = "ghc-9.4.2"
-        , packages =
-          [ H.callHackage "lens" "5.2"
-          , H.callGit
-              "Cabal-syntax"
-              "https://gitlab.haskell.org/ghc/packages/Cabal"
-              "e714824c6e652bf894f914bc57feccc15759668a"
-              (Some "Cabal-syntax")
-          , H.callTarball
-              "network-mux"
-              "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-          , H.callLocal "myPackage" "./myPackage"
-          ]
+        , packages = toMap
+            { lens = H.callHackage "lens" "5.2"
+            , Cabal-syntax =
+                H.callGit
+                  "https://gitlab.haskell.org/ghc/packages/Cabal"
+                  "e714824c6e652bf894f914bc57feccc15759668a"
+                  (Some "Cabal-syntax")
+            , network-mux =
+                H.callTarball
+                  "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+            , myPackage = H.callLocal "./myPackage"
+            }
         }
       }
diff --git a/test/data/sample-package-set/input.dhall b/test/data/sample-package-set/input.dhall
index 46f95e4f193b7e3f1b03f8908b3ace000feaa69c..7b8add62ff08380145a20035943e6f709fe9f3d0 100644
--- a/test/data/sample-package-set/input.dhall
+++ b/test/data/sample-package-set/input.dhall
@@ -1,17 +1,17 @@
 let H = ../../../dhall/package.dhall
 
 in    { compiler = "ghc-9.4.2"
-      , packages =
-        [ H.callHackage "lens" "5.2"
-        , H.callGit
-            "Cabal-syntax"
-            "https://gitlab.haskell.org/ghc/packages/Cabal"
-            "e714824c6e652bf894f914bc57feccc15759668a"
-            (Some "Cabal-syntax")
-        , H.callTarball
-            "network-mux"
-            "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
-        , H.callLocal "myPackage" "./myPackage"
-        ]
+      , packages = toMap
+          { lens = H.callHackage "lens" "5.2"
+          , Cabal-syntax =
+              H.callGit
+                "https://gitlab.haskell.org/ghc/packages/Cabal"
+                "e714824c6e652bf894f914bc57feccc15759668a"
+                (Some "Cabal-syntax")
+          , network-mux =
+              H.callTarball
+                "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
+          , myPackage = H.callLocal "./myPackage"
+          }
       }
     : H.PackageSet