Files

79 lines
1.7 KiB
Nix

{
fetchurl,
stdenv,
bash-completion,
cmocka,
lib,
libftdi1,
libjaylink,
libusb1,
openssl,
meson,
ninja,
pciutils,
pkg-config,
sphinx,
jlinkSupport ? false,
git,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "flashrom";
version = "1.7.0";
src = fetchurl {
url = "https://download.flashrom.org/releases/flashrom-v${finalAttrs.version}.tar.xz";
hash = "sha256-Qyis6YM/fv58M0vdc0gs3oKGgZgmzAAUnoP7qWvzq08=";
};
nativeBuildInputs = [
git
meson
ninja
pkg-config
sphinx
bash-completion
];
buildInputs = [
openssl
cmocka
libftdi1
libusb1
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ pciutils ]
++ lib.optional jlinkSupport libjaylink;
postPatch = ''
substituteInPlace util/flashrom_udev.rules \
--replace 'GROUP="plugdev"' 'TAG+="uaccess", TAG+="udev-acl"'
'';
mesonFlags = [
(lib.mesonBool "werror" false)
(lib.mesonOption "programmer" "auto")
(lib.mesonEnable "man-pages" true)
(lib.mesonEnable "tests" (!stdenv.buildPlatform.isDarwin))
(lib.mesonEnable "generate_authors_list" false)
];
doCheck = !stdenv.hostPlatform.isDarwin;
doInstallCheck = true;
postInstall = ''
install -Dm644 $NIX_BUILD_TOP/$sourceRoot/util/flashrom_udev.rules $out/lib/udev/rules.d/flashrom.rules
'';
env = lib.optionalAttrs (stdenv.cc.isClang && !stdenv.hostPlatform.isDarwin) {
NIX_CFLAGS_COMPILE = "-Wno-gnu-folding-constant";
};
meta = {
homepage = "https://www.flashrom.org";
description = "Utility for reading, writing, erasing and verifying flash ROM chips";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ fpletz ];
platforms = lib.platforms.all;
mainProgram = "flashrom";
};
})