commit
c7f19d7626
@ -1,18 +1,68 @@
|
||||
{ stdenv, fetchurl, substituteAll, gtk-doc, pkgconfig, gobject-introspection, intltool
|
||||
, libgudev, polkit, libxmlb, gusb, sqlite, libarchive, glib-networking
|
||||
, libsoup, help2man, gpgme, libxslt, elfutils, libsmbios, efivar, gnu-efi
|
||||
, libyaml, valgrind, meson, libuuid, colord, docbook_xml_dtd_43, docbook_xsl
|
||||
, ninja, gcab, gnutls, python3, wrapGAppsHook, json-glib, bash-completion
|
||||
, shared-mime-info, umockdev, vala, makeFontsConf, freefont_ttf
|
||||
, cairo, freetype, fontconfig, pango
|
||||
, bubblewrap, efibootmgr, flashrom, tpm2-tools
|
||||
}:
|
||||
|
||||
# Updating? Keep $out/etc synchronized with passthru.filesInstalledToEtc
|
||||
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, substituteAll
|
||||
, gtk-doc
|
||||
, pkgconfig
|
||||
, gobject-introspection
|
||||
, intltool
|
||||
, libgudev
|
||||
, polkit
|
||||
, libxmlb
|
||||
, gusb
|
||||
, sqlite
|
||||
, libarchive
|
||||
, glib-networking
|
||||
, libsoup
|
||||
, help2man
|
||||
, gpgme
|
||||
, libxslt
|
||||
, elfutils
|
||||
, libsmbios
|
||||
, efivar
|
||||
, gnu-efi
|
||||
, libyaml
|
||||
, valgrind
|
||||
, meson
|
||||
, libuuid
|
||||
, colord
|
||||
, docbook_xml_dtd_43
|
||||
, docbook_xsl
|
||||
, ninja
|
||||
, gcab
|
||||
, gnutls
|
||||
, python3
|
||||
, wrapGAppsHook
|
||||
, json-glib
|
||||
, bash-completion
|
||||
, shared-mime-info
|
||||
, umockdev
|
||||
, vala
|
||||
, makeFontsConf
|
||||
, freefont_ttf
|
||||
, cairo
|
||||
, freetype
|
||||
, fontconfig
|
||||
, pango
|
||||
, bubblewrap
|
||||
, efibootmgr
|
||||
, flashrom
|
||||
, tpm2-tools
|
||||
, nixosTests
|
||||
}:
|
||||
|
||||
let
|
||||
python = python3.withPackages (p: with p; [ pygobject3 pycairo pillow ]);
|
||||
installedTestsPython = python3.withPackages (p: with p; [ pygobject3 requests ]);
|
||||
python = python3.withPackages (p: with p; [
|
||||
pygobject3
|
||||
pycairo
|
||||
pillow
|
||||
]);
|
||||
|
||||
installedTestsPython = python3.withPackages (p: with p; [
|
||||
pygobject3
|
||||
requests
|
||||
]);
|
||||
|
||||
fontsConf = makeFontsConf {
|
||||
fontDirectories = [ freefont_ttf ];
|
||||
@ -26,30 +76,70 @@ let
|
||||
# only redfish for x86_64
|
||||
haveRedfish = stdenv.isx86_64;
|
||||
|
||||
# Currently broken on Aarch64
|
||||
haveFlashrom = isx86;
|
||||
# # Currently broken on Aarch64
|
||||
# haveFlashrom = isx86;
|
||||
# Experimental in 1.2.10
|
||||
haveFlashrom = false;
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fwupd";
|
||||
version = "1.2.8";
|
||||
version = "1.2.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz";
|
||||
sha256 = "0qbvq52c0scn1h99i1rf2la6rrhckin6gb02k7l0v3g07mxs20wc";
|
||||
sha256 = "0inngs7i48akm9c7fmdsf9zjif595rkaba69rl76jfwfv8r21vjb";
|
||||
};
|
||||
|
||||
outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson ninja gtk-doc pkgconfig gobject-introspection intltool shared-mime-info
|
||||
valgrind gcab docbook_xml_dtd_43 docbook_xsl help2man libxslt python wrapGAppsHook vala
|
||||
meson
|
||||
ninja
|
||||
gtk-doc
|
||||
pkgconfig
|
||||
gobject-introspection
|
||||
intltool
|
||||
shared-mime-info
|
||||
valgrind
|
||||
gcab
|
||||
docbook_xml_dtd_43
|
||||
docbook_xsl
|
||||
help2man
|
||||
libxslt
|
||||
python
|
||||
wrapGAppsHook
|
||||
vala
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
polkit libxmlb gusb sqlite libarchive libsoup elfutils gnu-efi libyaml
|
||||
libgudev colord gpgme libuuid gnutls glib-networking json-glib umockdev
|
||||
bash-completion cairo freetype fontconfig pango efivar
|
||||
] ++ stdenv.lib.optionals haveDell [ libsmbios ];
|
||||
polkit
|
||||
libxmlb
|
||||
gusb
|
||||
sqlite
|
||||
libarchive
|
||||
libsoup
|
||||
elfutils
|
||||
gnu-efi
|
||||
libyaml
|
||||
libgudev
|
||||
colord
|
||||
gpgme
|
||||
libuuid
|
||||
gnutls
|
||||
glib-networking
|
||||
json-glib
|
||||
umockdev
|
||||
bash-completion
|
||||
cairo
|
||||
freetype
|
||||
fontconfig
|
||||
pango
|
||||
efivar
|
||||
] ++ stdenv.lib.optionals haveDell [
|
||||
libsmbios
|
||||
];
|
||||
|
||||
patches = [
|
||||
./fix-paths.patch
|
||||
@ -65,7 +155,12 @@ in stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
patchShebangs \
|
||||
libfwupd/generate-version-script.py \
|
||||
meson_post_install.sh \
|
||||
po/make-images \
|
||||
po/make-images.sh \
|
||||
po/test-deps
|
||||
|
||||
# we cannot use placeholder in substituteAll
|
||||
# https://github.com/NixOS/nix/issues/1846
|
||||
@ -85,9 +180,12 @@ in stdenv.mkDerivation rec {
|
||||
# doCheck = true;
|
||||
|
||||
preFixup = let
|
||||
binPath = [ efibootmgr bubblewrap tpm2-tools ] ++ stdenv.lib.optional haveFlashrom flashrom;
|
||||
in
|
||||
''
|
||||
binPath = [
|
||||
efibootmgr
|
||||
bubblewrap
|
||||
tpm2-tools
|
||||
] ++ stdenv.lib.optional haveFlashrom flashrom;
|
||||
in ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
|
||||
# See programs reached with fu_common_find_program_in_path in source
|
||||
@ -128,6 +226,10 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
|
||||
|
||||
# error: “PolicyKit files are missing”
|
||||
# https://github.com/NixOS/nixpkgs/pull/67625#issuecomment-525788428
|
||||
PKG_CONFIG_POLKIT_GOBJECT_1_ACTIONDIR = "/run/current-system/sw/share/polkit-1/actions";
|
||||
|
||||
# TODO: wrapGAppsHook wraps efi capsule even though it is not elf
|
||||
dontWrapGApps = true;
|
||||
# so we need to wrap the executables manually
|
||||
@ -157,11 +259,15 @@ in stdenv.mkDerivation rec {
|
||||
"pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service"
|
||||
"pki/fwupd-metadata/LVFS-CA.pem"
|
||||
];
|
||||
|
||||
tests = {
|
||||
installedTests = nixosTests.fwupd;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://fwupd.org/;
|
||||
maintainers = with maintainers; [];
|
||||
maintainers = with maintainers; [ jtojnar ];
|
||||
license = [ licenses.gpl2 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user