biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / system / hw-probe / default.nix
blob8b190087ffd5755956d25a209ecd9444fdd31cd8
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , makeWrapper
5 , makePerlPath
7 # Perl libraries
8 , LWP
9 , LWPProtocolHttps
10 , HTTPMessage
11 , HTTPDate
12 , URI
13 , TryTiny
15 # Required
16 , coreutils
17 , curl # Preferred to using the Perl HTTP libs - according to hw-probe.
18 , dmidecode
19 , edid-decode
20 , gnugrep
21 , gnutar
22 , hwinfo
23 , iproute2
24 , kmod
25 , pciutils
26 , perl
27 , smartmontools
28 , usbutils
29 , xz
31 # Conditionally recommended
32 , systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd
33 , systemd
35 # Recommended
36 , withRecommended ? true # Install recommended tools
37 , mcelog
38 , hdparm
39 , acpica-tools
40 , drm_info
41 , mesa-demos
42 , memtester
43 , sysstat
44 , cpuid
45 , util-linuxMinimal
46 , xinput
47 , libva-utils
48 , inxi
49 , vulkan-tools
50 , i2c-tools
51 , opensc
53 # Suggested
54 , withSuggested ? false # Install (most) suggested tools
55 , hplip
56 , sane-backends
57 # , pnputils # pnputils (lspnp) isn't currently in nixpkgs and appears to be poorly maintained
60 stdenv.mkDerivation rec {
61   pname = "hw-probe";
62   version = "1.6.5";
64   src = fetchFromGitHub {
65     owner = "linuxhw";
66     repo = pname;
67     rev = version;
68     sha256 = "sha256-WlLSgjVLqGGtwCyyUn9X3XbE2Yhz6LD245+U2JgGd+k=";
69   };
71   makeFlags = [ "prefix=$(out)" ];
73   nativeBuildInputs = [ makeWrapper ];
75   buildInputs = [ perl ];
77   makeWrapperArgs =
78     let
79       requiredPrograms = [
80         hwinfo
81         dmidecode
82         smartmontools
83         pciutils
84         usbutils
85         edid-decode
86         iproute2 # (ip)
87         coreutils # (sort)
88         gnugrep
89         curl
90         gnutar
91         xz
92         kmod # (lsmod)
93       ];
94       recommendedPrograms = [
95         mcelog
96         hdparm
97         acpica-tools
98         drm_info
99         mesa-demos
100         memtester
101         sysstat # (iostat)
102         util-linuxMinimal # (rfkill)
103         xinput
104         libva-utils # (vainfo)
105         inxi
106         vulkan-tools
107         i2c-tools
108         opensc
109       ]
110       # cpuid is only compatible with i686 and x86_64
111       ++ lib.optional (lib.elem stdenv.hostPlatform.system cpuid.meta.platforms) cpuid;
112       conditionallyRecommendedPrograms = lib.optional systemdSupport systemd; # (systemd-analyze)
113       suggestedPrograms = [
114         hplip # (hp-probe)
115         sane-backends # (sane-find-scanner)
116         # pnputils # (lspnp)
117       ];
118       programs =
119         requiredPrograms
120         ++ conditionallyRecommendedPrograms
121         ++ lib.optionals withRecommended recommendedPrograms
122         ++ lib.optionals withSuggested suggestedPrograms;
123     in [
124       "--set" "PERL5LIB" "${makePerlPath [ LWP LWPProtocolHttps HTTPMessage URI HTTPDate TryTiny ]}"
125       "--prefix" "PATH" ":" "${lib.makeBinPath programs}"
126     ];
128   postInstall = ''
129     wrapProgram $out/bin/hw-probe \
130       $makeWrapperArgs
131   '';
133   meta = with lib; {
134     description = "Probe for hardware, check operability and find drivers";
135     homepage = "https://github.com/linuxhw/hw-probe";
136     platforms = with platforms; (linux ++ freebsd ++ netbsd ++ openbsd);
137     license = with licenses; [ lgpl21 bsdOriginal ];
138     maintainers = with maintainers; [ rehno-lindeque  ];
139     mainProgram = "hw-probe";
140   };