Commit | Line | Data |
---|---|---|
b2e93b9e | 1 | ;;; GNU Guix --- Functional package management for GNU |
a69f0715 | 2 | ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> |
7ee557a7 | 3 | ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> |
811b907d | 4 | ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> |
fe84a00f | 5 | ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> |
47f92fbb | 6 | ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
b2e93b9e EF |
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 | ||
760d6066 | 23 | (define-module (gnu packages sync) |
b2e93b9e EF |
24 | #:use-module ((guix licenses) #:prefix license:) |
25 | #:use-module (guix build-system cmake) | |
47f92fbb | 26 | #:use-module (guix build-system go) |
fe84a00f | 27 | #:use-module (guix build-system meson) |
b2e93b9e | 28 | #:use-module (guix download) |
fe84a00f | 29 | #:use-module (guix git-download) |
b2e93b9e | 30 | #:use-module (guix packages) |
6563d58c | 31 | #:use-module (gnu packages) |
fe84a00f | 32 | #:use-module (gnu packages acl) |
2523691a | 33 | #:use-module (gnu packages check) |
b2e93b9e | 34 | #:use-module (gnu packages compression) |
fe84a00f | 35 | #:use-module (gnu packages curl) |
47f92fbb | 36 | #:use-module (gnu packages golang) |
b2e93b9e | 37 | #:use-module (gnu packages linux) |
7ee557a7 | 38 | #:use-module (gnu packages lua) |
b2e93b9e EF |
39 | #:use-module (gnu packages perl) |
40 | #:use-module (gnu packages pkg-config) | |
b2e93b9e | 41 | #:use-module (gnu packages qt) |
fe84a00f LC |
42 | #:use-module (gnu packages rsync) |
43 | #:use-module (gnu packages selinux) | |
9d0c291e | 44 | #:use-module (gnu packages sphinx) |
cd0322a3 | 45 | #:use-module (gnu packages sqlite) |
b2e93b9e EF |
46 | #:use-module (gnu packages tls)) |
47 | ||
48 | (define-public owncloud-client | |
49 | (package | |
50 | (name "owncloud-client") | |
b6f69340 | 51 | (version "2.5.3.11470") |
b2e93b9e EF |
52 | (source |
53 | (origin | |
54 | (method url-fetch) | |
55 | (uri (string-append "https://download.owncloud.com/desktop/stable/" | |
56 | "owncloudclient-" version ".tar.xz")) | |
57 | (sha256 | |
b6f69340 | 58 | (base32 "0cznis8qadsnlgm046lxn8vmbxli6zp4b8nk93n53mkfxlcw355n")) |
6563d58c | 59 | (patches (search-patches "owncloud-disable-updatecheck.patch")) |
5fc4df0c EF |
60 | (modules '((guix build utils))) |
61 | (snippet | |
62 | '(begin | |
e718ce14 | 63 | ;; libcrashreporter-qt has its own bundled dependencies |
5fc4df0c | 64 | (delete-file-recursively "src/3rdparty/libcrashreporter-qt") |
5fc4df0c | 65 | (delete-file-recursively "src/3rdparty/sqlite3") |
e718ce14 | 66 | ;; qprogessindicator, qlockedfile, qtokenizer and |
5fc4df0c EF |
67 | ;; qtsingleapplication have not yet been packaged, but all are |
68 | ;; explicitly used from the 3rdparty folder during build. | |
69 | ;; We can also remove the macgoodies folder | |
6cbee49d MW |
70 | (delete-file-recursively "src/3rdparty/qtmacgoodies") |
71 | #t)))) | |
b2e93b9e EF |
72 | (build-system cmake-build-system) |
73 | (arguments | |
74 | `(#:phases | |
75 | (modify-phases %standard-phases | |
2523691a | 76 | (add-after 'unpack 'delete-failing-tests |
be58ffa4 | 77 | ;; "Could not create autostart folder" |
2523691a EF |
78 | (lambda _ |
79 | (substitute* "test/CMakeLists.txt" | |
2523691a EF |
80 | (("owncloud_add_test\\(Utility \"\"\\)" test) |
81 | (string-append "#" test))) | |
2b371f4d EF |
82 | #t)) |
83 | (add-after 'unpack 'dont-embed-store-path | |
84 | (lambda _ | |
85 | (substitute* "src/common/utility_unix.cpp" | |
86 | (("QCoreApplication::applicationFilePath\\()") "\"owncloud\"")) | |
87 | #t)) | |
88 | (delete 'patch-dot-desktop-files)) | |
e718ce14 EF |
89 | #:configure-flags '("-DUNIT_TESTING=ON" |
90 | ;; build without qtwebkit, which causes the | |
91 | ;; package to FTBFS while looking for QWebView. | |
92 | "-DNO_SHIBBOLETH=1"))) | |
2523691a EF |
93 | (native-inputs |
94 | `(("cmocka" ,cmocka) | |
95 | ("perl" ,perl) | |
96 | ("pkg-config" ,pkg-config) | |
97 | ("qtlinguist" ,qttools))) | |
b2e93b9e | 98 | (inputs |
e718ce14 | 99 | `(("qtbase" ,qtbase) |
b2e93b9e | 100 | ("qtkeychain" ,qtkeychain) |
b2e93b9e EF |
101 | ("sqlite" ,sqlite) |
102 | ("zlib" ,zlib))) | |
103 | (home-page "https://owncloud.org") | |
104 | (synopsis "Folder synchronization with an ownCloud server") | |
105 | (description "The ownCloudSync system lets you always have your latest | |
106 | files wherever you are. Just specify one or more folders on the local machine | |
107 | to and a server to synchronize to. You can configure more computers to | |
108 | synchronize to the same server and any change to the files on one computer will | |
109 | silently and reliably flow across to every other.") | |
110 | (license license:gpl2+))) | |
cf3504c6 EF |
111 | |
112 | (define-public qsyncthingtray | |
113 | (package | |
114 | (name "qsyncthingtray") | |
dc05f652 | 115 | (version "0.5.8") |
cf3504c6 EF |
116 | (source |
117 | (origin | |
afbf9763 EF |
118 | (method git-fetch) |
119 | (uri (git-reference | |
120 | (url "https://github.com/sieren/QSyncthingTray") | |
121 | (commit version))) | |
122 | (file-name (git-file-name name version)) | |
cf3504c6 EF |
123 | (sha256 |
124 | (base32 | |
afbf9763 | 125 | "1n9g4j7qznvg9zl6x163pi9f7wsc3x6q76i33psnm7x2v1i22x5w")))) |
cf3504c6 EF |
126 | (build-system cmake-build-system) |
127 | (arguments | |
128 | `(#:configure-flags '("-DQST_BUILD_WEBKIT=1") | |
129 | #:phases | |
130 | (modify-phases %standard-phases | |
131 | ;; The program is meant to be run from the git repo or source tarball. | |
132 | (replace 'install | |
133 | (lambda* (#:key outputs #:allow-other-keys) | |
134 | (let* ((out (assoc-ref outputs "out")) | |
135 | (bin (string-append out "/bin"))) | |
136 | (install-file "QSyncthingTray" bin) | |
afbf9763 EF |
137 | (mkdir-p (string-append out "/share/pixmaps")) |
138 | (copy-file "../source/resources/images/Icon1024.png" | |
139 | (string-append | |
140 | out "/share/pixmaps/QSyncthingTray.png")) | |
cf3504c6 EF |
141 | #t)))) |
142 | #:tests? #f)) ; no test target | |
143 | (inputs | |
144 | `(("qtbase" ,qtbase) | |
145 | ("qtwebkit" ,qtwebkit))) | |
146 | (home-page "https://github.com/sieren/QSyncthingTray") | |
147 | (synopsis "Traybar Application for Syncthing") | |
148 | (description | |
149 | "A traybar application for syncthing. | |
150 | @enumerate | |
151 | @item Shows number of connections at a glance. | |
152 | @item Traffic statistics about incoming, outgoing and total throughput. | |
153 | @item Launches Syncthing and Syncthing-iNotifier if specified. | |
154 | @item Quickly pause Syncthing with one click. | |
155 | @item Last Synced Files - Quickly see the recently synchronised files and open | |
156 | their folder. | |
157 | @item Quick Access to all shared folders. | |
158 | @item Presents Syncthing UI in a separate view instead of using the browser. | |
159 | @item Supports authenticated HTTPS connections. | |
160 | @item Uses System Notifications about current connection status. | |
161 | @item Toggle for monochrome icon. | |
162 | @end enumerate\n") | |
163 | (license license:lgpl3+))) | |
7ee557a7 RW |
164 | |
165 | (define-public lsyncd | |
166 | (package | |
167 | (name "lsyncd") | |
9358ae8a | 168 | (version "2.2.2") |
7ee557a7 RW |
169 | (source |
170 | (origin | |
836931a5 TGR |
171 | (method git-fetch) |
172 | (uri (git-reference | |
173 | (url "https://github.com/axkibe/lsyncd.git") | |
174 | (commit (string-append "release-" version)))) | |
175 | (file-name (git-file-name name version)) | |
7ee557a7 | 176 | (sha256 |
836931a5 | 177 | (base32 "1q2ixp52r96ckghgmxdbms6xrq8dbziimp8gmgzqfq4lk1v1w80y")))) |
7ee557a7 RW |
178 | (build-system cmake-build-system) |
179 | (arguments | |
180 | `(;; The "tests" target is broken and assumes that tests are run in the | |
181 | ;; root directory. | |
182 | #:tests? #f | |
183 | #:test-target "tests" | |
184 | #:phases | |
185 | (modify-phases %standard-phases | |
186 | ;; No install target. | |
187 | (replace 'install | |
188 | (lambda* (#:key outputs #:allow-other-keys) | |
189 | (let* ((out (assoc-ref outputs "out")) | |
190 | (bin (string-append out "/bin")) | |
191 | (man (string-append out "/share/man/man1"))) | |
192 | (install-file "lsyncd" bin) | |
836931a5 | 193 | (install-file "../source/doc/manpage/lsyncd.1" man) |
7ee557a7 RW |
194 | #t)))))) |
195 | (native-inputs | |
196 | `(("lua" ,lua-5.2))) | |
197 | (home-page "https://github.com/axkibe/lsyncd") | |
198 | (synopsis "Synchronize local directories with remote targets") | |
199 | (description "Lsyncd watches a local directory trees event monitor | |
200 | interface (inotify or fsevents). It aggregates and combines events for a few | |
201 | seconds and then spawns one (or more) process(es) to synchronize the changes. | |
202 | By default this is rsync, which must be installed on all source and target | |
203 | machines. Lsyncd is thus a light-weight live mirror solution that is | |
162a1374 TGR |
204 | comparatively easy to install not requiring new file systems or block devices |
205 | and does not hamper local file system performance.") | |
7ee557a7 | 206 | (license license:gpl2+))) |
fe84a00f LC |
207 | |
208 | (define-public casync | |
209 | (package | |
210 | (name "casync") | |
211 | (version "2") | |
212 | (home-page "https://github.com/systemd/casync/") | |
213 | (source (origin | |
214 | (method git-fetch) | |
215 | (uri (git-reference | |
216 | (url home-page) | |
217 | (commit (string-append "v" version)))) | |
218 | (sha256 | |
219 | (base32 | |
220 | "0znkp3fcksrykcsv06y2mjvf2lbwmin25snmvfa8i5qfm3f4rm88")) | |
e1f79127 LC |
221 | (file-name (string-append name "-" version "-checkout")) |
222 | (patches (search-patches "casync-renameat2-declaration.patch")))) | |
fe84a00f LC |
223 | (build-system meson-build-system) |
224 | (native-inputs | |
225 | `(("pkg-config" ,pkg-config) | |
226 | ("python-sphinx" ,python-sphinx) | |
227 | ("rsync" ,rsync))) ;for tests | |
228 | (inputs | |
229 | `(("xz" ,xz) ;for liblzma | |
230 | ("zstd" ,zstd) | |
231 | ("curl" ,curl) | |
232 | ("acl" ,acl) | |
233 | ("libselinux" ,libselinux) | |
234 | ("fuse" ,fuse) | |
235 | ("openssl" ,openssl) | |
236 | ("zlib" ,zlib))) | |
237 | (synopsis "File synchronization and backup system") | |
238 | (description | |
239 | "casync is a @dfn{content-addressable data synchronizer} that can be used | |
240 | as the basis of a backup system. It is: | |
241 | ||
242 | @itemize | |
243 | @item A combination of the rsync algorithm and content-addressable storage; | |
244 | @item An efficient way to store and retrieve multiple related versions of | |
245 | large file systems or directory trees; | |
246 | @item An efficient way to deliver and update OS, VM, IoT and container images | |
247 | over the Internet in an HTTP and CDN friendly way; | |
248 | @item An efficient backup system. | |
249 | @end itemize\n") | |
250 | (license license:lgpl2.1+))) | |
47f92fbb NG |
251 | |
252 | (define-public rclone | |
253 | (package | |
254 | (name "rclone") | |
2ad03106 | 255 | (version "1.47.0") |
47f92fbb NG |
256 | (source (origin |
257 | (method git-fetch) | |
258 | (uri (git-reference | |
259 | (url "https://github.com/ncw/rclone.git") | |
260 | (commit (string-append "v" version)))) | |
261 | (file-name (git-file-name name version)) | |
262 | (sha256 | |
263 | (base32 | |
2ad03106 | 264 | "1nxwjr9jly6wh1ixr6a7zhlg4b3298v940040fsm0n3lcljd37zx")))) |
47f92fbb NG |
265 | ;; FIXME: Rclone bundles some libraries Guix already provides. Need to |
266 | ;; un-bundle them. | |
267 | (build-system go-build-system) | |
268 | (arguments | |
269 | '(#:import-path "github.com/ncw/rclone" | |
811b907d | 270 | #:install-source? #f)) |
47f92fbb NG |
271 | (synopsis "@code{rsync} for cloud storage") |
272 | (description "@code{Rclone} is a command line program to sync files and | |
273 | directories to and from different cloud storage providers. | |
274 | ||
275 | Features include: | |
276 | @itemize | |
277 | @item MD5/SHA1 hashes checked at all times for file integrity | |
278 | @item Timestamps preserved on files | |
279 | @item Partial syncs supported on a whole file basis | |
280 | @item Copy mode to just copy new/changed files | |
281 | @item Sync (one way) mode to make a directory identical | |
282 | @item Check mode to check for file hash equality | |
283 | @item Can sync to and from network, e.g., two different cloud accounts | |
284 | @item Optional encryption (Crypt) | |
285 | @item Optional cache (Cache) | |
286 | @item Optional FUSE mount (rclone mount) | |
287 | @end itemize") | |
288 | (home-page "https://rclone.org/") | |
289 | (license license:expat))) |