Subject: [bug#71780] [PATCH 3/3] gnu: add hydroxide

From: Jean SIMARD <[email-masked]>
Date: Wed, 26 Jun 2024 07:33:05 +0000

Change-Id: Ic94a984da0cd458037f1246a8501f6cb10c19708

Note that `go-github-com-emersion-go-smtp` is already used in an
older version for `aerc`. The newer version, needed for `hydroxide`
does not compile for `aerc`. Therefore, a variant is needed for
`hydroxide`.

Change-Id: Ibb4599e008806afc0f1908baf4b4c54f5e30c059
---
 gnu/packages/golang-crypto.scm |  24 ++++++
 gnu/packages/golang.scm        | 135 +++++++++++++++++++++++++++++++++
 gnu/packages/mail.scm          |  37 +++++++++
 3 files changed, 196 insertions(+)

diff --git a/gnu/packages/golang-crypto.scm b/gnu/packages/golang-crypto.scm
index 94112973b5..5921acb4f1 100644
--- a/gnu/packages/golang-crypto.scm
+++ b/gnu/packages/golang-crypto.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2023 Jack Hill <[email-masked]>
 ;;; Copyright © 2024 Troy Figiel <[email-masked]>
 ;;; Copyright © 2024 Jesse Eisses <[email-masked]>
+;;; Copyright © 2024 Jean Simard <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -375,6 +376,29 @@ (define-public go-github-com-dvsekhvalnov-jose2go
 library.")
     (license license:expat)))
 
+(define-public go-github-com-emersion-go-bcrypt
+  (package
+    (name "go-github-com-emersion-go-bcrypt")
+    (version "0.0.0-20170822072041-6e724a1baa63")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-bcrypt")
+             (commit (go-version->git-ref version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1pchrgs05w30iqbh4d6iys4wvlyajsdwchp5mkf59amgsbyjaqgm"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/emersion/go-bcrypt"))
+    (propagated-inputs (list go-golang-org-x-crypto))
+    (home-page "https://github.com/emersion/go-bcrypt")
+    (synopsis "Extract of bcrypt from golang.org/x/crypto/bcrypt")
+    (description "An extract bcrypt from golang.org/x/crypto/bcrypt.")
+    (license license:bsd-3)))
+
 (define-public go-github-com-emersion-go-pgpmail
   (package
     (name "go-github-com-emersion-go-pgpmail")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 0b1a16d8e1..6e568d8add 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -45,6 +45,7 @@
 ;;; Copyright © 2023 Clément Lassieur <[email-masked]>
 ;;; Copyright © 2024 Troy Figiel <[email-masked]>
 ;;; Copyright © 2024 Greg Hogan <[email-masked]>
+;;; Copyright © 2024 Jean Simard <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5860,6 +5861,32 @@ (define-public go-github-com-ddevault-go-libvterm
        "This is a fork of another go-libvterm library for use with aerc.")
       (license license:expat))))
 
