diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,12 @@
 
 `hslua-module-paths` uses [PVP Versioning][].
 
+## hslua-module-path-1.2.0
+
+Released 2026-01-08.
+
+- Require hslua-packaging 2.4 or later.
+
 ## hslua-module-path-1.1.1
 
 Released 2024-01-18.
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright © 2020-2024 Albert Krewinkel
+Copyright © 2020-2026 Albert Krewinkel
 
 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/hslua-module-path.cabal b/hslua-module-path.cabal
--- a/hslua-module-path.cabal
+++ b/hslua-module-path.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                hslua-module-path
-version:             1.1.1
+version:             1.2.0
 synopsis:            Lua module to work with file paths.
 description:         Lua module to work with file paths in a platform
                      independent way.
@@ -10,21 +10,16 @@
 license-file:        LICENSE
 author:              Albert Krewinkel
 maintainer:          Albert Krewinkel <tarleb@hslua.org>
-copyright:           © 2020-2024 Albert Krewinkel
+copyright:           © 2020-2026 Albert Krewinkel
 category:            Foreign
 build-type:          Simple
 extra-doc-files:     README.md
                      CHANGELOG.md
 extra-source-files:  test/test-path.lua
-tested-with:         GHC == 8.4.4
-                   , GHC == 8.6.5
-                   , GHC == 8.8.4
-                   , GHC == 8.10.7
-                   , GHC == 9.0.2
-                   , GHC == 9.2.8
-                   , GHC == 9.4.8
-                   , GHC == 9.6.3
-                   , GHC == 9.8.1
+tested-with:         GHC == 9.6
+                   , GHC == 9.8
+                   , GHC == 9.10
+                   , GHC == 9.12
 
 source-repository head
   type:                git
@@ -33,26 +28,23 @@
 
 common common-options
   build-depends:       base              >= 4.9.1  && < 5
-                     , filepath          >= 1.4    && < 1.6
                      , hslua-core        >= 2.1    && < 2.4
-                     , hslua-marshalling >= 2.1    && < 2.4
-                     , hslua-packaging   >= 2.3    && < 2.4
-                     , text              >= 1.2    && < 2.2
+                     , hslua-packaging   >= 2.4    && < 2.5
 
   ghc-options:         -Wall
-                       -Wcompat
+                       -Wcpp-undef
+                       -Werror=missing-home-modules
                        -Widentities
-                       -Wincomplete-uni-patterns
                        -Wincomplete-record-updates
-  if impl(ghc >= 8.0)
-    ghc-options:       -Wredundant-constraints
-  if impl(ghc >= 8.2)
-    ghc-options:       -fhide-source-paths
-  if impl(ghc >= 8.4)
-    ghc-options:       -Wmissing-export-lists
+                       -Wincomplete-uni-patterns
+                       -Wnoncanonical-monad-instances
                        -Wpartial-fields
-  if impl(ghc >= 8.8)
-    ghc-options:       -Wmissing-deriving-strategies
+                       -Wredundant-constraints
+                       -fhide-source-paths
+  if impl(ghc >= 8.10)
+    ghc-options:         -Wunused-packages
+  if impl(ghc >= 9.0)
+    ghc-options:         -Winvalid-haddock
 
   default-language:    Haskell2010
 
@@ -60,6 +52,9 @@
   import:              common-options
   hs-source-dirs:      src
   exposed-modules:     HsLua.Module.Path
+  build-depends:       filepath          >= 1.4    && < 1.6
+                     , hslua-marshalling >= 2.1    && < 2.4
+                     , text              >= 1.2    && < 2.2
 
 test-suite hslua-module-path-test
   import:              common-options
@@ -70,8 +65,7 @@
                      , hslua-module-path
                      , tasty
                      , tasty-hunit
-                     , tasty-lua  >= 1.0    && < 1.2
-                     , text
+                     , tasty-lua         >= 1.0    && < 1.2
   ghc-options:         -threaded
                        -rtsopts
                        -with-rtsopts=-N
diff --git a/src/HsLua/Module/Path.hs b/src/HsLua/Module/Path.hs
--- a/src/HsLua/Module/Path.hs
+++ b/src/HsLua/Module/Path.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-|
 Module      : HsLua.Module.Path
-Copyright   : © 2021-2024 Albert Krewinkel
+Copyright   : © 2021-2026 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 
@@ -45,14 +45,10 @@
 
 -- | The @path@ module specification.
 documentedModule :: LuaError e => Module e
-documentedModule = Module
-  { moduleName = "path"
-  , moduleDescription = "Module for file path manipulations."
-  , moduleFields = fields
-  , moduleFunctions = functions
-  , moduleOperations = []
-  , moduleTypeInitializers = []
-  }
+documentedModule = defmodule "path"
+  `withDescription` "Module for file path manipulations."
+  `withFields` fields
+  `withFunctions` functions
 
 --
 -- Fields
@@ -67,22 +63,19 @@
 
 -- | Wrapper for @'Path.pathSeparator'@.
 separator :: Field e
-separator = Field
-  { fieldName = "separator"
-  , fieldType = "string"
-  , fieldDescription = "The character that separates directories."
-  , fieldPushValue = pushString [Path.pathSeparator]
-  }
+separator = deffield "separator"
+  `withType` "string"
+  `withDescription` "The character that separates directories."
+  `withValue` pushString [Path.pathSeparator]
 
 -- | Wrapper for @'Path.searchPathSeparator'@.
 search_path_separator :: Field e
-search_path_separator = Field
-  { fieldName = "search_path_separator"
-  , fieldType = "string"
-  , fieldDescription = "The character that is used to separate the entries in "
-                    <> "the `PATH` environment variable."
-  , fieldPushValue = pushString [Path.searchPathSeparator]
-  }
+search_path_separator = deffield "search_path_separator"
+  `withType` "string"
+  `withDescription`
+    "The character that is used to separate the entries in " <>
+    "the `PATH` environment variable."
+  `withValue` pushString [Path.searchPathSeparator]
 
 --
 -- Functions
@@ -291,7 +284,7 @@
          -- non-metamethods.
          pushString "" *> getmetatable top *> remove (nth 2)
          mapM_ addFunction
-           [setName "__add" add_extension, setName "__div" combine]
+           [ setName add_extension "__add", setName combine "__div"]
          pop 1  -- string metatable
 
          _ <- getglobal "string"
diff --git a/test/test-hslua-module-path.hs b/test/test-hslua-module-path.hs
--- a/test/test-hslua-module-path.hs
+++ b/test/test-hslua-module-path.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE TypeApplications  #-}
 {-|
 Module      : Main
-Copyright   : © 2021-2024 Albert Krewinkel
+Copyright   : © 2021-2026 Albert Krewinkel
 License     : MIT
 Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : stable
