aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghav Gururajan <rg@raghavgururajan.name>2021-12-09 07:18:02 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-06-23 11:29:03 -0400
commit3611f99affc4d2edcf4141e3022dd0d2a0b04068 (patch)
tree7a28f4201972f444f2403700ce8370aff21a880f
parent92773dedcd79c6edeb55e3d0a636d2341c18d2d9 (diff)
downloadguix-3611f99affc4d2edcf4141e3022dd0d2a0b04068.tar.gz
guix-3611f99affc4d2edcf4141e3022dd0d2a0b04068.zip
gnu: Add hw-probe.
* gnu/packages/hardware.scm (hw-probe): New variable. Co-authored-by: Petr Hodina <phodina@protonmail.com> Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r--gnu/packages/hardware.scm206
1 files changed, 205 insertions, 1 deletions
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 1471c28fa2..acc3fb3059 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -34,23 +34,34 @@
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
#:use-module (gnu packages cpp)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages debian)
+ #:use-module (gnu packages disk)
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages lxqt)
+ #:use-module (gnu packages package-management)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages openldap)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages perl)
@@ -62,8 +73,12 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
+ #:use-module (gnu packages scanner)
+ #:use-module (gnu packages security-token)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
#:use-module (gnu packages virtualization)
+ #:use-module (gnu packages vulkan)
#:use-module (gnu packages web)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
@@ -71,6 +86,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix gexp)
@@ -84,7 +100,6 @@
;; This is a module for packages related to physical hardware that don't (yet)
;; have a more specific home like gps.scm, security-token.scm, &c.
-
(define-public envytools
(let ((commit "9014a51b1436461c7b3b005bdae72bf4912f4e72")
(revision "1"))
@@ -111,6 +126,195 @@ drivers, including an assembler and a disassembler for several GPU instruction
sets, and tools to deal with register databases.")
(license license:expat))))
+(define-public hw-probe
+ (package
+ (name "hw-probe")
+ (version "1.6.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/linuxhw/hw-probe")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "028wnhrbn10lfxwmcpzdbz67ygldimv7z1k1bm64ggclykvg5aim"))))
+ (build-system perl-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no test suite
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-source
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Correct install prefix.
+ (substitute* "Makefile"
+ (("/usr") #$output))
+
+ (define preserve
+ ;; Either not available in Guix or better left untouched.
+ '("$HWInfoCmd" "$CurlCmd" "$NvidiaSmi_Path" ;perl variables
+ "vblank_mode=0" "DRI_PRIME=1" ;environment variables
+ "sha512" ;fall-back to sha512sum
+ ;; hp-probe comes from the full 'hplib' package, which would
+ ;; pull Qt and increase the size of the closure by 600 MiB.
+ "hp-probe"
+
+ ;; Android.
+ "apk" "getprop"
+
+ ;; BSD-related.
+ "atactl" "acpiconf"
+ "bsdhwmon" "camcontrol"
+ "devinfo" "diskinfo" "disklabel"
+ "freebsd-version" "ghostbsd-version"
+ "hwstat" "kldstat" "mfiutil" "modstat" "mport"
+ "ofwdump" "opnsense-version"
+ "pcictl" "pcidump" "pciconf" "pkg" "pkg_info" "pkgin"
+ "start-hello" "sysinfo" "usbconfig" "usbdevs"
+
+ ;; Package managers.
+ "eopkg" "pacman" "swupd"
+
+ ;; Not packaged in Guix (TODO).
+ "apm" ;apmd
+ "drm_info" ;drm_info
+ "megactl" ;megactl
+ "lspnp" ;pnputils
+ "lsb_release" ;lsb-release
+ "lsinitrd" ;dracut
+ "optirun" ;bumblebee
+ "usbctl" ;usbctl
+ "monitor-get-edid" ;monitor-edid
+ "journalctl" "systemctl" "systemd-analyze" ;systemd
+ "superiotool" ;superiotool
+ "x86info" ;x86info
+
+ ;; Other.
+ "arcconf" ;proprietary
+ "config" ;unknown origin (Linux-related)
+ "dkms" ;unknown origin (Linux-related)
+ "amdconfig" "fglrxinfo" ;proprietary/obsolete
+ "geom" ;unknown origin
+ "hciconfig" "hcitool" ;deprecated from bluez
+ "nm-tool")) ;replaced by nmcli in network-manager
+
+ (substitute* "hw-probe.pl"
+ (("(check|find|run)Cmd\\(\"([^\" ]+)" _ prefix command)
+ (string-append
+ prefix "Cmd(\""
+ (if (member command preserve)
+ command
+ (or (false-if-exception
+ (search-input-file
+ inputs (string-append "bin/" command)))
+ (search-input-file
+ inputs (string-append "sbin/" command))))))
+ (("(my \\$HWInfoCmd = \")hwinfo" _ head)
+ (string-append head (search-input-file inputs "sbin/hwinfo")))
+ (("(my \\$CurlCmd = \")curl" _ head)
+ (string-append head (search-input-file inputs "bin/curl")))
+ (("(\\$LsblkCmd = \")lsblk" _ head)
+ (string-append head (search-input-file inputs "bin/lsblk")))
+ (("(\\$SmartctlCmd = \")smartctl" _ head)
+ (string-append head (search-input-file inputs "sbin/smartctl")))
+ (("(my \\$FindmntCmd = \")findmnt" _ head)
+ (string-append head (search-input-file inputs "bin/findmnt")))
+ (("(\\$DDCUtilCmd = \")ddcutil" _ head)
+ (string-append head (search-input-file inputs "bin/ddcutil")))
+ (("(my \\$VaInfoCmd = \")vainfo" _ head)
+ (string-append head (search-input-file inputs "bin/vainfo")))
+ (("(\\$CheckHddCmd = \")hdparm" _ head)
+ (string-append head (search-input-file inputs "sbin/hdparm")))
+ (("(\\$USE_DIGEST_ALT = \")sha512sum" _ head)
+ (string-append head (search-input-file inputs "bin/sha512sum"))))))
+ (delete 'configure)
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define hw-probe (search-input-file outputs "bin/hw-probe"))
+ ;; 'NeedProgs' core utilities are specially checked for
+ ;; availability. It's easier to wrap them in PATH than patching
+ ;; their references.
+ ;; TODO: package edid-decode and add "bin/edid-decode" below:
+ (define need-progs (list "sbin/dmidecode" "sbin/smartctl"
+ "sbin/lspci" "bin/lsusb"))
+ (wrap-script hw-probe
+ (list "PERL5LIB" 'prefix (list (getenv "PERL5LIB")))
+ (list "PATH" 'prefix
+ (map (lambda (command)
+ (dirname (search-input-file inputs command)))
+ need-progs))))))))
+ (inputs
+ (list acpi
+ acpica
+ alsa-utils
+ avahi
+ bash-minimal
+ coreutils
+ cpuid
+ cpupower
+ curl
+ ddcutil
+ dmidecode
+ dpkg
+ edid-decode
+ efibootmgr
+ efivar
+ ethtool
+ eudev
+ findutils
+ gpart
+ grep
+ guile-3.0 ;for wrap-script
+ hddtemp
+ hdparm
+ i2c-tools
+ inxi
+ iproute
+ iw
+ libva-utils
+ lm-sensors
+ mcelog
+ memtester
+ mesa-utils
+ modem-manager
+ module-init-tools
+ neofetch
+ net-tools
+ network-manager
+ numactl
+ nvme-cli
+ opensc
+ openssl
+ p7zip
+ pciutils
+ perl-data-dumper
+ perl-digest-sha
+ perl-libwww
+ procps
+ psmisc ;for pstree
+ rpm
+ sane-backends
+ smartmontools
+ sysstat
+ upower
+ usbutils
+ util-linux
+ wireless-tools
+ vdpauinfo
+ vulkan-tools
+ xdpyinfo
+ xinput
+ xrandr
+ xvinfo))
+ (propagated-inputs (list hwinfo))
+ (home-page "https://linux-hardware.org")
+ (synopsis "Hardware Probe")
+ (description "Hardware Probe is a tool to probe for hardware, check its
+operability and find drivers.")
+ (license (list license:lgpl2.1+ license:bsd-4)))) ;dual-licensed
+
(define-public hwinfo
(package
(name "hwinfo")