gobby.scm 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. `(("pkg-config" ,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. `(("libsigc++" ,libsigc++-2)
  67. ("gnutls" ,gnutls)))
  68. (home-page "https://gobby.github.io/")
  69. (synopsis "Network access framework for IPv4/IPv6")
  70. (description
  71. "Library which that provides a TCP protocol abstraction for C++.")
  72. (license license:lgpl2.1)))
  73. (define-public obby
  74. (package
  75. (name "obby")
  76. (version "0.4.8")
  77. (source (origin
  78. (method url-fetch)
  79. (uri (string-append "http://releases.0x539.de/obby/obby-"
  80. version ".tar.gz"))
  81. (file-name (string-append name "-" version ".tar.gz"))
  82. (sha256
  83. (base32
  84. "0rwvp0kzsb8y6mq73rzb8yk4kvsrz64i2zf4lfqs3kh0x2k7n7bx"))))
  85. (build-system gnu-build-system)
  86. (arguments
  87. `(#:configure-flags
  88. (list "--disable-static")))
  89. (native-inputs
  90. `(("pkg-config" ,pkg-config)))
  91. (inputs
  92. `(("libsigc++" ,libsigc++-2)
  93. ("gnutls" ,gnutls)
  94. ("libnet6" ,libnet6)))
  95. (home-page "https://gobby.github.io/")
  96. (synopsis "Library for building collaborative editors")
  97. (description
  98. "Library that provides synced document buffers. It supports multiple
  99. documents in one session. Obby is used by the Gobby collaborative editor.")
  100. (license license:gpl2+)))
  101. ;; Although there is a newer version of Gobby defined below, the protocols are
  102. ;; incompatible; you need Gobby 0.4 if you want to connect to servers running
  103. ;; the 0.4 protocol.
  104. (define-public gobby-0.4
  105. (package
  106. (name "gobby")
  107. (version "0.4.13")
  108. (source (origin
  109. (method url-fetch)
  110. (uri (string-append "http://releases.0x539.de/gobby/gobby-"
  111. version ".tar.gz"))
  112. (file-name (string-append name "-" version ".tar.gz"))
  113. (sha256
  114. (base32
  115. "0w8q01lf6bcdz537b29m7rwlbc7k87b12vnpm1h6219ypvzqkgcc"))))
  116. (build-system gnu-build-system)
  117. (native-inputs
  118. `(("pkg-config" ,pkg-config)
  119. ("intltool" ,intltool)))
  120. (inputs
  121. `(("libxml++-2" ,libxml++-2)
  122. ("gnutls" ,gnutls)
  123. ("gtkmm-2" ,gtkmm-2)
  124. ("gtksourceview-2" ,gtksourceview-2)
  125. ("libnet6" ,libnet6)
  126. ("obby" ,obby)))
  127. (arguments
  128. ;; Required by libsigc++.
  129. `(#:configure-flags '("CXXFLAGS=-std=c++11")))
  130. (home-page "https://gobby.github.io/")
  131. (synopsis "Collaborative editor")
  132. (description
  133. "Collaborative editor that supports multiple documents in one session and
  134. a multi-user chat. Gobby allows multiple users to edit the same document
  135. together over the internet in real-time.
  136. This is the older 0.4 version of Gobby. Use this version only if you need to
  137. connect to a server running the old 0.4 protocol.")
  138. (license license:gpl2+)))
  139. (define-public gobby
  140. (package
  141. (name "gobby")
  142. (version "0.6.0")
  143. (source (origin
  144. (method url-fetch)
  145. (uri (string-append "http://releases.0x539.de/gobby/gobby-"
  146. version ".tar.gz"))
  147. (file-name (string-append name "-" version ".tar.gz"))
  148. (sha256
  149. (base32
  150. "1p2wbnchxy2wdzk19p7bxfpbq5zawa0l500na57jp8jgk3qz7czx"))))
  151. (build-system glib-or-gtk-build-system)
  152. (native-inputs
  153. `(("pkg-config" ,pkg-config)
  154. ("intltool" ,intltool)
  155. ("itstool" ,itstool)))
  156. (inputs
  157. `(("gnutls" ,gnutls)
  158. ("gsasl" ,gsasl)
  159. ("gtkmm" ,gtkmm-3)
  160. ("gtksourceview" ,gtksourceview-3)
  161. ("libinfinity" ,libinfinity)
  162. ("libxml++-2" ,libxml++-2)))
  163. (arguments
  164. ;; Required by libsigc++.
  165. `(#:configure-flags '("CXXFLAGS=-std=c++11")
  166. #:phases
  167. (modify-phases %standard-phases
  168. (add-after 'install 'move-executable
  169. (lambda* (#:key outputs #:allow-other-keys)
  170. (with-directory-excursion (assoc-ref outputs "out")
  171. (rename-file "bin/gobby-0.5" "bin/gobby"))
  172. #t)))))
  173. (home-page "https://gobby.github.io/")
  174. (synopsis "Collaborative editor")
  175. (description
  176. "Collaborative editor that supports multiple documents in one session and
  177. a multi-user chat. Gobby allows multiple users to edit the same document
  178. together over the internet in real-time.")
  179. (license license:gpl2+)))
  180. (define-public libinfinity
  181. (package
  182. (name "libinfinity")
  183. (version "0.7.2")
  184. (source
  185. (origin
  186. (method url-fetch)
  187. (uri (string-append "http://releases.0x539.de/libinfinity/libinfinity-"
  188. version ".tar.gz"))
  189. (sha256
  190. (base32
  191. "17i3g61hxz9pzl3ryd1yr15142r25m06jfzjrpdy7ic1b8vjjw3f"))))
  192. (build-system gnu-build-system)
  193. (inputs
  194. `(("glib" ,glib)
  195. ("gsasl" ,gsasl)
  196. ("gtk+" ,gtk+)
  197. ("libxml2" ,libxml2)))
  198. (native-inputs
  199. `(("pkg-config" ,pkg-config)))
  200. (arguments
  201. `(#:configure-flags (list "--disable-static"
  202. "--with-inftextgtk"
  203. "--with-infgtk")))
  204. (home-page "https://gobby.github.io/")
  205. (synopsis "Infininote protocol implementation")
  206. (description "libinfinity is a library to build collaborative text
  207. editors. Changes to the text buffers are synced to all other clients over a
  208. central server. Even though a central server is involved, the local user sees
  209. his changes applied instantly and the merging is done on the individual
  210. clients.")
  211. (license license:lgpl2.1+)))