summary refs log tree commit diff
path: root/gnu/packages/hardware.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/hardware.scm')
-rw-r--r--gnu/packages/hardware.scm206
1 files changed, 118 insertions, 88 deletions
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index d47be7a55d..81f38d069b 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Marcel Kupiec <formbi@protonmail.com>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +39,8 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages bootloaders)
+  #:use-module (gnu packages cdrom)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cpp)
@@ -56,9 +59,11 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages high-availability)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lxqt)
+  #:use-module (gnu packages mtools)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
@@ -130,7 +135,7 @@ sets, and tools to deal with register databases.")
 (define-public hw-probe
   (package
     (name "hw-probe")
-    (version "1.6.4")
+    (version "1.6.5")
     (source
      (origin
        (method git-fetch)
@@ -140,7 +145,7 @@ sets, and tools to deal with register databases.")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "028wnhrbn10lfxwmcpzdbz67ygldimv7z1k1bm64ggclykvg5aim"))))
+        (base32 "1sbp0scdi54zwgvb1s3ki3cw8xnxaxzm5cicq2nn3a2b6n1d4ljs"))))
     (build-system perl-build-system)
     (arguments
      (list
@@ -259,6 +264,7 @@ sets, and tools to deal with register databases.")
            ddcutil
            dmidecode
            dpkg
+           edac-utils
            edid-decode
            efibootmgr
            efivar
@@ -476,15 +482,31 @@ RGB animations.")
 (define-public ddcutil
   (package
     (name "ddcutil")
-    (version "1.2.2")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.ddcutil.com/tarballs/"
                            "ddcutil-" version ".tar.gz"))
        (sha256
-        (base32 "18fbd45h2r3r702dvmlmyrwgs3ymr4mhm4f12lgv9jqb5csalbw2"))))
+        (base32 "0hm0cm4m4hk1jjy7kddg613mynvwlii3kp8al0j9v3c6mcx3p4mx"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-udev-rules
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; Move the udev rules to their expected location in Guix
+              ;; System, so they can be more easily used.
+              (let ((rules.d (string-append #$output "/lib/udev/rules.d")))
+                (mkdir-p (dirname rules.d))
+                (rename-file (string-append #$output "/share/ddcutil/data")
+                             rules.d)
+                ;; Patch a reference to the ddcutil command.
+                (substitute* (string-append rules.d "/45-ddcutil-usb.rules")
+                  (("/usr/bin/ddcutil")
+                   (search-input-file outputs "bin/ddcutil")))))))))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -492,9 +514,9 @@ RGB animations.")
            glib
            kmod
            i2c-tools
-           libdrm ; enhanced diagnostics
-           libusb ; support USB monitors
-           libx11 ; enhanced diagnostics
+           libdrm                       ;enhanced diagnostics
+           libusb                       ;support USB monitors
+           libx11                       ;enhanced diagnostics
            libxrandr
            zlib))
     (home-page "https://www.ddcutil.com/")
@@ -513,14 +535,18 @@ communicate over USB as per the USB Monitor Control Class Specification.
 One particular use case is in colour profile management.  Monitor calibration
 is relative to the monitor colour settings currently in effect, e.g. red gain.
 ddcutil allows colour-related settings to be saved at the time a monitor is
