biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / security / proxmark3 / default.nix
blob265f8e2cc753c9dec6c2e3432a24d551dd67031a
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , pkg-config
5 , gcc-arm-embedded
6 , readline
7 , bzip2
8 , openssl
9 , jansson
10 , gd
11 , whereami
12 , lua
13 , lz4
14 , Foundation
15 , AppKit
16 , withGui ? true, wrapQtAppsHook, qtbase
17 , withPython ? true, python3
18 , withBlueshark ? false, bluez5
19 , withGeneric ? false
20 , withSmall ? false
21 , withoutFunctions ? []
22 , hardwarePlatform ? if withGeneric then "PM3GENERIC" else "PM3RDV4"
23 , hardwarePlatformExtras ? lib.optionalString withBlueshark "BTADDON"
24 , standalone ? "LF_SAMYRUN"
26 assert withBlueshark -> stdenv.hostPlatform.isLinux;
27 stdenv.mkDerivation (finalAttrs: {
28   pname = "proxmark3";
29   version = "4.18994";
31   src = fetchFromGitHub {
32     owner = "RfidResearchGroup";
33     repo = "proxmark3";
34     rev = "v${finalAttrs.version}";
35     hash = "sha256-LeVQnidlCGFwtgJZdGlIFEYgf3M3BtfxoBKsxSFEo2w=";
36   };
38   patches = [
39     # Don't check for DISPLAY env variable on Darwin. pm3 uses this to test if
40     # XQuartz is installed, however it is not actually required for GUI features
41     ./darwin-always-gui.patch
42   ];
44   postPatch = ''
45     # Remove hardcoded paths on Darwin
46     substituteInPlace Makefile.defs \
47       --replace "/usr/bin/ar" "ar" \
48       --replace "/usr/bin/ranlib" "ranlib"
49     # Replace hardcoded path to libwhereami
50     substituteInPlace client/Makefile \
51       --replace "/usr/include/whereami.h" "${whereami}/include/whereami.h"
52   '';
54   nativeBuildInputs = [
55     pkg-config
56     gcc-arm-embedded
57   ] ++ lib.optional withGui wrapQtAppsHook;
58   buildInputs = [
59     readline
60     bzip2
61     openssl
62     jansson
63     gd
64     lz4
65     whereami
66     lua
67   ] ++ lib.optional withGui qtbase
68     ++ lib.optional withPython python3
69     ++ lib.optional withBlueshark bluez5
70     ++ lib.optionals stdenv.hostPlatform.isDarwin [ Foundation AppKit ];
72   makeFlags = [
73     "PREFIX=${placeholder "out"}"
74     "UDEV_PREFIX=${placeholder "out"}/etc/udev/rules.d"
75     "PLATFORM=${hardwarePlatform}"
76     "PLATFORM_EXTRAS=${hardwarePlatformExtras}"
77     "STANDALONE=${standalone}"
78     "USE_BREW=0"
79   ] ++ lib.optional withSmall "PLATFORM_SIZE=256"
80     ++ map (x: "SKIP_${x}=1") withoutFunctions;
81   enableParallelBuilding = true;
83   meta = with lib; {
84     description = "Client for proxmark3, powerful general purpose RFID tool";
85     homepage = "https://github.com/RfidResearchGroup/proxmark3";
86     license = licenses.gpl3Plus;
87     maintainers = with maintainers; [ nyanotech emilytrau ];
88     platforms = platforms.unix;
89     mainProgram = "pm3";
90   };