diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+## Changes in 0.39.6
+  - Add support for top-level field `codeberg`
+
 ## Changes in 0.39.5
   - When rendering build dependencies in a Cabal file, Hpack no longer excludes
     the reference to the main library from the shorthand syntax such as
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2025 Simon Hengel <sol@typeful.net>
+Copyright (c) 2014-2026 Simon Hengel <sol@typeful.net>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/hpack.cabal b/hpack.cabal
--- a/hpack.cabal
+++ b/hpack.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.0
 
--- This file has been generated from package.yaml by hpack version 0.38.3.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           hpack
-version:        0.39.5
+version:        0.39.6
 synopsis:       A modern format for Haskell packages
 description:    See the README at <https://github.com/sol/hpack#readme>
 category:       Development
diff --git a/resources/test/hpack.cabal b/resources/test/hpack.cabal
--- a/resources/test/hpack.cabal
+++ b/resources/test/hpack.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.0
 
--- This file has been generated from package.yaml by hpack version 0.38.3.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           hpack
-version:        0.39.5
+version:        0.39.6
 synopsis:       A modern format for Haskell packages
 description:    See the README at <https://github.com/sol/hpack#readme>
 category:       Development
diff --git a/src/Hpack/Config.hs b/src/Hpack/Config.hs
--- a/src/Hpack/Config.hs
+++ b/src/Hpack/Config.hs
@@ -610,6 +610,7 @@
 , packageConfigDataFiles :: Maybe (List FilePath)
 , packageConfigDataDir :: Maybe FilePath
 , packageConfigGithub :: Maybe GitHub
+, packageConfigCodeberg :: Maybe GitHub
 , packageConfigGit :: Maybe String
 , packageConfigCustomSetup :: Maybe CustomSetupSection
 , packageConfigLibrary :: Maybe library
@@ -1380,7 +1381,7 @@
         f name = "Specified source-dir " ++ show name ++ " does not exist"
 
     sourceRepository :: Maybe SourceRepository
-    sourceRepository = github <|> (`SourceRepository` Nothing) <$> packageConfigGit
+    sourceRepository = codeberg <|> github <|> (`SourceRepository` Nothing) <$> packageConfigGit
 
     github :: Maybe SourceRepository
     github = toSourceRepository <$> packageConfigGithub
@@ -1388,18 +1389,26 @@
         toSourceRepository :: GitHub -> SourceRepository
         toSourceRepository (GitHub owner repo subdir) = SourceRepository (githubBaseUrl ++ owner ++ "/" ++ repo) subdir
 
+    codeberg :: Maybe SourceRepository
+    codeberg = toSourceRepository <$> packageConfigCodeberg
+      where
+        toSourceRepository :: GitHub -> SourceRepository
+        toSourceRepository (GitHub owner repo subdir) = SourceRepository (codebergBaseUrl ++ owner ++ "/" ++ repo) subdir
+
     homepage :: Maybe String
     homepage = case packageConfigHomepage of
       Just Nothing -> Nothing
-      _ -> join packageConfigHomepage <|> fromGithub
+      _ -> join packageConfigHomepage <|> fromCodeberg <|> fromGithub
       where
+        fromCodeberg = (++ "#readme") . sourceRepositoryUrl <$> codeberg
         fromGithub = (++ "#readme") . sourceRepositoryUrl <$> github
 
     bugReports :: Maybe String
     bugReports = case packageConfigBugReports of
       Just Nothing -> Nothing
-      _ -> join packageConfigBugReports <|> fromGithub
+      _ -> join packageConfigBugReports <|> fromCodeberg <|> fromGithub
       where
+        fromCodeberg = (++ "/issues") . sourceRepositoryUrl <$> codeberg
         fromGithub = (++ "/issues") . sourceRepositoryUrl <$> github
 
     maintainer :: Maybe (List String)
diff --git a/src/Hpack/Syntax/DependencyVersion.hs b/src/Hpack/Syntax/DependencyVersion.hs
--- a/src/Hpack/Syntax/DependencyVersion.hs
+++ b/src/Hpack/Syntax/DependencyVersion.hs
@@ -4,6 +4,7 @@
 {-# LANGUAGE ViewPatterns #-}
 module Hpack.Syntax.DependencyVersion (
   githubBaseUrl
+, codebergBaseUrl
 , GitRef
 , GitUrl
 
@@ -44,6 +45,9 @@
 
 githubBaseUrl :: String
 githubBaseUrl = "https://github.com/"
+
+codebergBaseUrl :: String
+codebergBaseUrl = "https://codeberg.org/"
 
 type GitUrl = String
 type GitRef = String
diff --git a/test/EndToEndSpec.hs b/test/EndToEndSpec.hs
--- a/test/EndToEndSpec.hs
+++ b/test/EndToEndSpec.hs
@@ -314,6 +314,18 @@
         github: https://github.com/sol/hpack/issues/365
         |] `shouldFailWith` "package.yaml: Error while parsing $.github - expected owner/repo or owner/repo/subdir, but encountered \"https://github.com/sol/hpack/issues/365\""
 
+    describe "codeberg" $ do
+      it "accepts owner/repo" $ do
+        [i|
+        codeberg: sol/hpack
+        |] `shouldRenderTo` package [i|
+        homepage: https://codeberg.org/sol/hpack#readme
+        bug-reports: https://codeberg.org/sol/hpack/issues
+        source-repository head
+          type: git
+          location: https://codeberg.org/sol/hpack
+        |]
+
     describe "homepage" $ do
       it "accepts homepage URL" $ do
         [i|
