Subject: [PATCH] gnu: Add evdi, libevdi.

From: Demis Balbach <[email-masked]>
Date: Thu, 23 Feb 2023 12:48:22 +0100

---
 gnu/packages/linux.scm | 67 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 66 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9917f5d135..ae1291d5ac 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -68,7 +68,7 @@
 ;;; Copyright © 2022 Hunter Jozwiak <[email-masked]>
 ;;; Copyright © 2022 Hilton Chain <[email-masked]>
 ;;; Copyright © 2022 Stefan <[email-masked]>
-;;; Copyright © 2022 Demis Balbach <[email-masked]>
+;;; Copyright © 2022, 2023 Demis Balbach <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1492,6 +1492,34 @@ (define-public tuxedo-keyboard
 is also needed for the @code{tuxedo-control-center} (short tcc) package.")
     (license license:gpl3+)))
 
+(define-public evdi
+  (package
+    (name "evdi")
+    (version "1.12.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/DisplayLink/evdi")
+                    (commit "bdc258b25df4d00f222fde0e3c5003bf88ef17b5")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yi7mbyvxm9lsx6i1xbwp2bihwgzhwxkydk1kbngw5a5kw9azpws"))))
+    (build-system linux-module-build-system)
+    (arguments
+     (list #:tests? #f ;no test suite
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'chdir
+                          (lambda _
+                            (chdir "module"))))))
+    (home-page "https://github.com/DisplayLink/evdi")
+    (synopsis "EVDI Linux kernel module")
+    (description
+     "The @acronym{EVDI, Extensible Virtual Display Interface} is a Linux kernel module
+that enables management of multiple screens, allowing user-space programs to
+take control over what happens with the image.")
+    (license license:gpl2)))
+
 (define-public ec
   (package
     (name "ec")
@@ -9659,6 +9687,43 @@ (define-public libtree
 libraries are found or why they cannot be located.")
     (license license:expat)))
 
+(define-public libevdi
+  (package
+    (name "libevdi")
+    (version "1.12.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/DisplayLink/evdi")
+                    (commit "bdc258b25df4d00f222fde0e3c5003bf88ef17b5")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yi7mbyvxm9lsx6i1xbwp2bihwgzhwxkydk1kbngw5a5kw9azpws"))))
+    (build-system gnu-build-system)
+    (inputs (list libdrm))
+    (arguments
+     (list #:tests? #f ;no test suite
+           #:make-flags #~'("CC=gcc")
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'configure)
+                        (add-after 'unpack 'chdir
+                          (lambda _
+                            (chdir "library")))
+                        (replace 'install
+                          (lambda* _
+                            (let* ((lib (string-append #$output "/lib")))
+                              (mkdir-p lib)
+                              (copy-file "libevdi.so"
+                                         (string-append lib "/libevdi.so"))))))))
+    (home-page "https://github.com/DisplayLink/evdi")
+    (synopsis "User-space EVDI library")
+    (description
+     "Libevdi is a library that gives applications easy access to
+@acronym{EVDI, Extensible Virtual Display Interface} devices on
+various operating systems.")
+    (license license:lgpl2.1)))
+
 (define-public touchegg
   (package
     (name "touchegg")
-- 
2.39.1