Subject: [PATCH] gnu: Add onedrive.

From: Efraim Flashner <[email-masked]>
Date: Sat, 29 Oct 2022 23:50:07 +0300

* gnu/packages/sync.scm (onedrive): New variable.
---
 gnu/packages/sync.scm | 65 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 64 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 8c174c98ba..8330b96dd7 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <[email-masked]>
+;;; Copyright © 2015-2020, 2022 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2017 Ricardo Wurmus <[email-masked]>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2018, 2021 Ludovic Courtès <[email-masked]>
@@ -31,6 +31,8 @@ (define-module (gnu packages sync)
   #:use-module (guix build-system go)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system qt)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
@@ -38,10 +40,12 @@ (define-module (gnu packages sync)
   #:use-module (gnu packages acl)
   #:use-module (gnu packages adns)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages dlang)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
@@ -359,6 +363,65 @@ (define-public owncloud-client
 silently and reliably flow across to every other.")
     (license license:gpl2+)))
 
+(define-public onedrive
+  (package
+    (name "onedrive")
+    (version "2.4.21")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/abraunegg/onedrive")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "04rnkc6ap9mkghvlj102f2gvnjqg3bs4vw9q3wm869fsflnm3599"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+       #:configure-flags
+       #~(list "--enable-completions"
+               "--enable-notifications"
+               (string-append "--with-zsh-completion-dir="
+                              #$output "/share/zsh/site-functions")
+               (string-append "--with-fish-completion-dir="
+                              #$output "/share/fish/vendor_completions.d"))
+       #:make-flags
+       #~(list (string-append "CC=" #$(cc-for-target)))
+       #:phases
+       #~(modify-phases %standard-phases
+         (add-after 'unpack 'link-to-external-libraries
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "DCFLAGS" (string-append
+                                 ;; The default linker is ld.gold.
+                                 "--linker=\"\" "
+                                 ;; Only link necessary libraries.
+                                 "-L--as-needed "))))
+         (add-after 'configure 'adjust-makefile
+           (lambda _
+             (substitute* "Makefile"
+               (("-L/gnu") "-Wl,-rpath=/gnu")
+               (("-O ") "-O2 "))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "./onedrive" "--version")))))))
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list bash-minimal
+           curl-minimal
+           ldc
+           libnotify
+           sqlite))
+    (home-page "https://abraunegg.github.io")
+    (synopsis "Client for OneDrive")
+    (description "OneDrive Client which supports OneDrive Personal, OneDrive for
+Business, OneDrive for Office365 and SharePoint and fully supports Azure
+National Cloud Deployments.  It supports one-way and two-way sync capabilities
+and securely connects to Microsoft OneDrive services.")
+    (license license:gpl3)))
+
 (define-public lsyncd
   (package
     (name "lsyncd")

base-commit: 34e6c5d4280d67729bbd8cdae333ca5e0bd580f5
-- 
2.38.0