+(define-public go-github-com-boltdb-bolt
+  (package
+    (name "go-github-com-boltdb-bolt")
+    (version "1.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/boltdb/bolt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0z7j06lijfi4y30ggf2znak2zf2srv2m6c68ar712wd2ys44qb3r"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/boltdb/bolt"
+      #:tests? #f))
+    (home-page "https://github.com/boltdb/bolt")
+    (synopsis "Pure Go key/value store inspired by Howard Chu's LMDB project")
+    (description
+     "Bolt is a pure Go key/value store inspired by Howard Chu's LMDB project.
+     The goal of the project is to provide a simple, fast, and reliable database
+     for projects that don't require a full database server such as Postgres or MySQL.")
+    (license license:expat)))
+
 (define-public go-github-com-emersion-go-imap
   (package
     (name "go-github-com-emersion-go-imap")
@@ -5936,6 +5963,21 @@ (define-public go-github-com-emersion-go-smtp
 defined by RFC 5321.")
     (license license:expat)))
 
+(define-public go-github-com-emersion-go-smtp-v0.18
+  (package
+    (inherit go-github-com-emersion-go-smtp)
+    (name "go-github-com-emersion-go-smtp")
+    (version "0.18.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-smtp")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1d17gmz88cnfld8y1j2jsmldhvg8czbdmrjis0ls9zi7rfqlmnra"))))))
+
 (define-public go-github-com-emersion-go-sasl
   (package
     (name "go-github-com-emersion-go-sasl")
@@ -6085,6 +6127,99 @@ (define-public go-github-com-emersion-go-mbox
 @code{mbox} files.")
     (license license:expat)))
 
+(define-public go-github-com-emersion-go-vcard
+  (package
+    (name "go-github-com-emersion-go-vcard")
+    (version "0.0.0-20230815062825-8fda7d206ec9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-vcard")
+             (commit (go-version->git-ref version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "12n5jinj5xzdfl9jhqvjbzxvj32bw310mdw4q5rjv35pk566zixl"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/emersion/go-vcard"))
+    (home-page "https://github.com/emersion/go-vcard")
+    (synopsis "Go library to parse and format vCard")
+    (description "A Go library to parse and format vCard.")
+    (license license:expat)))
+
+(define-public go-github-com-teambition-rrule-go
+  (package
+    (name "go-github-com-teambition-rrule-go")
+    (version "1.8.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/teambition/rrule-go")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1fnbava35w9z60carny5b7whd4nkv6hrf9g43wwg8d88gfij9zj2"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/teambition/rrule-go"))
+    (home-page "https://github.com/teambition/rrule-go")
+    (synopsis
+     "Go library for working with recurrence rules for calendar dates")
+    (description
+     "A go library for working with recurrence rules for calendar dates.")
+    (license license:expat)))
+
+(define-public go-github-com-emersion-go-ical
+  (package
+    (name "go-github-com-emersion-go-ical")
+    (version "0.0.0-20240127095438-fc1c9d8fb2b6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-ical")
+             (commit (go-version->git-ref version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "01cn9kggkdalb6xp2nrka01gs40zs8v6h5bq8d2m8wrdcsy5b36v"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/emersion/go-ical"))
+    (propagated-inputs (list go-github-com-teambition-rrule-go))
+    (home-page "https://github.com/emersion/go-ical")
+    (synopsis "Go library for iCalendar")
+    (description "An iCalendar library for Go.")
+    (license license:expat)))
+
+(define-public go-github-com-emersion-go-webdav
+  (package
+    (name "go-github-com-emersion-go-webdav")
+    (version "v0.3.2-0.20220524091811-5d845721d8f7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/go-webdav")
+             (commit (go-version->git-ref version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1vxf9k7m4lxsyry374bm4y34d2sb2ssy0c45mb1vchdfhffgyj9i"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/emersion/go-webdav"))
+    (propagated-inputs (list go-github-com-emersion-go-ical
+                             go-github-com-emersion-go-vcard))
+    (home-page "https://github.com/emersion/go-webdav")
+    (synopsis "Go library for WebDAV, CalDAV and CardDAV")
+    (description "A Go library for WebDAV, CalDAV and CardDAV.")
+    (license license:expat)))
+
 (define-public go-github-com-google-go-cmp-cmp
   (package
     (name "go-github-com-google-go-cmp-cmp")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index de6d21e7cc..dd813baef6 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -56,6 +56,7 @@
 ;;; Copyright © 2023 Arjan Adriaanse <[email-masked]>
 ;;; Copyright © 2023 Wilko Meyer <[email-masked]>
 ;;; Copyright © 2024 Benjamin Slade <[email-masked]>
+;;; Copyright © 2024 Jean Simard <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5121,3 +5122,39 @@ (define-public aerc
     ;; <https://lists.sr.ht/~rjarry/aerc-devel/%3Cb5cb213a7d0c699a886971658c2476
     ;; 1073eb2391%40disroot.org%3E>
     (license license:gpl3+)))
+
+(define-public hydroxide
+  (package
+    (name "hydroxide")
+    (version "0.2.28")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/hydroxide")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1a7qga9qxwcdjimra9d9jnkds1iwh2sqk6241p4di6awli9zksv1"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/emersion/hydroxide/cmd/hydroxide"
+      #:unpack-path "github.com/emersion/hydroxide"))
+    (inputs (list go-github-com-protonmail-go-crypto
+                  go-github-com-boltdb-bolt
+                  go-github-com-emersion-go-bcrypt
+                  go-github-com-emersion-go-imap
+                  go-github-com-emersion-go-mbox
+                  go-github-com-emersion-go-message
+                  go-github-com-emersion-go-smtp-v0.18
+                  go-github-com-emersion-go-vcard
+                  go-github-com-emersion-go-webdav
+                  go-golang-org-x-crypto
+                  go-golang-org-x-term))
+    (home-page "https://github.com/emersion/hydroxide")
+    (synopsis "Third-party, open-source ProtonMail bridge")
+    (description "A third-party, open-source ProtonMail bridge.
+     For power users only, designed to run on a server.
+     hydroxide supports CardDAV, IMAP and SMTP.")
+    (license license:expat)))
-- 
2.41.0