159 lines
3.2 KiB
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";
|
|
};
|
|
}
|