diff --git a/gnu/local.mk b/gnu/local.mk
index 13c2b94944..2b8cdbf181 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2062,7 +2062,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ungoogled-chromium-RUNPATH.patch		\
   %D%/packages/patches/ungoogled-chromium-system-ffmpeg.patch	\
   %D%/packages/patches/ungoogled-chromium-system-nspr.patch	\
-  %D%/packages/patches/unison-fix-ocaml-4.08.patch		\
   %D%/packages/patches/unknown-horizons-python-3.8-distro.patch	\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 8543505dbb..7993dbaa73 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1359,7 +1359,7 @@ (define-public ocaml4.07-lablgtk
 (define-public unison
   (package
     (name "unison")
-    (version "2.51.2")
+    (version "2.53.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1368,52 +1368,18 @@ (define-public unison
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1bykiyc0dc5pkw8x370qkg2kygq9pq7yqzsgczd3y13b6ivm4sdq"))
-              (patches (search-patches "unison-fix-ocaml-4.08.patch"))))
-    (build-system gnu-build-system)
-    (outputs '("out"
-               "doc"))                  ; 1.9 MiB of documentation
-    (native-inputs
-     `(("ocaml" ,ocaml-4.09)
-       ;; For documentation
-       ("ghostscript" ,ghostscript)
-       ("texlive" ,(texlive-updmap.cfg))
-       ("hevea" ,hevea)
-       ("lynx" ,lynx)
-       ("which" ,which)))
-    (arguments
-     `(#:parallel-build? #f
-       #:parallel-tests? #f
-       #:test-target "selftest"
-       #:tests? #f ; Tests require writing to $HOME.
-                   ; If some $HOME is provided, they fail with the message
-                   ; "Fatal error: Skipping some tests -- remove me!"
-       #:phases
+                "05ihxk1yynw08586i06w19xab9r24h9hr6v9bknqm98qrlshm92w"))))
+    (build-system dune-build-system)
+    (propagated-inputs (list lablgtk3 zlib))
+    (native-inputs (list ghostscript (texlive-updmap.cfg '()) hevea lynx which))
+    (arguments
+     `(#:phases
          (modify-phases %standard-phases
-           (delete 'configure)
-           (add-before 'install 'prepare-install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 (mkdir-p bin)
-                 (setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
-                 #t)))
-           (add-after 'install 'install-fsmonitor
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 ;; 'unison-fsmonitor' is used in "unison -repeat watch" mode.
-                 (install-file "src/unison-fsmonitor" bin)
-                 #t)))
            (add-after 'install 'install-doc
              (lambda* (#:key outputs #:allow-other-keys)
-               (let ((doc (string-append (assoc-ref outputs "doc")
+               (let ((doc (string-append (assoc-ref outputs "out")
                                          "/share/doc/unison")))
                  (mkdir-p doc)
-                 ;; Remove an '\n' that prevents the doc to be generated
-                 ;; correctly with newer hevea.
-                 (substitute* "doc/local.tex"
-                   (("----SNIP----.*") "----SNIP----"))
                  ;; This file needs write-permissions, because it's
                  ;; overwritten by 'docs' during documentation generation.
                  (chmod "src/strings.ml" #o600)
diff --git a/gnu/packages/patches/unison-fix-ocaml-4.08.patch b/gnu/packages/patches/unison-fix-ocaml-4.08.patch
deleted file mode 100644
index 811f590721..0000000000
--- a/gnu/packages/patches/unison-fix-ocaml-4.08.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-This patch is taken from the opam repository:
-https://github.com/ocaml/opam-repository/blob/master/packages/unison/unison.2.51.2/files/ocaml48.patch
-
-It fixes compatibility with changes introduced in OCaml 4.08.
-
-diff --git a/src/Makefile.OCaml b/src/Makefile.OCaml
-index 7cefa2e..378fc8b 100644
---- a/src/Makefile.OCaml
-+++ b/src/Makefile.OCaml
-@@ -272,7 +272,7 @@ endif
- 
- # Gtk GUI
- ifeq ($(UISTYLE), gtk)
--  CAMLFLAGS+=-I +lablgtk
-+  CAMLFLAGS+=-I $(LABLGTKLIB)
-   OCAMLOBJS+=pixmaps.cmo uigtk.cmo linkgtk.cmo
-   OCAMLLIBS+=lablgtk.cma
- endif
-@@ -282,7 +282,7 @@ OCAMLFIND := $(shell command -v ocamlfind 2> /dev/null)
- 
- ifeq ($(UISTYLE), gtk2)
-   ifndef OCAMLFIND
--    CAMLFLAGS+=-I +lablgtk2
-+    CAMLFLAGS+=-I $(LABLGTK2LIB)
-   else
-     CAMLFLAGS+=$(shell $(OCAMLFIND) query -i-format lablgtk2 )
-   endif
-diff --git a/src/files.ml b/src/files.ml
-index 5ff1881..1d1fbcc 100644
---- a/src/files.ml
-+++ b/src/files.ml
-@@ -734,7 +734,7 @@ let get_files_in_directory dir =
-   with End_of_file ->
-     dirh.System.closedir ()
-   end;
--  Sort.list (<) !files
-+  List.sort String.compare !files
- 
- let ls dir pattern =
-   Util.convertUnixErrorsToTransient
-diff --git a/src/recon.ml b/src/recon.ml
-index 2c619bb..2412c18 100644
---- a/src/recon.ml
-+++ b/src/recon.ml
-@@ -661,8 +661,8 @@ let rec reconcile
- 
- (* Sorts the paths so that they will be displayed in order                   *)
- let sortPaths pathUpdatesList =
--  Sort.list
--    (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0)
-+  List.sort
-+    Path.compare
-     pathUpdatesList
- 
- let rec enterPath p1 p2 t =
-diff --git a/src/system/system_generic.ml b/src/system/system_generic.ml
-index 453027d..c2288b8 100755
---- a/src/system/system_generic.ml
-+++ b/src/system/system_generic.ml
-@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen
- let chmod = Unix.chmod
- let chown = Unix.chown
- let utimes = Unix.utimes
--let link = Unix.link
-+let link s d = Unix.link s d
- let openfile = Unix.openfile
- let opendir f =
-   let h = Unix.opendir f in
-diff --git a/src/uigtk2.ml b/src/uigtk2.ml
-index fbc5d8f..4e82cc2 100644
---- a/src/uigtk2.ml
-+++ b/src/uigtk2.ml
-@@ -94,7 +94,7 @@ let icon =
- let icon =
-   let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in
-   Gpointer.blit
--    (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
-+    (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
-   p
- 
- let leftPtrWatch =
