summary refs log tree commit diff
path: root/pkgs/os-specific/linux/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/firmware')
-rw-r--r--pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix6
-rw-r--r--pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix8
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/default.nix48
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch (renamed from pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch)25
-rw-r--r--pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix36
-rw-r--r--pkgs/os-specific/linux/firmware/zd1211/default.nix21
6 files changed, 74 insertions, 70 deletions
diff --git a/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix b/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix
index 01609c8779dd..a57a6f1d70f6 100644
--- a/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix
+++ b/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix
@@ -27,11 +27,15 @@ stdenv.mkDerivation rec {
       linkname=$(basename $filename | awk 'match($0,/^(BCM)[0-9A-Z]+(-[0-9a-z]{4}-[0-9a-z]{4}\.hcd)$/,c) { print c[1]c[2] }')
       if ! [ -z $linkname ]
       then
-        ln -s -T $filename $out/lib/firmware/brcm/$linkname
+        ln -s --relative -T $filename $out/lib/firmware/brcm/$linkname
       fi
     done
   '';
 
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+  outputHash = "042frb2dmrqfj8q83h5p769q6hg2b3i8fgnyvs9r9a71z7pbsagq";
+
   meta = with stdenv.lib; {
     description = "Firmware for Broadcom WIDCOMM® Bluetooth devices";
     homepage = http://www.catalog.update.microsoft.com/Search.aspx?q=Broadcom+bluetooth;
diff --git a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
index 47d56cbf7967..47fe2e446c3e 100644
--- a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
+++ b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
@@ -10,15 +10,15 @@ stdenv.mkDerivation rec {
     sha256 = "110vxgahyx5dvylqrxsm5cmx4a32cl2zchvm6cgc270jz75fg7wd";
   };
 
-  preInstall = ''
-    mkdir -p $out
-  '';
-
   installFlags = [ "DESTDIR=$(out)" ];
 
   # Firmware blobs do not need fixing and should not be modified
   dontFixup = true;
 
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+  outputHash = "0r2g91hc7csp2fbp2ny4s4rwv0mw2m130gpnisxnhzi05hkwki66";
+
   meta = with stdenv.lib; {
     description = "Binary firmware collection packaged by kernel.org";
     homepage = http://packages.debian.org/sid/firmware-linux-nonfree;
diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix
index 646c18860c5d..fec1b3ed6f04 100644
--- a/pkgs/os-specific/linux/firmware/fwupd/default.nix
+++ b/pkgs/os-specific/linux/firmware/fwupd/default.nix
@@ -1,40 +1,48 @@
 { stdenv, fetchurl, fetchpatch, gtk-doc, pkgconfig, gobjectIntrospection, intltool
 , libgudev, polkit, appstream-glib, gusb, sqlite, libarchive, glib-networking
 , libsoup, help2man, gpgme, libxslt, elfutils, libsmbios, efivar, glibcLocales
-, fwupdate, libyaml, valgrind, meson, libuuid, colord, docbook_xml_dtd_43, docbook_xsl
-, ninja, gcab, gnutls, python3, wrapGAppsHook, json-glib
-, shared-mime-info, umockdev
+, 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
 }:
 let
   # Updating? Keep $out/etc synchronized with passthru.filesInstalledToEtc
-  version = "1.0.5";
+  version = "1.1.0";
   python = python3.withPackages (p: with p; [ pygobject3 pycairo pillow ]);
   installedTestsPython = python3.withPackages (p: with p; [ pygobject3 requests ]);
+
+  fontsConf = makeFontsConf {
+    fontDirectories = [ freefont_ttf ];
+  };
 in stdenv.mkDerivation {
   name = "fwupd-${version}";
   src = fetchurl {
     url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz";
-    sha256 = "0wm195vkf6x1kg1dz0sbfwpdcn9f6638l7vyzplcfrb3v07pqxpq";
+    sha256 = "0flfpzb0fxgixxddpwak4s63i35kr915pdfq5mfrnxq4bwcj24yd";
   };
 
-  outputs = [ "out" "devdoc" "man" "installedTests" ];
+  outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ];
 
   nativeBuildInputs = [
     meson ninja gtk-doc pkgconfig gobjectIntrospection intltool glibcLocales shared-mime-info
-    valgrind gcab docbook_xml_dtd_43 docbook_xsl help2man libxslt python wrapGAppsHook
+    valgrind gcab docbook_xml_dtd_43 docbook_xsl help2man libxslt python wrapGAppsHook vala
   ];
   buildInputs = [
-    polkit appstream-glib gusb sqlite libarchive libsoup elfutils libsmbios fwupdate libyaml
+    polkit appstream-glib gusb sqlite libarchive libsoup elfutils libsmbios gnu-efi libyaml
     libgudev colord gpgme libuuid gnutls glib-networking efivar json-glib umockdev
+    bash-completion
   ];
 
   LC_ALL = "en_US.UTF-8"; # For po/make-images
 
   patches = [
-    ./fix-missing-deps.patch
+    ./fix-paths.patch
+
+    # Allow localedir in lib output
+    # https://github.com/hughsie/fwupd/pull/626
     (fetchpatch {
-      url = https://github.com/hughsie/fwupd/commit/767210e4b1401d5d5bb7ac1e7c052a60b6529d88.patch;
-      sha256 = "00adfabxpgdg74jx7i6jihhh8njjk2r7v3fxqs4scj3vn06k5fmw";
+      url = https://github.com/hughsie/fwupd/commit/9822c387ea13419a0eb2624fcd13d50735cb89f8.patch;
+      sha256 = "12bk6ga2hvsswpc4gal95l2z5a6gp3vdjq16zm2npligcvf37b6i";
     })
   ];
 
@@ -47,7 +55,8 @@ in stdenv.mkDerivation {
     substituteInPlace data/installed-tests/fwupdmgr.test.in --subst-var-by installedtestsdir "$installedTests/share/installed-tests/fwupd"
   '';
 
-  doCheck = true;
+  # /etc/os-release not available in sandbox
+  # doCheck = true;
 
   preFixup = ''
     gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
@@ -55,18 +64,29 @@ in stdenv.mkDerivation {
 
   mesonFlags = [
     "-Dplugin_dummy=true"
-    "-Dbootdir=/boot"
     "-Dudevdir=lib/udev"
     "-Dsystemdunitdir=lib/systemd/system"
+    "-Defi-libdir=${gnu-efi}/lib"
+    "-Defi-ldsdir=${gnu-efi}/lib"
+    "-Defi-includedir=${gnu-efi}/include/efi"
     "--localstatedir=/var"
   ];
 
+  # 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")
+  '';
+
   postInstall = ''
     moveToOutput share/installed-tests "$installedTests"
     wrapProgram $installedTests/share/installed-tests/fwupd/hardware.py \
       --prefix GI_TYPELIB_PATH : "$out/lib/girepository-1.0:${libsoup}/lib/girepository-1.0"
   '';
 
+  FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
+
+  # /etc/fwupd/uefi.conf is created by the services.hardware.fwupd NixOS module
   passthru = {
     filesInstalledToEtc = [
       "fwupd/remotes.d/fwupd.conf"
@@ -74,8 +94,10 @@ in stdenv.mkDerivation {
       "fwupd/remotes.d/lvfs.conf"
       "fwupd/remotes.d/vendor.conf"
       "pki/fwupd/GPG-KEY-Hughski-Limited"
+      "pki/fwupd/GPG-KEY-Linux-Foundation-Metadata"
       "pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service"
       "pki/fwupd/LVFS-CA.pem"
+      "pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata"
       "pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service"
       "pki/fwupd-metadata/LVFS-CA.pem"
     ];
diff --git a/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch b/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch
index d1d7c06027f9..1cd9eb0e8f17 100644
--- a/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch
+++ b/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch
@@ -6,7 +6,7 @@
 -)
 --- a/data/meson.build
 +++ b/data/meson.build
-@@ -7,16 +7,12 @@
+@@ -8,16 +8,12 @@
    subdir('installed-tests')
  endif
  
@@ -26,8 +26,8 @@
  install_data(['metadata.xml'],
 --- a/data/pki/meson.build
 +++ b/data/pki/meson.build
-@@ -3,13 +3,13 @@
-       'GPG-KEY-Hughski-Limited',
+@@ -4,14 +4,14 @@
+       'GPG-KEY-Linux-Foundation-Firmware',
        'GPG-KEY-Linux-Vendor-Firmware-Service',
      ],
 -    install_dir : join_paths(sysconfdir, 'pki', 'fwupd')
@@ -35,6 +35,7 @@
    )
  
    install_data([
+       'GPG-KEY-Linux-Foundation-Metadata',
        'GPG-KEY-Linux-Vendor-Firmware-Service',
      ],
 -    install_dir : join_paths(sysconfdir, 'pki', 'fwupd-metadata')
@@ -42,7 +43,7 @@
    )
  endif
  
-@@ -17,12 +17,12 @@
+@@ -19,12 +19,12 @@
    install_data([
        'LVFS-CA.pem',
      ],
@@ -66,9 +67,9 @@
 -    install_dir : join_paths(sysconfdir, 'fwupd', 'remotes.d')
 +    install_dir : join_paths(get_option('prefix'), 'etc', 'fwupd', 'remotes.d')
    )
- endif
- 
-@@ -19,12 +19,12 @@
+   i18n.merge_file(
+     input: 'lvfs.metainfo.xml',
+@@ -37,12 +37,12 @@
    output : 'fwupd.conf',
    configuration : con2,
    install: true,
@@ -92,13 +93,3 @@
 -    echo 'Creating stateful directory'
 -    mkdir -p ${DESTDIR}${LOCALSTATEDIR}/lib/fwupd
  #fi
---- a/po/make-images.sh
-+++ b/po/make-images.sh
-@@ -7,6 +7,7 @@
- #
- install -m 0755 -d ${MESON_INSTALL_DESTDIR_PREFIX}/share/locale/
- ${MESON_SOURCE_ROOT}/po/make-images "Installing firmware update…" ${MESON_INSTALL_DESTDIR_PREFIX}/share/locale/ ${MESON_SOURCE_ROOT}/po/LINGUAS
-+shopt -s nullglob
- for x in ${MESON_INSTALL_DESTDIR_PREFIX}/share/locale/*/LC_IMAGES/*.bmp ; do
-     gzip -f ${x}
- done
diff --git a/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix b/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
index bf8bcf387261..372be2d71f2c 100644
--- a/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
+++ b/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
@@ -1,35 +1,25 @@
-{ stdenv, fetchurl }:
+{ lib, fetchzip }:
 
 let version = "3.1"; in
 
-stdenv.mkDerivation {
+fetchzip {
   name = "intel2200BGFirmware-${version}";
+  url = "https://src.fedoraproject.org/repo/pkgs/ipw2200-firmware/ipw2200-fw-${version}.tgz/eaba788643c7cc7483dd67ace70f6e99/ipw2200-fw-${version}.tgz";
+  sha256 = "0zjyjndyc401pn5x5lgypxdal21n82ymi3vbb2ja1b89yszj432b";
 
-  src = fetchurl {
-    url = "https://src.fedoraproject.org/repo/pkgs/ipw2200-firmware/ipw2200-fw-${version}.tgz/eaba788643c7cc7483dd67ace70f6e99/ipw2200-fw-${version}.tgz";
-    sha256 = "c6818c11c18cc030d55ff83f64b2bad8feef485e7742f84f94a61d811a6258bd";
-  };
-
-  phases = [ "unpackPhase" "installPhase" ];
-
-  installPhase = ''
-    mkdir -p $out/lib/firmware
-    for fw in \
-      ipw2200-bss.fw \
-      ipw2200-ibss.fw \
-      ipw2200-sniffer.fw
-    do
-      cp -f $fw $out/lib/firmware/$fw
-    done
-    mkdir -p $out/share/doc/intel2200BGFirmware
-    cp -f LICENSE.ipw2200-fw $out/share/doc/intel2200BGFirmware/LICENSE
+  postFetch = ''
+    tar -xzvf $downloadedFile --strip-components=1
+    install -D -m644 ipw2200-bss.fw     $out/lib/firmware/ipw2200-bss.fw
+    install -D -m644 ipw2200-ibss.fw    $out/lib/firmware/ipw2200-ibss.fw
+    install -D -m644 ipw2200-sniffer.fw $out/lib/firmware/ipw2200-sniffer.fw
+    install -D -m644 LICENSE.ipw2200-fw $out/share/doc/intel2200BGFirmware/LICENSE
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Firmware for Intel 2200BG cards";
     homepage = http://ipw2200.sourceforge.net/firmware.php;
-    license = stdenv.lib.licenses.unfreeRedistributableFirmware;
+    license = licenses.unfreeRedistributableFirmware;
     maintainers = with maintainers; [ sternenseemann ];
-    platforms = with platforms; linux;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/firmware/zd1211/default.nix b/pkgs/os-specific/linux/firmware/zd1211/default.nix
index e28a85ab0b27..2c9db47539f7 100644
--- a/pkgs/os-specific/linux/firmware/zd1211/default.nix
+++ b/pkgs/os-specific/linux/firmware/zd1211/default.nix
@@ -1,23 +1,20 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchzip }:
 
-stdenv.mkDerivation rec {
+let
   pname = "zd1211-firmware";
   version = "1.5";
-
+in fetchzip rec {
   name = "${pname}-${version}";
+  url = "mirror://sourceforge/zd1211/${name}.tar.bz2";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/zd1211/${name}.tar.bz2";
-    sha256 = "04ibs0qw8bh6h6zmm5iz6lddgknwhsjq8ib3gyck6a7psw83h7gi";
-  };
-
-  dontBuild = true;
-
-  installPhase = ''
+  postFetch = ''
+    tar -xjvf $downloadedFile
     mkdir -p $out/lib/firmware/zd1211
-    cp * $out/lib/firmware/zd1211
+    cp zd1211-firmware/* $out/lib/firmware/zd1211
   '';
 
+  sha256 = "0sj2zl3r0549mjz37xy6iilm1hm7ak5ax02gwrn81r5yvphqzd52";
+
   meta = {
     description = "Firmware for the ZyDAS ZD1211(b) 802.11a/b/g USB WLAN chip";
     homepage = https://sourceforge.net/projects/zd1211/;