diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for horizon-spec
 
+## v0.5
+
+* Add `doBenchmark`, `includeBenchmarks`, `includeExecutables` and
+  `includeTests` Modifiers.
+
 ## v0.4.1
 
 * Add `PackagesDir` to the list of exports
diff --git a/dhall/package.dhall b/dhall/package.dhall
--- a/dhall/package.dhall
+++ b/dhall/package.dhall
@@ -25,9 +25,24 @@
       >
 
 let Modifiers =
-      { Type = { doJailbreak : Bool, doCheck : Bool, enableProfiling : Bool }
+      { Type =
+          { doBenchmark : Bool
+          , doCheck : Bool
+          , doJailbreak : Bool
+          , enableProfiling : Bool
+          , includeBenchmarks : Bool
+          , includeExecutables : Bool
+          , includeTests : Bool
+          }
       , default =
-        { doJailbreak = True, doCheck = False, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = False
+        , doJailbreak = True
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       }
 
 let Attr = λ(a : Type) → { mapKey : Text, mapValue : a }
@@ -72,42 +87,28 @@
       >
 
 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/horizon-spec.cabal b/horizon-spec.cabal
--- a/horizon-spec.cabal
+++ b/horizon-spec.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               horizon-spec
-version:            0.4.1
+version:            0.5
 synopsis:           Horizon Stable Package Set Type Definitions
 description:
   This package contains the type definitions for the Horizon stable package set (https://horizon-haskell.net). This is a schema used to define package sets sourcing from hackage and git.
diff --git a/src/Horizon/Spec.hs b/src/Horizon/Spec.hs
--- a/src/Horizon/Spec.hs
+++ b/src/Horizon/Spec.hs
@@ -10,7 +10,7 @@
   , HaskellSource(FromGit, FromHackage, FromTarball, FromLocal)
   , HorizonExport(MakePackageSet, MakeOverlay)
   , LocalSource(MkLocalSource, fromLocalSource)
-  , Modifiers(doJailbreak, doCheck, enableProfiling)
+  , Modifiers(doJailbreak, doBenchmark, doCheck, enableProfiling, includeBenchmarks, includeExecutables, includeTests)
   , Name(MkName, fromName)
   , OverlayExportSettings(MkOverlayExportSettings, packagesDir, overlayFile, overlay)
   , OverlayFile(MkOverlayFile, fromOverlayFile)
@@ -110,9 +110,13 @@
 
 type Modifiers :: Type
 data Modifiers where
-  MkModifiers :: { doJailbreak :: Bool
+  MkModifiers :: { doBenchmark :: Bool
                  , doCheck :: Bool
-                 , enableProfiling :: Bool } -> Modifiers
+                 , doJailbreak :: Bool
+                 , enableProfiling :: Bool
+                 , includeBenchmarks :: Bool
+                 , includeExecutables :: Bool
+                 , includeTests :: Bool } -> Modifiers
   deriving stock (Show, Eq, Generic)
   deriving anyclass (FromDhall, ToDhall)
 
diff --git a/test/data/modified-overlay/input.dhall b/test/data/modified-overlay/input.dhall
--- a/test/data/modified-overlay/input.dhall
+++ b/test/data/modified-overlay/input.dhall
@@ -2,15 +2,17 @@
 
 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-overlay/output.golden b/test/data/modified-overlay/output.golden
--- a/test/data/modified-overlay/output.golden
+++ b/test/data/modified-overlay/output.golden
@@ -11,7 +11,14 @@
           , subdir = Some "Cabal-syntax/"
           }
     , modifiers =
-      { doJailbreak = False, doCheck = True, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = True
+      , doJailbreak = False
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -25,7 +32,14 @@
         >.FromHackage
           { name = "lens", version = "5.2" }
     , modifiers =
-      { doJailbreak = False, doCheck = True, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = True
+      , doJailbreak = False
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -39,7 +53,14 @@
         >.FromLocal
           "myPackage/"
     , modifiers =
-      { doJailbreak = False, doCheck = True, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = True
+      , doJailbreak = False
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -53,7 +74,14 @@
         >.FromTarball
           "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
     , modifiers =
-      { doJailbreak = False, doCheck = True, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = True
+      , doJailbreak = False
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
diff --git a/test/data/modified-package-set/input.dhall b/test/data/modified-package-set/input.dhall
--- 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/modified-package-set/output.golden b/test/data/modified-package-set/output.golden
--- a/test/data/modified-package-set/output.golden
+++ b/test/data/modified-package-set/output.golden
@@ -13,7 +13,14 @@
             , subdir = Some "Cabal-syntax/"
             }
       , modifiers =
-        { doJailbreak = False, doCheck = True, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = True
+        , doJailbreak = False
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -27,7 +34,14 @@
           >.FromHackage
             { name = "lens", version = "5.2" }
       , modifiers =
-        { doJailbreak = False, doCheck = True, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = True
+        , doJailbreak = False
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -41,7 +55,14 @@
           >.FromLocal
             "myPackage/"
       , modifiers =
-        { doJailbreak = False, doCheck = True, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = True
+        , doJailbreak = False
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -55,7 +76,14 @@
           >.FromTarball
             "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
       , modifiers =
-        { doJailbreak = False, doCheck = True, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = True
+        , doJailbreak = False
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
diff --git a/test/data/sample-overlay/input.dhall b/test/data/sample-overlay/input.dhall
--- 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-overlay/output.golden b/test/data/sample-overlay/output.golden
--- a/test/data/sample-overlay/output.golden
+++ b/test/data/sample-overlay/output.golden
@@ -11,7 +11,14 @@
           , subdir = Some "Cabal-syntax/"
           }
     , modifiers =
-      { doJailbreak = True, doCheck = False, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = False
+      , doJailbreak = True
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -25,7 +32,14 @@
         >.FromHackage
           { name = "lens", version = "5.2" }
     , modifiers =
-      { doJailbreak = True, doCheck = False, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = False
+      , doJailbreak = True
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -39,7 +53,14 @@
         >.FromLocal
           "myPackage/"
     , modifiers =
-      { doJailbreak = True, doCheck = False, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = False
+      , doJailbreak = True
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
@@ -53,7 +74,14 @@
         >.FromTarball
           "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
     , modifiers =
-      { doJailbreak = True, doCheck = False, enableProfiling = True }
+      { doBenchmark = False
+      , doCheck = False
+      , doJailbreak = True
+      , enableProfiling = True
+      , includeBenchmarks = True
+      , includeExecutables = True
+      , includeTests = True
+      }
     , flags = [] : List < Enable : Text | Disable : Text >
     }
   }
diff --git a/test/data/sample-package-set/input.dhall b/test/data/sample-package-set/input.dhall
--- 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
diff --git a/test/data/sample-package-set/output.golden b/test/data/sample-package-set/output.golden
--- a/test/data/sample-package-set/output.golden
+++ b/test/data/sample-package-set/output.golden
@@ -13,7 +13,14 @@
             , subdir = Some "Cabal-syntax/"
             }
       , modifiers =
-        { doJailbreak = True, doCheck = False, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = False
+        , doJailbreak = True
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -27,7 +34,14 @@
           >.FromHackage
             { name = "lens", version = "5.2" }
       , modifiers =
-        { doJailbreak = True, doCheck = False, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = False
+        , doJailbreak = True
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -41,7 +55,14 @@
           >.FromLocal
             "myPackage/"
       , modifiers =
-        { doJailbreak = True, doCheck = False, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = False
+        , doJailbreak = True
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
@@ -55,7 +76,14 @@
           >.FromTarball
             "https://input-output-hk.github.io/cardano-haskell-packages/package/network-mux-0.2.0.0.tar.gz"
       , modifiers =
-        { doJailbreak = True, doCheck = False, enableProfiling = True }
+        { doBenchmark = False
+        , doCheck = False
+        , doJailbreak = True
+        , enableProfiling = True
+        , includeBenchmarks = True
+        , includeExecutables = True
+        , includeTests = True
+        }
       , flags = [] : List < Enable : Text | Disable : Text >
       }
     }
