208 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
;;; GNU Guix --- Functional package management for GNU
 | 
						|
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
						|
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 | 
						|
;;;
 | 
						|
;;; This file is part of GNU Guix.
 | 
						|
;;;
 | 
						|
;;; GNU Guix is free software; you can redistribute it and/or modify it
 | 
						|
;;; under the terms of the GNU General Public License as published by
 | 
						|
;;; the Free Software Foundation; either version 3 of the License, or (at
 | 
						|
;;; your option) any later version.
 | 
						|
;;;
 | 
						|
;;; GNU Guix is distributed in the hope that it will be useful, but
 | 
						|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
;;; GNU General Public License for more details.
 | 
						|
;;;
 | 
						|
;;; You should have received a copy of the GNU General Public License
 | 
						|
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
(define-module (gnu packages sync)
 | 
						|
  #:use-module ((guix licenses) #:prefix license:)
 | 
						|
  #:use-module (guix build-system cmake)
 | 
						|
  #:use-module (guix download)
 | 
						|
  #:use-module (guix packages)
 | 
						|
  #:use-module (gnu packages check)
 | 
						|
  #:use-module (gnu packages compression)
 | 
						|
  #:use-module (gnu packages databases)
 | 
						|
  #:use-module (gnu packages linux)
 | 
						|
  #:use-module (gnu packages lua)
 | 
						|
  #:use-module (gnu packages perl)
 | 
						|
  #:use-module (gnu packages pkg-config)
 | 
						|
  #:use-module (gnu packages qt)
 | 
						|
  #:use-module (gnu packages tls))
 | 
						|
 | 
						|
(define-public owncloud-client
 | 
						|
  (package
 | 
						|
    (name "owncloud-client")
 | 
						|
    (version "2.2.4")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method url-fetch)
 | 
						|
       (uri (string-append "https://download.owncloud.com/desktop/stable/"
 | 
						|
                           "owncloudclient-" version ".tar.xz"))
 | 
						|
       (sha256
 | 
						|
        (base32 "1lz7v5sscj5489panz5ng372g9l66ng0srx6xaz8drnsgi7m64zk"))
 | 
						|
       (modules '((guix build utils)))
 | 
						|
       (snippet
 | 
						|
        '(begin
 | 
						|
           ;; only allows bundled libcrashreporter-qt
 | 
						|
           (delete-file-recursively "src/3rdparty/libcrashreporter-qt")
 | 
						|
           ;; we already package qtkeychain and sqlite
 | 
						|
           (delete-file-recursively "src/3rdparty/qtkeychain")
 | 
						|
           (delete-file-recursively "src/3rdparty/sqlite3")
 | 
						|
           ;; qjson is packaged, qprogessindicator, qlockedfile, qtokenizer and
 | 
						|
           ;; qtsingleapplication have not yet been packaged, but all are
 | 
						|
           ;; explicitly used from the 3rdparty folder during build.
 | 
						|
           ;; We can also remove the macgoodies folder
 | 
						|
           (delete-file-recursively "src/3rdparty/qtmacgoodies")))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     `(#:phases
 | 
						|
       (modify-phases %standard-phases
 | 
						|
         (add-after 'unpack 'change-rpath-dirs
 | 
						|
          (lambda _
 | 
						|
            (substitute* '("src/libsync/CMakeLists.txt"
 | 
						|
                           "csync/src/CMakeLists.txt")
 | 
						|
              ;; We store the libs in out/lib and not /usr/lib/appname, so we
 | 
						|
              ;; need the executable to point to the libraries in /lib and not
 | 
						|
              ;; in /lib/appname.
 | 
						|
              (("\\/\\$\\{APPLICATION_EXECUTABLE\\}") ""))
 | 
						|
            (substitute* '("src/cmd/CMakeLists.txt"
 | 
						|
                           "src/crashreporter/CMakeLists.txt"
 | 
						|
                           "src/gui/CMakeLists.txt")
 | 
						|
              ;; This has the same issue as the substitution above.
 | 
						|
              (("\\/\\$\\{APPLICATION_EXECUTABLE\\}\\\"") "\""))
 | 
						|
            #t))
 | 
						|
         (add-after 'unpack 'delete-failing-tests
 | 
						|
           ;; These tests fail for no apparent reason
 | 
						|
           (lambda _
 | 
						|
             (substitute* "test/CMakeLists.txt"
 | 
						|
                          (("owncloud_add_test\\(FileSystem \"\"\\)" test)
 | 
						|
                           (string-append "#" test))
 | 
						|
                          (("owncloud_add_test\\(Utility \"\"\\)" test)
 | 
						|
                           (string-append "#" test)))
 | 
						|
             #t)))
 | 
						|
       #:configure-flags '("-DUNIT_TESTING=ON")))
 | 
						|
    (native-inputs
 | 
						|
     `(("cmocka" ,cmocka)
 | 
						|
       ("perl" ,perl)
 | 
						|
       ("pkg-config" ,pkg-config)
 | 
						|
       ("qtlinguist" ,qttools)))
 | 
						|
    (inputs
 | 
						|
     `(("inotify-tools" ,inotify-tools)
 | 
						|
       ("openssl" ,openssl)
 | 
						|
       ("qtbase" ,qtbase)
 | 
						|
       ("qtkeychain" ,qtkeychain)
 | 
						|
       ("qtwebkit" ,qtwebkit)
 | 
						|
       ("sqlite" ,sqlite)
 | 
						|
       ("zlib" ,zlib)))
 | 
						|
    (home-page "https://owncloud.org")
 | 
						|
    (synopsis "Folder synchronization with an ownCloud server")
 | 
						|
    (description "The ownCloudSync system lets you always have your latest
 | 
						|
files wherever you are.  Just specify one or more folders on the local machine
 | 
						|
to and a server to synchronize to.  You can configure more computers to
 | 
						|
synchronize to the same server and any change to the files on one computer will
 | 
						|
silently and reliably flow across to every other.")
 | 
						|
    (license license:gpl2+)))
 | 
						|
 | 
						|
(define-public qsyncthingtray
 | 
						|
  (package
 | 
						|
    (name "qsyncthingtray")
 | 
						|
    (version "0.5.7")
 | 
						|
    (source
 | 
						|
      (origin
 | 
						|
        (method url-fetch)
 | 
						|
        (uri (string-append
 | 
						|
               "https://github.com/sieren/QSyncthingTray/archive/"
 | 
						|
               version ".tar.gz"))
 | 
						|
        (file-name (string-append name "-" version ".tar.gz"))
 | 
						|
        (sha256
 | 
						|
         (base32
 | 
						|
          "1qzlxgq36sb1dk621nkbjw9k6y3css6q3z8xzx6nv7f327vanvp6"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     `(#:configure-flags '("-DQST_BUILD_WEBKIT=1")
 | 
						|
       #:phases
 | 
						|
       (modify-phases %standard-phases
 | 
						|
         ;; The program is meant to be run from the git repo or source tarball.
 | 
						|
         (replace 'install
 | 
						|
           (lambda* (#:key outputs #:allow-other-keys)
 | 
						|
             (let* ((out (assoc-ref outputs "out"))
 | 
						|
                    (bin (string-append out "/bin")))
 | 
						|
               (install-file "QSyncthingTray" bin)
 | 
						|
               (install-file (string-append
 | 
						|
                               "../QSyncthingTray-"
 | 
						|
                               ,(package-version qsyncthingtray)
 | 
						|
                               "/resources/images/Icon1024.png")
 | 
						|
                             (string-append
 | 
						|
                               out "/share/pixmaps/QSyncthingTray.png"))
 | 
						|
               #t))))
 | 
						|
       #:tests? #f)) ; no test target
 | 
						|
    (inputs
 | 
						|
     `(("qtbase" ,qtbase)
 | 
						|
       ("qtwebkit" ,qtwebkit)))
 | 
						|
    (home-page "https://github.com/sieren/QSyncthingTray")
 | 
						|
    (synopsis "Traybar Application for Syncthing")
 | 
						|
    (description
 | 
						|
     "A traybar application for syncthing.
 | 
						|
@enumerate
 | 
						|
@item Shows number of connections at a glance.
 | 
						|
@item Traffic statistics about incoming, outgoing and total throughput.
 | 
						|
@item Launches Syncthing and Syncthing-iNotifier if specified.
 | 
						|
@item Quickly pause Syncthing with one click.
 | 
						|
@item Last Synced Files - Quickly see the recently synchronised files and open
 | 
						|
their folder.
 | 
						|
@item Quick Access to all shared folders.
 | 
						|
@item Presents Syncthing UI in a separate view instead of using the browser.
 | 
						|
@item Supports authenticated HTTPS connections.
 | 
						|
@item Uses System Notifications about current connection status.
 | 
						|
@item Toggle for monochrome icon.
 | 
						|
@end enumerate\n")
 | 
						|
    (license license:lgpl3+)))
 | 
						|
 | 
						|
(define-public lsyncd
 | 
						|
  (package
 | 
						|
    (name "lsyncd")
 | 
						|
    (version "2.2.1")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method url-fetch)
 | 
						|
       (uri (string-append "https://github.com/axkibe/lsyncd/archive/release-"
 | 
						|
                           version ".tar.gz"))
 | 
						|
       (file-name (string-append name "-" version ".tar.gz"))
 | 
						|
       (sha256
 | 
						|
        (base32
 | 
						|
         "0da7mrq2c578v2dd5x9v75l1fqrm28jvn28qkcd49y8p992nj6gl"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     `(;; The "tests" target is broken and assumes that tests are run in the
 | 
						|
       ;; root directory.
 | 
						|
       #:tests? #f
 | 
						|
       #:test-target "tests"
 | 
						|
       #:phases
 | 
						|
       (modify-phases %standard-phases
 | 
						|
         ;; No install target.
 | 
						|
         (replace 'install
 | 
						|
           (lambda* (#:key outputs #:allow-other-keys)
 | 
						|
             (let* ((out (assoc-ref outputs "out"))
 | 
						|
                    (bin (string-append out "/bin"))
 | 
						|
                    (man (string-append out "/share/man/man1")))
 | 
						|
               (install-file "lsyncd" bin)
 | 
						|
               (install-file (string-append "../lsyncd-release-"
 | 
						|
                                            ,version
 | 
						|
                                            "/doc/manpage/lsyncd.1")
 | 
						|
                             man)
 | 
						|
               #t))))))
 | 
						|
    (native-inputs
 | 
						|
     `(("lua" ,lua-5.2)))
 | 
						|
    (home-page "https://github.com/axkibe/lsyncd")
 | 
						|
    (synopsis "Synchronize local directories with remote targets")
 | 
						|
    (description "Lsyncd watches a local directory trees event monitor
 | 
						|
interface (inotify or fsevents).  It aggregates and combines events for a few
 | 
						|
seconds and then spawns one (or more) process(es) to synchronize the changes.
 | 
						|
By default this is rsync, which must be installed on all source and target
 | 
						|
machines.  Lsyncd is thus a light-weight live mirror solution that is
 | 
						|
comparatively easy to install not requiring new filesystems or block devices
 | 
						|
and does not hamper local filesystem performance.")
 | 
						|
    (license license:gpl2+)))
 |