about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/system/hw-probe/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/system/hw-probe/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/system/hw-probe/default.nix141
1 files changed, 141 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/system/hw-probe/default.nix b/nixpkgs/pkgs/tools/system/hw-probe/default.nix
new file mode 100644
index 000000000000..ee538f92668a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/system/hw-probe/default.nix
@@ -0,0 +1,141 @@
+{ config
+, stdenv
+, lib
+, fetchFromGitHub
+, makeWrapper
+, makePerlPath
+
+# Perl libraries
+, LWP
+, LWPProtocolHttps
+, HTTPMessage
+, HTTPDate
+, URI
+, TryTiny
+
+# Required
+, coreutils
+, curl # Preferred to using the Perl HTTP libs - according to hw-probe.
+, dmidecode
+, edid-decode
+, gnugrep
+, gnutar
+, hwinfo
+, iproute2
+, kmod
+, pciutils
+, perl
+, smartmontools
+, usbutils
+, xz
+
+# Conditionally recommended
+, systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd
+, systemd
+
+# Recommended
+, withRecommended ? true # Install recommended tools
+, mcelog
+, hdparm
+, acpica-tools
+, drm_info
+, mesa-demos
+, memtester
+, sysstat
+, cpuid
+, util-linuxMinimal
+, xinput
+, libva-utils
+, inxi
+, vulkan-tools
+, i2c-tools
+, opensc
+
+# Suggested
+, withSuggested ? false # Install (most) suggested tools
+, hplip
+, sane-backends
+# , pnputils # pnputils (lspnp) isn't currently in nixpkgs and appears to be poorly maintained
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hw-probe";
+  version = "1.6.5";
+
+  src = fetchFromGitHub {
+    owner = "linuxhw";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WlLSgjVLqGGtwCyyUn9X3XbE2Yhz6LD245+U2JgGd+k=";
+  };
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ perl ];
+
+  makeWrapperArgs =
+    let
+      requiredPrograms = [
+        hwinfo
+        dmidecode
+        smartmontools
+        pciutils
+        usbutils
+        edid-decode
+        iproute2 # (ip)
+        coreutils # (sort)
+        gnugrep
+        curl
+        gnutar
+        xz
+        kmod # (lsmod)
+      ];
+      recommendedPrograms = [
+        mcelog
+        hdparm
+        acpica-tools
+        drm_info
+        mesa-demos
+        memtester
+        sysstat # (iostat)
+        util-linuxMinimal # (rfkill)
+        xinput
+        libva-utils # (vainfo)
+        inxi
+        vulkan-tools
+        i2c-tools
+        opensc
+      ]
+      # cpuid is only compatible with i686 and x86_64
+      ++ lib.optional (lib.elem stdenv.hostPlatform.system cpuid.meta.platforms) cpuid;
+      conditionallyRecommendedPrograms = lib.optional systemdSupport systemd; # (systemd-analyze)
+      suggestedPrograms = [
+        hplip # (hp-probe)
+        sane-backends # (sane-find-scanner)
+        # pnputils # (lspnp)
+      ];
+      programs =
+        requiredPrograms
+        ++ conditionallyRecommendedPrograms
+        ++ lib.optionals withRecommended recommendedPrograms
+        ++ lib.optionals withSuggested suggestedPrograms;
+    in [
+      "--set" "PERL5LIB" "${makePerlPath [ LWP LWPProtocolHttps HTTPMessage URI HTTPDate TryTiny ]}"
+      "--prefix" "PATH" ":" "${lib.makeBinPath programs}"
+    ];
+
+  postInstall = ''
+    wrapProgram $out/bin/hw-probe \
+      $makeWrapperArgs
+  '';
+
+  meta = with lib; {
+    description = "Probe for hardware, check operability and find drivers";
+    homepage = "https://github.com/linuxhw/hw-probe";
+    platforms = with platforms; (linux ++ freebsd ++ netbsd ++ openbsd);
+    license = with licenses; [ lgpl21 bsdOriginal ];
+    maintainers = with maintainers; [ rehno-lindeque  ];
+  };
+}