diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 9ccecf34f7..764f6cea52 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -2818,6 +2818,7 @@ (define-public texlive-latex-hyperref
 @code{nameref} packages, which make use of the facilities of @code{hyperref}.")
     (license license:lppl1.3+)))
 
+;; TODO:
 (define-public texlive-latex-oberdiek
   (package
     (name "texlive-latex-oberdiek")
@@ -2851,6 +2852,21 @@ (define-public texlive-latex-oberdiek
 arrows; record information about document class(es) used; and many more.")
     (license license:lppl1.3+)))
 
+(define-public texlive-oberdiek-temp
+  (let ((template (simple-texlive-package
+                   "texlive-oberdiek-temp"
+                   (list "/tex/generic/oberdiek/")
+                   (base32
+                    "0q2ddkpzh6gz7mg9lqb9b9zpx5z6yh50qhja2qyx03ssp62xk0v7")
+                   #:trivial? #t)))
+    (package
+      (inherit template)
+      (home-page "https://www.ctan.org/pkg/foo")
+      (synopsis "generic")
+      (description
+       "generic")
+      (license license:lppl1.3+))))
+
 (define-public texlive-latex-tools
   (package
     (name "texlive-latex-tools")
@@ -3124,6 +3140,8 @@ (define-public texlive-luatex-lualibs
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))
+    (propagated-inputs
+     `(("lua-lpeg" ,lua-lpeg)))
     (native-inputs
      `(("texlive-bin" ,texlive-bin)
        ("unzip" ,unzip)
@@ -4321,25 +4339,260 @@ (define-public texlive-latex-mdwtools
 array environments; verbatim handling; and syntax diagrams.")
     (license license:gpl3+)))
 
-(define-public texlive-latex-polyglossia
-  (package
-    (name "texlive-latex-polyglossia")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "polyglossia"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0na7v4hsyx5s67cpjj2dbnq8j67k8lln6b19hmj631gfs27slss1"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/polyglossia"))
-    (home-page "https://www.ctan.org/pkg/polyglossia")
-    (synopsis "Alternative to babel for XeLaTeX and LuaLaTeX")
-    (description
-     "This package provides a complete Babel replacement for users of LuaLaTeX
+(define-public texlive-paralist
+  (let ((template (simple-texlive-package
+                   "texlive-paralist"
+                   (list "/source/latex/paralist/paralist.ins"
+                         "/source/latex/paralist/paralist.dtx")
+                   (base32
+                    "00xah0gq9jhdamild0cg6xp78a7jsfvb365rpz218wgdinj9r4s3"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "latex/paralist")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/latex/paralist") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-metalogo
+  (let ((template (simple-texlive-package
+                   "texlive-metalogo"
+                   (list "/source/latex/metalogo/")
+                   (base32
+                    "1ak8qbcbqgirljfwhq7ylxk1w2frxfkjvadjq00cclj007idr3x8"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "latex/metalogo")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/latex/metalogo") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-makecmds
+  (let ((template (simple-texlive-package
+                   "texlive-makecmds"
+                   (list "/source/latex/makecmds/")
+                   (base32
+                    "17c66isk18ch47syhsihj96yzi1jpr84946gck7r8ivpmk3cmmza"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "latex/makecmds")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/latex/makecmds") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-bidi
+  (let ((template (simple-texlive-package
+                   "texlive-bidi"
+                   (list "/doc/xelatex/bidi/"
+                         "/source/xelatex/bidi/")
+                   (base32
+                    "159ffyn3v762db54rqii7094wxbdkwiiml5anbkydqmrpxz28vqq"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "xelatex/bidi")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/xelatex/bidi") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-luabidi
+  (let ((template (simple-texlive-package
+                   "texlive-luabidi"
+                   (list "/tex/lualatex/luabidi/"
+                         "/doc/lualatex/luabidi/")
+                   (base32
+                    "0bi55kl41h885xvdy809pj1jbji6w498ckr3y3zw3jvnlkgvsr33")
+                   #:trivial? #t)))
+    (package (inherit template)
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-luatexbase
+  (let ((template (simple-texlive-package
+                   "texlive-luatexbase"
+                   (list "/doc/luatex/luatexbase/"
+                         "/source/luatex/luatexbase/")
+                   (base32
+                    "1v2g0y33rdnprg5gr0cjysakpvav073h9z8hwmc1za3nhrz00g5p"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "luatex/luatexbase")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/luatex/luatexbase") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+(define-public texlive-ctablestack
+  (let ((template (simple-texlive-package
+                   "texlive-ctablestack"
+                   (list "/doc/luatex/ctablestack/"
+                         "/source/luatex/ctablestack/")
+                   (base32
+                    "11ihkgmpzf5bz11gpah9i63jddvxa2p4zpq5rp7naqwig0pln6my"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "luatex/ctablestack")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/luatex/ctablestack") #t))))))
+      (home-page "https://www.ctan.org/pkg/TODO")
+      (synopsis "TODO")
+      (description
+       "TODO")
+      ;; TODO
+      (license license:lppl1.3+))))
+
+;; TODO: use
+;; https://github.com/reutenauer/polyglossia/blob/master/makepolyglossiadtx.pl
+;; to generate the dtx.
+(define-public texlive-polyglossia
+  (let ((template (simple-texlive-package
+                   "texlive-polyglossia"
+                   (list "/source/latex/polyglossia/polyglossia.dtx"
+                         "/doc/latex/polyglossia/"
+                         ;; These files are not generated from the dtx file
+                         "/tex/latex/polyglossia/arabicnumbers.sty"
+                         "/tex/latex/polyglossia/babel-hebrewalph.def"
+                         "/tex/latex/polyglossia/babelsh.def"
+                         "/tex/latex/polyglossia/bengalidigits.sty"
+                         "/tex/latex/polyglossia/cal-util.def"
+                         "/tex/latex/polyglossia/devanagaridigits.sty"
+                         "/tex/latex/polyglossia/farsical.sty"
+                         "/tex/latex/polyglossia/hebrewcal.sty"
+                         "/tex/latex/polyglossia/hijrical.sty"
+                         "/tex/latex/polyglossia/nkonumbers.sty"
+                         "/tex/latex/polyglossia/polyglossia.sty"
+                         "/tex/latex/polyglossia/xgreek-fixes.def")
+                   (base32
+                    "0r5m5vdz7mjmzm65hmkkwwcingc4ri8vbg5q5765l7awnx965a83"))))
+    (package (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "latex/polyglossia")
+         ((#:build-targets _ '())
+          ''("polyglossia.dtx"))
+         ((#:tex-format _ #t)
+          "lualatex") ; either lualatex or xelatex
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "source/latex/polyglossia") #t))
+             ;; For some reason polyglossia.sty cannot be found, even though
+             ;; it is part of the texlive union.
+             ;; TODO: later the Lua module cannot be found either ... :-/
+             (add-before 'build 'fix-build
+               (lambda _
+                 (setenv "LUAINPUTS" (string-append (getcwd) "/build/?.lua;;"))
+                 (setenv "TEXINPUTS"
+                         (string-append (getcwd) "/../../../tex/latex/polyglossia:"))
+                 #t))
+             (add-after 'chdir 'fix-bugs
+               (lambda _
+                 (substitute* "polyglossia.dtx"
+                   ;; It tries to write ../README.tex but fails.
+                   (("\\\\generate\\{\\\\file\\{../README.*") "")
+                   ;; TODO
+                   (("\\\\generate\\{\\\\file\\{example.*") ""))
+                 #t))
+             #;
+             (add-after 'install 'move-files
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let ((share (string-append (assoc-ref outputs "out")
+                                             "/share/texmf-dist")))
+                   (mkdir-p (string-append share "/dvips/xcolor"))
+                   (rename-file (string-append share "/tex/latex/xcolor/xcolor.pro")
+                                (string-append share "/dvips/xcolor/xcolor.pro"))
+             #t)))))))
+      (native-inputs
+       `(("texlive-amsfonts" ,texlive-amsfonts)
+         ("texlive-lm" ,texlive-lm)
+         ("texlive-tools" ,texlive-tools) ; multicol.sty, etc
+         ("texlive-metalogo" ,texlive-metalogo)
+         ("texlive-makecmds" ,texlive-makecmds)
+         ("texlive-zapfding" ,texlive-zapfding)
+         ("texlive-luabidi" ,texlive-luabidi)
+         ("texlive-luatexbase" ,texlive-luatexbase)
+         ("texlive-luaotfload" ,texlive-luaotfload)
+         ("texlive-ctablestack" ,texlive-ctablestack)
+         ("texlive-iftex" ,texlive-iftex)
+         ("texlive-microtype" ,texlive-microtype)
+         ("texlive-latex-base" ,texlive-latex-base)
+         ("texlive-latex-fontspec" ,texlive-latex-fontspec)
+         ("texlive-latex-xkeyval" ,texlive-latex-xkeyval)
+         ("texlive-latex-etoolbox" ,texlive-latex-etoolbox)
+         ("texlive-latex-hyperref" ,texlive-latex-hyperref)
+         ("texlive-latex-graphics" ,texlive-latex-graphics) ; color.sty
+         ("texlive-latex-fancyvrb" ,texlive-latex-fancyvrb)
+         ("texlive-paralist" ,texlive-paralist)
+         ("texlive-txfonts" ,texlive-txfonts)
+         ("texlive-dejavu" ,texlive-dejavu)
+         ("texlive-libertine" ,texlive-libertine)))
+      (home-page "https://www.ctan.org/pkg/polyglossia")
+      (synopsis "Alternative to babel for XeLaTeX and LuaLaTeX")
+      (description
+       "This package provides a complete Babel replacement for users of LuaLaTeX
 and XeLaTeX; it relies on the @code{fontspec} package, version 2.0 at least.")
-    (license license:lppl1.3+)))
+      (license license:lppl1.3+))))
+
+(define-public texlive-latex-polyglossia
+  (deprecated-package "texlive-latex-polyglossia" texlive-polyglossia))
 
 (define-public texlive-latex-supertabular
   (package