-calibrated, and restored when the calibration is applied.")
+calibrated, and restored when the calibration is applied.
+
+This package includes udev rules that can be used by adding this package to
+the @code{rules} field of the @code{udev-configuration} record.  It gives
+read/write access to i2c devices to users in the @samp{i2c} group.")
     (license (list license:bsd-3        ; FindDDCUtil.cmake
                    license:gpl2+))))    ; everything else
 
 (define-public ddcui
   (package
     (name "ddcui")
-    (version "0.2.1")
+    (version "0.3.0")
     (source
      (origin
        (method git-fetch)
@@ -529,10 +555,10 @@ calibrated, and restored when the calibration is applied.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0a9xfv80dpimx9wi9igjbbfydyfsgnbk6dv1plhjzyp2a9shdibb"))))
+        (base32 "0gypfmwxhjmgyfwk29k8hfbgr0698kbcq2yj4izxv1i59zm63irz"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f))                    ; No test suite
+     (list #:tests? #f))                    ; No test suite
     (native-inputs
      (list pkg-config qttools-5))
     (inputs
@@ -648,7 +674,7 @@ hardware works with a fully free operating system or not.")
 (define-public headsetcontrol
   (package
     (name "headsetcontrol")
-    (version "2.6")
+    (version "2.6.1")
     (source
      (origin
        (method git-fetch)
@@ -657,7 +683,7 @@ hardware works with a fully free operating system or not.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0a7zimzi71416pmn6z0l1dn1c2x8p702hkd0k6da9rsznff85a88"))))
+        (base32 "1pkgi87wjyris53frw3qmjdqvkzyyl55ikjgn8cidnbr6i3rqls9"))))
     (build-system cmake-build-system)
     (inputs
      (list hidapi))
@@ -798,48 +824,63 @@ specific SMBIOS tables.")
 (define-public memtest86+
   (package
     (name "memtest86+")
-    ;; Update the description when/if UEFI support is released.
-    (version "5.01")
+    (version "6.00")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.memtest.org/download/5.01/memtest86+-"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/memtest86plus/memtest86plus")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0fch1l55753y6jkk0hj8f6vw4h1kinkn9ysp22dq5g9zjnvjf88l"))))
+        (base32 "0fv605blaf4z0jyl1wp37x5x014dkp0z0a0fh114ws62fhnhdnlv"))
+       (patches
+        (search-patches "memtest86+-build-reproducibly.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:system "i686-linux"            ; the result runs outside of any OS
-       #:tests? #f                      ; no way to test this
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (replace 'build
-           ;; The default 'make all' does wonderful things, like scp(1) a file to
-           ;; 192.168.0.12. Build the bootable images and nothing more.
-           (lambda _
-             (invoke "make"
-                     "memtest"          ; ELF executable
-                     "memtest.bin")))   ; DOS/MBR boot sector
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib/memtest86+"))
-                    (doc (string-append out "/share/doc/memtest86+-" ,version)))
-               (for-each
-                (lambda (file)
-                  (install-file file lib))
-                (list "memtest"
-                      "memtest.bin"))
-               (for-each
-                (lambda (file)
-                  (install-file file doc))
-                (list "FAQ"
-                      "README"))
-               #t))))))
+     (list
+      #:tests? #f                       ; no way to test this
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-broken-Makefiles
+            (lambda _
+              (substitute* (list "build32/Makefile"
+                                 "build64/Makefile")
+                (("/sbin/(mkdosfs)" _ command)
+                 command))))
+          (delete 'configure)           ; no configure script
+          (add-before 'build 'enter-build-directory
+            (lambda _
+              (chdir #$(if (target-x86-32?)
+                           "build32"
+                           "build64"))))
+          (replace 'build
+            (lambda* (#:key inputs make-flags #:allow-other-keys)
+              (apply invoke
+                     "make" "all" "grub-iso" ; more options than memtest.iso
+                     (string-append "GRUB_FONT_DIR="
+                                    (search-input-directory inputs
+                                                            "share/grub"))
+                     (string-append "GRUB_LIB_DIR="
+                                    (search-input-directory inputs
+                                                            "lib/grub"))
+                     make-flags)))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (lib (string-append out "/lib/memtest86+"))
+                     (doc (string-append out "/share/doc/memtest86+-"
+                                         #$version)))
+                (for-each
+                 (lambda (file)
+                   (install-file file lib))
+                 (list "grub-memtest.iso"
+                       "memtest.bin"
+                       "memtest.efi"))
+                (chdir "..")
+                (install-file "README.md" doc)))))))
     (native-inputs
-     ;; Newer GCCs fail with a deluge of "multiple definition of `__foo'" errors.
-     (list gcc-4.9))
+     (list dosfstools grub-hybrid mtools xorriso))
     (supported-systems (list "i686-linux" "x86_64-linux"))
     (home-page "https://www.memtest.org/")
     (synopsis "Thorough real-mode memory tester")
@@ -850,9 +891,7 @@ again, and verifies whether the result is the same as what was written.  This
 can help debug even intermittent and non-deterministic errors.
 
 It runs independently of any operating system, at computer boot-up, so that it
-can scan as much of your RAM as possible for hardware defects.
-
-Memtest86+ cannot currently be used on computers booted with UEFI.")
+can scan as much of your RAM as possible for hardware defects.")
     (license license:gpl2)))
 
 (define-public memtester
@@ -981,7 +1020,7 @@ technology, such as head mounted displays with built in head tracking.")
 (define-public openrgb
   (package
     (name "openrgb")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method git-fetch)
@@ -990,15 +1029,25 @@ technology, such as head mounted displays with built in head tracking.")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xhfaz0b74nfnh7il2cz5c0338xlzay00g6hc2h3lsncarj8d5n7"))
+        (base32 "1yz7sdrjcxajm1zpa5djinmych5dvck0r1fvk0x5qmk87va4p9z3"))
        (patches
         (search-patches "openrgb-unbundle-hueplusplus.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
-           ;; Delete the bundled hueplusplus and json libraries.
-           (delete-file-recursively "dependencies/hueplusplus-1.0.0")
-           (delete-file-recursively "dependencies/json")))))
+           ;; Delete many of the bundled libraries.
+           (for-each delete-file-recursively
+                     (list "dependencies/hidapi-win"
+                           "dependencies/hueplusplus-1.0.0"
+                           "dependencies/json"
+                           "dependencies/libusb-1.0.22"
+                           "dependencies/macUSPCIO"
+                           "dependencies/mbedtls-2.24.0"
+                           "dependencies/NVFC"
+                           "dependencies/openrazer-win32"
+                           "dependencies/winring0"
+                           ;; Some bundled appimages
+                           "scripts/tools"))))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1027,7 +1076,8 @@ technology, such as head mounted displays with built in head tracking.")
            mbedtls-apache
            qtbase-5))
     (native-inputs
-     (list pkg-config))
+     (list pkg-config
+           qttools-5))
     (synopsis "RGB lighting control")
     (description
      "OpenRGB is lighting control that doesn't depend on manufacturer software.
@@ -1104,7 +1154,14 @@ supported by the Linux kernel.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0zwrkqfxd671iy69v3q0844gfdpm1yk51i9qh2rqc969bd8glxga"))))
+          (base32 "0zwrkqfxd671iy69v3q0844gfdpm1yk51i9qh2rqc969bd8glxga"))
+         (snippet
+          #~(begin
+              ;; https://github.com/rockchip-linux/rkdeveloptool/pull/57
+              (use-modules (guix build utils))
+              (substitute* "main.cpp"
+                (("snprintf\\(buffer, sizeof\\(buffer\\), \"\\%s\", chip)")
+                 "memccpy(buffer, chip, '\\0', sizeof(buffer))"))))))
       (build-system gnu-build-system)
       (native-inputs
        (list autoconf automake pkg-config))
