diff --git a/pkgs/tools/system/hw-probe/default.nix b/pkgs/tools/system/hw-probe/default.nix new file mode 100644 index 00000000000..72bdbe368af --- /dev/null +++ b/pkgs/tools/system/hw-probe/default.nix @@ -0,0 +1,140 @@ +{ 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 ? stdenv.isLinux +, 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-utils +, 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.4"; + + src = fetchFromGitHub { + owner = "linuxhw"; + repo = pname; + rev = version; + sha256 = "sha256:028wnhrbn10lfxwmcpzdbz67ygldimv7z1k1bm64ggclykvg5aim"; + }; + + 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) + cpuid + util-linuxMinimal # (rfkill) + xinput + libva-utils # (vainfo) + inxi + vulkan-utils + i2c-tools + opensc + ]; + 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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fdb78390032..02305c098bd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7462,6 +7462,10 @@ with pkgs; hwinfo = callPackage ../tools/system/hwinfo { }; + hw-probe = perlPackages.callPackage ../tools/system/hw-probe { + vulkan-utils = haskell.lib.compose.justStaticExecutables haskellPackages.vulkan-utils; + }; + hybridreverb2 = callPackage ../applications/audio/hybridreverb2 { stdenv = gcc8Stdenv; };