depot/third_party/nixpkgs/pkgs/tools/system/hw-probe/default.nix

159 lines
3.2 KiB
Nix

{
lib,
stdenv,
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 ];
mainProgram = "hw-probe";
};
}