diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/system/hw-probe/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/system/hw-probe/default.nix | 141 |
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 ]; + }; +} |