gobby.scm 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2016, 2017 Andy Wingo <wingo@igalia.com>
  3. ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net>
  4. ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
  5. ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
  6. ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
  7. ;;;
  8. ;;; This file is part of GNU Guix.
  9. ;;;
  10. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  11. ;;; under the terms of the GNU General Public License as published by
  12. ;;; the Free Software Foundation; either version 3 of the License, or (at
  13. ;;; your option) any later version.
  14. ;;;
  15. ;;; GNU Guix is distributed in the hope that it will be useful, but
  16. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  17. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. ;;; GNU General Public License for more details.
  19. ;;;
  20. ;;; You should have received a copy of the GNU General Public License
  21. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  22. (define-module (gnu packages gobby)
  23. #:use-module (guix packages)
  24. #:use-module (guix download)
  25. #:use-module (guix utils)
  26. #:use-module ((guix licenses) #:prefix license:)
  27. #:use-module (guix build-system glib-or-gtk)
  28. #:use-module (guix build-system gnu)
  29. #:use-module (gnu packages)
  30. #:use-module (gnu packages glib)
  31. #:use-module (gnu packages gnome)
  32. #:use-module (gnu packages gsasl)
  33. #:use-module (gnu packages gtk)
  34. #:use-module (gnu packages pkg-config)
  35. #:use-module (gnu packages tls)
  36. #:use-module (gnu packages xml))
  37. (define-public libnet6
  38. (package
  39. (name "libnet6")
  40. (version "1.3.14")
  41. (source (origin
  42. (method url-fetch)
  43. (uri (string-append "http://releases.0x539.de/net6/net6-"
  44. version ".tar.gz"))
  45. (sha256
  46. (base32
  47. "088yqq60wjx3jqjlhl12893p15gl9asjpavrbhh590qzpqndhp8m"))))
  48. (build-system gnu-build-system)
  49. (native-inputs
  50. (list pkg-config))
  51. (arguments
  52. `(#:configure-flags
  53. (list "--disable-static")
  54. #:phases
  55. (modify-phases %standard-phases
  56. (add-before 'configure 'update-gnutls-api
  57. (lambda _
  58. (substitute* "src/encrypt.cpp"
  59. ;; The GnuTLS API to set authentication and other parameters
  60. ;; and priorities changed in 3.4; update to allow ANON_DH via
  61. ;; the new API.
  62. (("gnutls_kx_set_priority\\(session, kx_prio\\)")
  63. (string-append "gnutls_priority_set_direct"
  64. "(session, \"NORMAL:+ANON-DH\", NULL)"))))))))
  65. (inputs
  66. (list libsigc++-2 gnutls))
  67. (home-page "https://gobby.github.io/")
  68. (synopsis "Network access framework for IPv4/IPv6")
  69. (description
  70. "Library which that provides a TCP protocol abstraction for C++.")
  71. (license license:lgpl2.1)))
  72. (define-public obby
  73. (package
  74. (name "obby")
  75. (version "0.4.8")
  76. (source (origin
  77. (method url-fetch)
  78. (uri (string-append "http://releases.0x539.de/obby/obby-"
  79. version ".tar.gz"))
  80. (file-name (string-append name "-" version ".tar.gz"))
  81. (sha256
  82. (base32
  83. "0rwvp0kzsb8y6mq73rzb8yk4kvsrz64i2zf4lfqs3kh0x2k7n7bx"))))
  84. (build-system gnu-build-system)
  85. (arguments
  86. `(#:configure-flags
  87. (list "--disable-static")))
  88. (native-inputs
  89. (list pkg-config))
  90. (inputs
  91. (list libsigc++-2 gnutls libnet6))
  92. (home-page "https://gobby.github.io/")
  93. (synopsis "Library for building collaborative editors")
  94. (description
  95. "Library that provides synced document buffers. It supports multiple
  96. documents in one session. Obby is used by the Gobby collaborative editor.")
  97. (license license:gpl2+)))
  98. ;; Although there is a newer version of Gobby defined below, the protocols are
  99. ;; incompatible; you need Gobby 0.4 if you want to connect to servers running
  100. ;; the 0.4 protocol.
  101. (define-public gobby-0.4
  102. (package
  103. (name "gobby")
  104. (version "0.4.13")
  105. (source (origin
  106. (method url-fetch)
  107. (uri (string-append "http://releases.0x539.de/gobby/gobby-"
  108. version ".tar.gz"))
  109. (file-name (string-append name "-" version ".tar.gz"))
  110. (sha256
  111. (base32
  112. "0w8q01lf6bcdz537b29m7rwlbc7k87b12vnpm1h6219ypvzqkgcc"))))
  113. (build-system gnu-build-system)
  114. (native-inputs
  115. (list pkg-config intltool))
  116. (inputs
  117. `(("libxml++-2" ,libxml++-2)
  118. ("gnutls" ,gnutls)
  119. ("gtkmm-2" ,gtkmm-2)
  120. ("gtksourceview-2" ,gtksourceview-2)
  121. ("libnet6" ,libnet6)
  122. ("obby" ,obby)))
  123. (arguments
  124. ;; Required by libsigc++.
  125. `(#:configure-flags '("CXXFLAGS=-std=c++11")))
  126. (home-page "https://gobby.github.io/")
  127. (synopsis "Collaborative editor")
  128. (description
  129. "Collaborative editor that supports multiple documents in one session and
  130. a multi-user chat. Gobby allows multiple users to edit the same document
  131. together over the internet in real-time.
  132. This is the older 0.4 version of Gobby. Use this version only if you need to
  133. connect to a server running the old 0.4 protocol.")
  134. (license license:gpl2+)))
  135. (define-public gobby
  136. (package
  137. (name "gobby")
  138. (version "0.6.0")
  139. (source (origin
  140. (method url-fetch)
  141. (uri (string-append "http://releases.0x539.de/gobby/gobby-"
  142. version ".tar.gz"))
  143. (file-name (string-append name "-" version ".tar.gz"))
  144. (sha256
  145. (base32
  146. "1p2wbnchxy2wdzk19p7bxfpbq5zawa0l500na57jp8jgk3qz7czx"))))
  147. (build-system glib-or-gtk-build-system)
  148. (native-inputs
  149. (list pkg-config intltool itstool))
  150. (inputs
  151. `(("gnutls" ,gnutls)
  152. ("gsasl" ,gsasl)
  153. ("gtkmm" ,gtkmm-3)
  154. ("gtksourceview" ,gtksourceview-3)
  155. ("libinfinity" ,libinfinity)
  156. ("libxml++-2" ,libxml++-2)))
  157. (arguments
  158. ;; Required by libsigc++.
  159. `(#:configure-flags '("CXXFLAGS=-std=c++11")
  160. #:phases
  161. (modify-phases %standard-phases
  162. (add-after 'install 'move-executable
  163. (lambda* (#:key outputs #:allow-other-keys)
  164. (with-directory-excursion (assoc-ref outputs "out")
  165. (rename-file "bin/gobby-0.5" "bin/gobby"))
  166. #t)))))
  167. (home-page "https://gobby.github.io/")
  168. (synopsis "Collaborative editor")
  169. (description
  170. "Collaborative editor that supports multiple documents in one session and
  171. a multi-user chat. Gobby allows multiple users to edit the same document
  172. together over the internet in real-time.")
  173. (license license:gpl2+)))
  174. (define-public libinfinity
  175. (package
  176. (name "libinfinity")
  177. (version "0.7.2")
  178. (source
  179. (origin
  180. (method url-fetch)
  181. (uri (string-append "http://releases.0x539.de/libinfinity/libinfinity-"
  182. version ".tar.gz"))
  183. (sha256
  184. (base32
  185. "17i3g61hxz9pzl3ryd1yr15142r25m06jfzjrpdy7ic1b8vjjw3f"))))
  186. (build-system gnu-build-system)
  187. (inputs
  188. (list glib gsasl gtk+ libxml2))
  189. (native-inputs
  190. (list pkg-config))
  191. (arguments
  192. `(#:configure-flags (list "--disable-static"
  193. "--with-inftextgtk"
  194. "--with-infgtk")))
  195. (home-page "https://gobby.github.io/")
  196. (synopsis "Infininote protocol implementation")
  197. (description "libinfinity is a library to build collaborative text
  198. editors. Changes to the text buffers are synced to all other clients over a
  199. central server. Even though a central server is involved, the local user sees
  200. his changes applied instantly and the merging is done on the individual
  201. clients.")
  202. (license license:lgpl2.1+)))