@@ -1117,37 +1174,10 @@ supported by the Linux kernel.")
 as the Pinebook Pro.")
       (license license:gpl2+))))
 
-(define-public libqb
-  (package
-    (name "libqb")
-    ;; NOTE: We are using a Release Candidate version (for 2.0) here because
-    ;; of the linker issues with the previous release.
-    (version "1.9.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/ClusterLabs/libqb/releases/download/v"
-                    version "/libqb-" version ".tar.xz"))
-              (sha256
-               (base32
-                "008vvw504kh40br5v2xkqavnp9vpmjvf768faqzv1d00fd53ingn"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list pkg-config libxml2))
-    (home-page "https://clusterlabs.github.io/libqb/")
-    (synopsis "Library providing high performance logging, tracing, ipc, and poll")
-    (description "Libqb is a library with the primary purpose of providing
-high-performance, reusable features for client-server architecture, such as
-logging, tracing, inter-process communication (IPC), and polling.  Libqb is
-not intended to be an all-encompassing library, but instead provide focused
-APIs that are highly tuned for maximum performance for client-server
-applications.")
-    (license license:lgpl2.1)))
-
 (define-public usbguard
   (package
     (name "usbguard")
-    (version "1.1.1")
+    (version "1.1.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1155,7 +1185,7 @@ applications.")
                     (commit (string-append "usbguard-" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "0lpyhkz5nr0c9mq57mgcvam5c8qfqqwjc4xd46n2ldqc9vhfsask"))))
+               (base32 "10qqjk7hsycc6hk51abwcld7i48038zqi1jzli59cfvc76ikrxj5"))))
     (build-system gnu-build-system)
     (arguments
      (list