diff --git a/ChangeLog.md b/ChangeLog.md
index f7d711eabfc76fd74c69d82aca47d9db34242cae..315f084e9bbf1fee92338c5c40b371546c36ad5b 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for horizon-spec
 
+## v0.10.0
+
+* Add `subdir` field to `FromTarball`.
+* Add `callHorizonGitlab`.
+
 ## v0.9.0
 
 * Add `example.dhall`.
diff --git a/horizon-spec/example.dhall b/horizon-spec/example.dhall
index 0fc56ff4a3a7d54a7fee58c51d480982dd84b0b6..8cb5b1a3f97e85782bfff7d37a72bd12838e5918 100644
--- a/horizon-spec/example.dhall
+++ b/horizon-spec/example.dhall
@@ -1,6 +1,6 @@
 let H =
       ./package.dhall
-        sha256:f52fc6fc1f8569c1afbc6be778f751242592127164666ffe2e8a9cbe7f2059a8
+        sha256:80c3701d26567157d8b2c398af1cbdebfb6f6a7ff7e6dcc768c0385cd3162ae4
 
 let packages =
       { Cabal = H.callHackage "Cabal" "3.8.1.0"
diff --git a/horizon-spec/package.dhall b/horizon-spec/package.dhall
index 3f0c134a5126fdcfae77550d286c3965f564f379..57de351d4c70f9f72e2aeefb63eda60a2ef9ab6f 100644
--- a/horizon-spec/package.dhall
+++ b/horizon-spec/package.dhall
@@ -20,7 +20,7 @@ let Url = Text
 let HaskellSource =
       < FromHackage : { name : Name, version : Version }
       | FromGit : { url : Url, revision : Revision, subdir : Optional Subdir }
-      | FromTarball : Url
+      | FromTarball : { url : Url, subdir : Optional Subdir }
       >
 
 let Modifiers =
@@ -108,8 +108,30 @@ let callGit
         }
 
 let callTarball
-    : Url → HaskellPackage.Type
-    = λ(url : Url) → HaskellPackage::{ source = HaskellSource.FromTarball url }
+    : Url → Optional Subdir → HaskellPackage.Type
+    = λ(url : Url) →
+      λ(subdir : Optional Subdir) →
+        HaskellPackage::{ source = HaskellSource.FromTarball { url, subdir } }
+
+let callHorizonGitlab
+    : Name → Version → Optional Subdir → HaskellPackage.Type
+    = λ(name : Name) →
+      λ(version : Version) →
+      λ(subdir : Optional Subdir) →
+        callTarball
+          ( Prelude.Text.concat
+              [ "https://gitlab.horizon-haskell.net/haskell/"
+              , name
+              , "/-/archive/"
+              , version
+              , "/"
+              , name
+              , "-"
+              , version
+              , ".tar.gz"
+              ]
+          )
+          subdir
 
 let modPackageList
     : Modifiers.Type → PackageList → PackageList
@@ -153,6 +175,7 @@ in  { Attr
     , callGit
     , callHackage
     , callTarball
+    , callHorizonGitlab
     , modPackageList
     , modPackageSet
     }
diff --git a/version b/version
index ac39a106c48515b621e90c028ed94c6f71bc03fa..78bc1abd14f2c1f6330989d876c4ee7d5daf7ff6 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-0.9.0
+0.10.0