2019-01-27 23:15:00 +00:00
|
|
|
|
{ stdenv, fetchurl, substituteAll, gtk-doc, pkgconfig, gobject-introspection, intltool
|
2018-10-16 06:33:07 +01:00
|
|
|
|
, libgudev, polkit, libxmlb, gusb, sqlite, libarchive, glib-networking
|
2019-02-25 15:15:49 +00:00
|
|
|
|
, libsoup, help2man, gpgme, libxslt, elfutils, libsmbios, efivar, gnu-efi
|
|
|
|
|
, libyaml, valgrind, meson, libuuid, colord, docbook_xml_dtd_43, docbook_xsl
|
2018-06-02 16:47:34 +01:00
|
|
|
|
, ninja, gcab, gnutls, python3, wrapGAppsHook, json-glib, bash-completion
|
|
|
|
|
, shared-mime-info, umockdev, vala, makeFontsConf, freefont_ttf
|
2018-10-16 06:33:07 +01:00
|
|
|
|
, cairo, freetype, fontconfig, pango
|
2019-03-01 14:31:58 +00:00
|
|
|
|
, bubblewrap, efibootmgr, flashrom, tpm2-tools
|
2017-02-27 13:38:49 +00:00
|
|
|
|
}:
|
2019-01-27 23:15:00 +00:00
|
|
|
|
|
|
|
|
|
# Updating? Keep $out/etc synchronized with passthru.filesInstalledToEtc
|
|
|
|
|
|
2017-09-18 14:14:21 +01:00
|
|
|
|
let
|
2018-02-14 04:03:20 +00:00
|
|
|
|
python = python3.withPackages (p: with p; [ pygobject3 pycairo pillow ]);
|
|
|
|
|
installedTestsPython = python3.withPackages (p: with p; [ pygobject3 requests ]);
|
2018-06-02 16:47:34 +01:00
|
|
|
|
|
|
|
|
|
fontsConf = makeFontsConf {
|
|
|
|
|
fontDirectories = [ freefont_ttf ];
|
|
|
|
|
};
|
2019-01-27 23:15:00 +00:00
|
|
|
|
in stdenv.mkDerivation rec {
|
|
|
|
|
pname = "fwupd";
|
2019-02-25 15:15:49 +00:00
|
|
|
|
version = "1.2.8";
|
2019-01-27 23:15:00 +00:00
|
|
|
|
|
2017-09-18 14:14:21 +01:00
|
|
|
|
src = fetchurl {
|
|
|
|
|
url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz";
|
2019-02-25 15:15:49 +00:00
|
|
|
|
sha256 = "0qbvq52c0scn1h99i1rf2la6rrhckin6gb02k7l0v3g07mxs20wc";
|
2017-09-18 14:14:21 +01:00
|
|
|
|
};
|
|
|
|
|
|
2019-01-05 03:30:13 +00:00
|
|
|
|
outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ];
|
2018-02-14 02:06:38 +00:00
|
|
|
|
|
2017-09-18 14:14:21 +01:00
|
|
|
|
nativeBuildInputs = [
|
2019-02-25 15:15:49 +00:00
|
|
|
|
meson ninja gtk-doc pkgconfig gobject-introspection intltool shared-mime-info
|
2018-06-02 16:47:34 +01:00
|
|
|
|
valgrind gcab docbook_xml_dtd_43 docbook_xsl help2man libxslt python wrapGAppsHook vala
|
2017-09-18 14:14:21 +01:00
|
|
|
|
];
|
|
|
|
|
buildInputs = [
|
2018-10-16 06:33:07 +01:00
|
|
|
|
polkit libxmlb gusb sqlite libarchive libsoup elfutils libsmbios gnu-efi libyaml
|
2018-02-25 02:23:58 +00:00
|
|
|
|
libgudev colord gpgme libuuid gnutls glib-networking efivar json-glib umockdev
|
2018-10-16 06:33:07 +01:00
|
|
|
|
bash-completion cairo freetype fontconfig pango
|
2017-09-18 14:14:21 +01:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
patches = [
|
2019-08-03 14:40:20 +01:00
|
|
|
|
./fix-paths.patch
|
2018-10-16 06:33:07 +01:00
|
|
|
|
./add-option-for-installation-sysconfdir.patch
|
2019-01-27 23:15:00 +00:00
|
|
|
|
|
|
|
|
|
# installed tests are installed to different output
|
|
|
|
|
# we also cannot have fwupd-tests.conf in $out/etc since it would form a cycle
|
|
|
|
|
(substituteAll {
|
|
|
|
|
src = ./installed-tests-path.patch;
|
|
|
|
|
# needs a different set of modules than po/make-images
|
|
|
|
|
inherit installedTestsPython;
|
|
|
|
|
})
|
2017-09-18 14:14:21 +01:00
|
|
|
|
];
|
2018-02-14 04:03:20 +00:00
|
|
|
|
|
2017-09-18 14:14:21 +01:00
|
|
|
|
postPatch = ''
|
|
|
|
|
patchShebangs .
|
2019-01-27 23:15:00 +00:00
|
|
|
|
|
|
|
|
|
# we cannot use placeholder in substituteAll
|
|
|
|
|
# https://github.com/NixOS/nix/issues/1846
|
|
|
|
|
substituteInPlace data/installed-tests/meson.build --subst-var installedTests
|
|
|
|
|
|
|
|
|
|
# install plug-ins to out, they are not really part of the library
|
2019-01-05 03:30:13 +00:00
|
|
|
|
substituteInPlace meson.build \
|
|
|
|
|
--replace "plugin_dir = join_paths(libdir, 'fwupd-plugins-3')" \
|
|
|
|
|
"plugin_dir = join_paths('${placeholder "out"}', 'fwupd_plugins-3')"
|
2019-03-01 14:31:58 +00:00
|
|
|
|
|
|
|
|
|
substituteInPlace data/meson.build --replace \
|
|
|
|
|
"install_dir: systemd.get_pkgconfig_variable('systemdshutdowndir')" \
|
|
|
|
|
"install_dir: '${placeholder "out"}/lib/systemd/system-shutdown'"
|
2017-09-18 14:14:21 +01:00
|
|
|
|
'';
|
|
|
|
|
|
2018-06-02 16:47:34 +01:00
|
|
|
|
# /etc/os-release not available in sandbox
|
|
|
|
|
# doCheck = true;
|
2018-02-14 02:06:38 +00:00
|
|
|
|
|
2018-02-10 04:23:17 +00:00
|
|
|
|
preFixup = ''
|
2019-08-03 14:40:20 +01:00
|
|
|
|
gappsWrapperArgs+=(
|
|
|
|
|
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
|
|
|
|
|
# See programs reached with fu_common_find_program_in_path in source
|
|
|
|
|
--prefix PATH : "${stdenv.lib.makeBinPath [ flashrom efibootmgr bubblewrap tpm2-tools ]}"
|
|
|
|
|
)
|
2018-02-10 04:23:17 +00:00
|
|
|
|
'';
|
|
|
|
|
|
2017-09-18 14:14:21 +01:00
|
|
|
|
mesonFlags = [
|
2018-02-14 04:03:20 +00:00
|
|
|
|
"-Dplugin_dummy=true"
|
2017-12-17 08:16:38 +00:00
|
|
|
|
"-Dudevdir=lib/udev"
|
|
|
|
|
"-Dsystemdunitdir=lib/systemd/system"
|
2018-06-02 16:47:34 +01:00
|
|
|
|
"-Defi-libdir=${gnu-efi}/lib"
|
|
|
|
|
"-Defi-ldsdir=${gnu-efi}/lib"
|
|
|
|
|
"-Defi-includedir=${gnu-efi}/include/efi"
|
2017-09-18 14:14:21 +01:00
|
|
|
|
"--localstatedir=/var"
|
2018-10-16 06:33:07 +01:00
|
|
|
|
"--sysconfdir=/etc"
|
|
|
|
|
"-Dsysconfdir_install=${placeholder "out"}/etc"
|
2017-09-18 14:14:21 +01:00
|
|
|
|
];
|
|
|
|
|
|
2018-06-02 16:47:34 +01:00
|
|
|
|
# TODO: We need to be able to override the directory flags from meson setup hook
|
|
|
|
|
# better – declaring them multiple times might become an error.
|
|
|
|
|
preConfigure = ''
|
|
|
|
|
mesonFlagsArray+=("--libexecdir=$out/libexec")
|
|
|
|
|
'';
|
|
|
|
|
|
2018-02-14 02:06:38 +00:00
|
|
|
|
postInstall = ''
|
|
|
|
|
moveToOutput share/installed-tests "$installedTests"
|
2018-02-14 04:03:20 +00:00
|
|
|
|
wrapProgram $installedTests/share/installed-tests/fwupd/hardware.py \
|
|
|
|
|
--prefix GI_TYPELIB_PATH : "$out/lib/girepository-1.0:${libsoup}/lib/girepository-1.0"
|
2018-02-14 02:06:38 +00:00
|
|
|
|
'';
|
|
|
|
|
|
2018-06-02 16:47:34 +01:00
|
|
|
|
FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
|
|
|
|
|
|
2018-08-29 10:35:00 +01:00
|
|
|
|
# TODO: wrapGAppsHook wraps efi capsule even though it is not elf
|
|
|
|
|
dontWrapGApps = true;
|
|
|
|
|
# so we need to wrap the executables manually
|
|
|
|
|
postFixup = ''
|
|
|
|
|
find -L "$out/bin" "$out/libexec" -type f -executable -print0 \
|
|
|
|
|
| while IFS= read -r -d ''' file; do
|
|
|
|
|
if [[ "''${file}" != *.efi ]]; then
|
|
|
|
|
echo "Wrapping program ''${file}"
|
|
|
|
|
wrapProgram "''${file}" "''${gappsWrapperArgs[@]}"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
'';
|
|
|
|
|
|
2018-06-02 16:47:34 +01:00
|
|
|
|
# /etc/fwupd/uefi.conf is created by the services.hardware.fwupd NixOS module
|
2018-02-17 03:06:24 +00:00
|
|
|
|
passthru = {
|
|
|
|
|
filesInstalledToEtc = [
|
2019-02-25 15:15:49 +00:00
|
|
|
|
"fwupd/remotes.d/dell-esrt.conf"
|
2018-02-17 03:06:24 +00:00
|
|
|
|
"fwupd/remotes.d/lvfs-testing.conf"
|
|
|
|
|
"fwupd/remotes.d/lvfs.conf"
|
|
|
|
|
"fwupd/remotes.d/vendor.conf"
|
2019-02-25 15:15:49 +00:00
|
|
|
|
"fwupd/remotes.d/vendor-directory.conf"
|
2018-02-17 03:06:24 +00:00
|
|
|
|
"pki/fwupd/GPG-KEY-Hughski-Limited"
|
2018-10-16 06:33:07 +01:00
|
|
|
|
"pki/fwupd/GPG-KEY-Linux-Foundation-Firmware"
|
2018-02-17 03:06:24 +00:00
|
|
|
|
"pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service"
|
|
|
|
|
"pki/fwupd/LVFS-CA.pem"
|
2018-06-02 16:47:34 +01:00
|
|
|
|
"pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata"
|
2018-02-17 03:06:24 +00:00
|
|
|
|
"pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service"
|
|
|
|
|
"pki/fwupd-metadata/LVFS-CA.pem"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2018-02-14 02:06:38 +00:00
|
|
|
|
meta = with stdenv.lib; {
|
2017-09-18 14:14:21 +01:00
|
|
|
|
homepage = https://fwupd.org/;
|
2018-02-14 02:06:38 +00:00
|
|
|
|
maintainers = with maintainers; [];
|
|
|
|
|
license = [ licenses.gpl2 ];
|
|
|
|
|
platforms = platforms.linux;
|
2017-09-18 14:14:21 +01:00
|
|
|
|
};
|
|
|
|
|
}
|