diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/firmware')
24 files changed, 959 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix new file mode 100644 index 000000000000..8aa78e65dec1 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "b43-fwcutter-019"; + + src = fetchurl { + url = "https://bues.ch/b43/fwcutter/${name}.tar.bz2"; + sha256 = "1ki1f5fy3yrw843r697f8mqqdz0pbsbqnvg4yzkhibpn1lqqbsnn"; + }; + + patches = [ ./no-root-install.patch ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + meta = { + description = "Firmware extractor for cards supported by the b43 kernel module"; + homepage = http://wireless.kernel.org/en/users/Drivers/b43; + license = stdenv.lib.licenses.free; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/no-root-install.patch b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/no-root-install.patch new file mode 100644 index 000000000000..578812e0ad0b --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/no-root-install.patch @@ -0,0 +1,18 @@ +diff -Naur b43-fwcutter-015-orig/Makefile b43-fwcutter-015/Makefile +--- b43-fwcutter-015-orig/Makefile 2011-08-21 08:17:01.000000000 -0400 ++++ b43-fwcutter-015/Makefile 2012-07-13 17:57:53.002154557 -0400 +@@ -51,10 +51,10 @@ + $(QUIET_CC) $(CFLAGS) -o $(BIN) $(call OBJS,$(SRCS)) $(LDFLAGS) + + install: all +- install -d -o 0 -g 0 -m 755 $(PREFIX)/bin/ +- install -o 0 -g 0 -m 755 $(BIN) $(PREFIX)/bin/ +- install -d -o 0 -g 0 -m 755 $(PREFIX)/man/man1/ +- install -o 0 -g 0 -m 644 $(BIN).1 $(PREFIX)/man/man1/ ++ install -d -m 755 $(PREFIX)/bin/ ++ install -m 755 $(BIN) $(PREFIX)/bin/ ++ install -d -m 755 $(PREFIX)/man/man1/ ++ install -m 644 $(BIN).1 $(PREFIX)/man/man1/ + + clean: + -rm -Rf obj dep *.orig *.rej *~ diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix new file mode 100644 index 000000000000..1cc0e7ae4ca7 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, b43FirmwareCutter }: + +let version = "5.100.138"; in + +stdenv.mkDerivation { + name = "b43-firmware-${version}"; + + src = fetchurl { + url = "http://www.lwfinger.com/b43-firmware/broadcom-wl-${version}.tar.bz2"; + sha256 = "0vz4ka8gycf72gmnaq61k8rh8y17j1wm2k3fidxvcqjvmix0drzi"; + }; + + buildInputs = [ b43FirmwareCutter ]; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + mkdir -p $out/lib/firmware + b43-fwcutter -w $out/lib/firmware linux/wl_apsta.o + ''; + + meta = { + description = "Firmware for cards supported by the b43 kernel module"; + homepage = http://wireless.kernel.org/en/users/Drivers/b43; + license = stdenv.lib.licenses.unfree; + }; +} + diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix new file mode 100644 index 000000000000..2637beb517a3 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, b43FirmwareCutter }: + +stdenv.mkDerivation rec { + name = "b43-firmware-${version}"; + version = "6.30.163.46"; + + src = fetchurl { + url = "http://www.lwfinger.com/b43-firmware/broadcom-wl-${version}.tar.bz2"; + sha256 = "0baw6gcnrhxbb447msv34xg6rmlcj0gm3ahxwvdwfcvq4xmknz50"; + }; + + buildInputs = [ b43FirmwareCutter ]; + + phases = [ "unpackPhase" "installPhase" ]; + + sourceRoot = "."; + + installPhase = '' + mkdir $out + b43-fwcutter -w $out *.wl_apsta.o + ''; + + meta = with stdenv.lib; { + description = "Firmware for cards supported by the b43 kernel module"; + homepage = http://wireless.kernel.org/en/users/Drivers/b43; + downloadPage = http://www.lwfinger.com/b43-firmware; + license = licenses.unfree; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix new file mode 100644 index 000000000000..a57a6f1d70f6 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, cabextract, bt-fw-converter }: + +# Kernels between 4.2 and 4.7 will not work with +# this packages as they expect the firmware to be named "BCM.hcd" +# see: https://github.com/NixOS/nixpkgs/pull/25478#issuecomment-299034865 +stdenv.mkDerivation rec { + name = "broadcom-bt-firmware-${version}"; + version = "12.0.1.1012"; + + src = fetchurl { + url = "http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/04/852bb503-de7b-4810-a7dd-cbab62742f09_7cf83a4c194116648d17707ae37d564f9c70bec2.cab"; + sha256 = "1b1qjwxjk4y91l3iz157kms8601n0mmiik32cs6w9b1q4sl4pxx9"; + }; + + nativeBuildInputs = [ cabextract bt-fw-converter ]; + + unpackCmd = '' + mkdir -p ${name} + cabextract $src --directory ${name} + ''; + + installPhase = '' + mkdir -p $out/lib/firmware/brcm + bt-fw-converter -f bcbtums.inf -o $out/lib/firmware/brcm + for filename in $out/lib/firmware/brcm/*.hcd + do + 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 --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; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ zraexy ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix new file mode 100644 index 000000000000..8927e1a28e7c --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, makeWrapper, perl, perlPackages, bluez }: + +stdenv.mkDerivation rec { + name = "bt-fw-converter-${version}"; + version = "2017-02-19"; + rev = "2d8b34402df01c6f7f4b8622de9e8b82fadf4153"; + + src = fetchurl { + url = "https://raw.githubusercontent.com/winterheart/broadcom-bt-firmware/${rev}/tools/bt-fw-converter.pl"; + sha256 = "c259b414a4a273c89a0fa7159b3ef73d1ea62b6de91c3a7c2fcc832868e39f4b"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ perl perlPackages.RegexpGrammars bluez ]; + + unpackCmd = '' + mkdir -p ${name} + cp $src ${name}/bt-fw-converter.pl + ''; + + installPhase = '' + install -D -m755 bt-fw-converter.pl $out/bin/bt-fw-converter + substituteInPlace $out/bin/bt-fw-converter --replace /usr/bin/hex2hcd ${bluez}/bin/hex2hcd + wrapProgram $out/bin/bt-fw-converter --set PERL5LIB $PERL5LIB + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/winterheart/broadcom-bt-firmware/; + description = "A tool that converts hex to hcd based on inf file"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ zraexy ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix new file mode 100644 index 000000000000..5f8f6c542521 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchurl, cpio, xz, pkgs }: + +let + + version = "1.43_4"; + + + # Updated according to https://github.com/patjak/bcwc_pcie/pull/81/files + # and https://github.com/patjak/bcwc_pcie/blob/5a7083bd98b38ef3bd223f7ee531d58f4fb0fe7c/firmware/Makefile#L3-L9 + # and https://github.com/patjak/bcwc_pcie/blob/5a7083bd98b38ef3bd223f7ee531d58f4fb0fe7c/firmware/extract-firmware.sh + + # From the Makefile: + dmgUrl = "https://support.apple.com/downloads/DL1877/en_US/osxupd10.11.5.dmg"; + dmgRange = "205261917-208085450"; # the whole download is 1.3GB, this cuts it down to 2MB + # Notes: + # 1. Be sure to update the sha256 below in the fetch_url + # 2. Be sure to update the homepage in the meta + + # Also from the Makefile (OS_DRV, OS_DRV_DIR), but seems to not change: + firmwareIn = "./System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/AppleCameraInterface"; + firmwareOut = "firmware.bin"; + + # The following are from the extract-firmware.sh + firmwareOffset = "81920"; # Variable: firmw_offsets + firmwareSize = "603715"; # Variable: firmw_sizes + + + # separated this here as the script will fail without the 'exit 0' + unpack = pkgs.writeScriptBin "unpack" '' + xzcat -Q $src | cpio --format odc -i -d ${firmwareIn} + exit 0 + ''; + +in + +stdenv.mkDerivation { + + name = "facetimehd-firmware-${version}"; + src = fetchurl { + url = dmgUrl; + sha256 = "0xqkl4yds0n9fdjvnk0v5mj382q02crry6wm2q7j3ncdqwsv02sv"; + curlOpts = "-r ${dmgRange}"; + }; + + phases = [ "buildPhase" ]; + + buildInputs = [ cpio xz ]; + + buildPhase = '' + ${unpack}/bin/unpack + dd bs=1 skip=${firmwareOffset} count=${firmwareSize} if=${firmwareIn} of=${firmwareOut}.gz &> /dev/null + mkdir -p $out/lib/firmware/facetimehd + gunzip -c ${firmwareOut}.gz > $out/lib/firmware/facetimehd/${firmwareOut} + ''; + + meta = with stdenv.lib; { + description = "facetimehd firmware"; + homepage = https://support.apple.com/downloads/DL1877; + license = licenses.unfree; + maintainers = with maintainers; [ womfoo grahamc ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix new file mode 100644 index 000000000000..57135bf515b6 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchgit }: + +stdenv.mkDerivation rec { + name = "firmware-linux-nonfree-${version}"; + version = "2018-12-13"; + + src = fetchgit { + url = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"; + rev = "813fa1fc6fba6638decd974c4a6a2e485069ea15"; + sha256 = "0zspisbrvplgz1plk4ya22h7ilnsk60srk4q38h6n5d18fpn7rdw"; + }; + + installFlags = [ "DESTDIR=$(out)" ]; + + # Firmware blobs do not need fixing and should not be modified + dontFixup = true; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "1yr6wcvc3s97h4w0qapma4l17dqsj175an6kmn5w6dppz19g0r5b"; + + meta = with stdenv.lib; { + description = "Binary firmware collection packaged by kernel.org"; + homepage = http://packages.debian.org/sid/firmware-linux-nonfree; + license = licenses.unfreeRedistributableFirmware; + platforms = platforms.linux; + maintainers = with maintainers; [ fpletz ]; + priority = 6; # give precedence to kernel firmware + }; + + passthru = { inherit version; }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch new file mode 100644 index 000000000000..44369dc5117f --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch @@ -0,0 +1,169 @@ +From 2fe9625cc6dec10531482a3947ef75009eb21489 Mon Sep 17 00:00:00 2001 +From: Jan Tojnar <jtojnar@gmail.com> +Date: Tue, 30 Oct 2018 22:26:30 +0100 +Subject: [PATCH] build: Add option for installation sysconfdir + +On NixOS, sysconfdir is read-only by default, and packages are not supposed to +install files there. Instead, NixOS has a concept of modules that declaratively +describe the system configuration. + +We still want to install the config files and certificates to fwupd prefix, +so that the modules can use them as they see fit, but at the same time, we +cannot set sysconfdir=${prefix}/etc because the daemon needs to read the +configuration from the directory created by the module. + +With autotools, we could easily solve this by passing a the sysconfdir inside +prefix only to `make install`, but Meson does not support anything like that. +Until we manage to convince Meson to support install flags, we need to create +our own install flag. +--- + data/meson.build | 4 ++-- + data/pki/meson.build | 8 ++++---- + data/remotes.d/meson.build | 6 +++--- + meson.build | 6 ++++++ + meson_options.txt | 1 + + plugins/redfish/meson.build | 2 +- + plugins/uefi/meson.build | 2 +- + 7 files changed, 18 insertions(+), 11 deletions(-) + +diff --git a/data/meson.build b/data/meson.build +index 8dd2ac9ad..d4ad1cbc1 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -9,7 +9,7 @@ if get_option('tests') and get_option('daemon') + endif + + install_data(['daemon.conf'], +- install_dir : join_paths(sysconfdir, 'fwupd') ++ install_dir : join_paths(sysconfdir_install, 'fwupd') + ) + + install_data(['org.freedesktop.fwupd.metainfo.xml'], +@@ -17,7 +17,7 @@ install_data(['org.freedesktop.fwupd.metainfo.xml'], + ) + + install_data(['org.freedesktop.fwupd.conf'], +- install_dir : join_paths(sysconfdir, 'dbus-1', 'system.d') ++ install_dir : join_paths(sysconfdir_install, 'dbus-1', 'system.d') + ) + + install_data(['metadata.xml'], +diff --git a/data/pki/meson.build b/data/pki/meson.build +index eefcc9142..dc801fa18 100644 +--- a/data/pki/meson.build ++++ b/data/pki/meson.build +@@ -4,14 +4,14 @@ if get_option('gpg') + 'GPG-KEY-Linux-Foundation-Firmware', + 'GPG-KEY-Linux-Vendor-Firmware-Service', + ], +- install_dir : join_paths(sysconfdir, 'pki', 'fwupd') ++ install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd') + ) + + install_data([ + 'GPG-KEY-Linux-Foundation-Metadata', + 'GPG-KEY-Linux-Vendor-Firmware-Service', + ], +- install_dir : join_paths(sysconfdir, 'pki', 'fwupd-metadata') ++ install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd-metadata') + ) + endif + +@@ -19,12 +19,12 @@ if get_option('pkcs7') + install_data([ + 'LVFS-CA.pem', + ], +- install_dir : join_paths(sysconfdir, 'pki', 'fwupd') ++ install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd') + ) + install_data([ + 'LVFS-CA.pem', + ], +- install_dir : join_paths(sysconfdir, 'pki', 'fwupd-metadata') ++ install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd-metadata') + ) + endif + +diff --git a/data/remotes.d/meson.build b/data/remotes.d/meson.build +index 824291fc5..d0599a00a 100644 +--- a/data/remotes.d/meson.build ++++ b/data/remotes.d/meson.build +@@ -3,7 +3,7 @@ if get_option('daemon') and get_option('lvfs') + 'lvfs.conf', + 'lvfs-testing.conf', + ], +- install_dir : join_paths(sysconfdir, 'fwupd', 'remotes.d') ++ install_dir : join_paths(sysconfdir_install, 'fwupd', 'remotes.d') + ) + i18n.merge_file( + input: 'lvfs.metainfo.xml', +@@ -37,12 +37,12 @@ configure_file( + output : 'fwupd.conf', + configuration : con2, + install: true, +- install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'), ++ install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'), + ) + configure_file( + input : 'vendor.conf', + output : 'vendor.conf', + configuration : con2, + install: true, +- install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'), ++ install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'), + ) +diff --git a/meson.build b/meson.build +index 737841f1a..23bd7a2e3 100644 +--- a/meson.build ++++ b/meson.build +@@ -144,6 +144,12 @@ localstatedir = join_paths(prefix, get_option('localstatedir')) + mandir = join_paths(prefix, get_option('mandir')) + localedir = join_paths(prefix, get_option('localedir')) + ++if get_option('sysconfdir_install') != '' ++ sysconfdir_install = join_paths(prefix, get_option('sysconfdir_install')) ++else ++ sysconfdir_install = sysconfdir ++endif ++ + gio = dependency('gio-2.0', version : '>= 2.45.8') + if gio.version().version_compare ('>= 2.55.0') + conf.set('HAVE_GIO_2_55_0', '1') +diff --git a/meson_options.txt b/meson_options.txt +index 23ef8cdb8..db8f93b6c 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -17,6 +17,7 @@ option('plugin_uefi', type : 'boolean', value : true, description : 'enable UEFI + option('plugin_nvme', type : 'boolean', value : true, description : 'enable NVMe support') + option('systemd', type : 'boolean', value : true, description : 'enable systemd support') + option('systemdunitdir', type: 'string', value: '', description: 'Directory for systemd units') ++option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') + option('tests', type : 'boolean', value : true, description : 'enable tests') + option('udevdir', type: 'string', value: '', description: 'Directory for udev rules') + option('efi-cc', type : 'string', value : 'gcc', description : 'the compiler to use for EFI modules') +diff --git a/plugins/redfish/meson.build b/plugins/redfish/meson.build +index 288f614e4..90cfe6484 100644 +--- a/plugins/redfish/meson.build ++++ b/plugins/redfish/meson.build +@@ -22,7 +22,7 @@ shared_module('fu_plugin_redfish', + ) + + install_data(['redfish.conf'], +- install_dir: join_paths(sysconfdir, 'fwupd') ++ install_dir: join_paths(sysconfdir_install, 'fwupd') + ) + + if get_option('tests') +diff --git a/plugins/uefi/meson.build b/plugins/uefi/meson.build +index c037e1b30..a0e8cd3e6 100644 +--- a/plugins/uefi/meson.build ++++ b/plugins/uefi/meson.build +@@ -69,7 +69,7 @@ executable( + ) + + install_data(['uefi.conf'], +- install_dir: join_paths(sysconfdir, 'fwupd') ++ install_dir: join_paths(sysconfdir_install, 'fwupd') + ) + + if get_option('tests') diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix new file mode 100644 index 000000000000..de0a1e2ee0d7 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix @@ -0,0 +1,122 @@ +{ stdenv, fetchurl, gtk-doc, pkgconfig, gobject-introspection, intltool +, libgudev, polkit, libxmlb, gusb, sqlite, libarchive, glib-networking +, libsoup, help2man, gpgme, libxslt, elfutils, libsmbios, efivar, glibcLocales +, 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 +}: +let + # Updating? Keep $out/etc synchronized with passthru.filesInstalledToEtc + version = "1.2.1"; + 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 = "126b3lsh4gkyajsqm2c8l6wqr4dd7m26krz2527khmlps0lxdhg1"; + }; + + outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ]; + + nativeBuildInputs = [ + meson ninja gtk-doc pkgconfig gobject-introspection intltool glibcLocales shared-mime-info + valgrind gcab docbook_xml_dtd_43 docbook_xsl help2man libxslt python wrapGAppsHook vala + ]; + buildInputs = [ + polkit libxmlb gusb sqlite libarchive libsoup elfutils libsmbios gnu-efi libyaml + libgudev colord gpgme libuuid gnutls glib-networking efivar json-glib umockdev + bash-completion cairo freetype fontconfig pango + ]; + + LC_ALL = "en_US.UTF-8"; # For po/make-images + + patches = [ + ./fix-paths.patch + ./add-option-for-installation-sysconfdir.patch + ]; + + postPatch = '' + # needs a different set of modules than po/make-images + escapedInterpreterLine=$(echo "${installedTestsPython}/bin/python3" | sed 's|\\|\\\\|g') + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" data/installed-tests/hardware.py + + patchShebangs . + substituteInPlace data/installed-tests/fwupdmgr.test.in --subst-var-by installedtestsdir "$installedTests/share/installed-tests/fwupd" + ''; + + # /etc/os-release not available in sandbox + # doCheck = true; + + preFixup = '' + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share") + ''; + + mesonFlags = [ + "-Dplugin_dummy=true" + "-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" + "--sysconfdir=/etc" + "-Dsysconfdir_install=${placeholder "out"}/etc" + ]; + + # 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 + + # 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 + ''; + + # /etc/fwupd/uefi.conf is created by the services.hardware.fwupd NixOS module + passthru = { + filesInstalledToEtc = [ + "fwupd/remotes.d/fwupd.conf" + "fwupd/remotes.d/lvfs-testing.conf" + "fwupd/remotes.d/lvfs.conf" + "fwupd/remotes.d/vendor.conf" + "pki/fwupd/GPG-KEY-Hughski-Limited" + "pki/fwupd/GPG-KEY-Linux-Foundation-Firmware" + "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" + ]; + }; + + meta = with stdenv.lib; { + homepage = https://fwupd.org/; + maintainers = with maintainers; []; + license = [ licenses.gpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch new file mode 100644 index 000000000000..d1024438d8a7 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch @@ -0,0 +1,15 @@ +--- a/data/builder/meson.build ++++ b/data/builder/meson.build +@@ -1,3 +0,0 @@ +-install_data('README.md', +- install_dir : join_paths(localstatedir, 'lib', 'fwupd', 'builder') +-) +--- a/meson_post_install.sh ++++ b/meson_post_install.sh +@@ -11,6 +11,4 @@ + echo 'Updating systemd deps' + mkdir -p ${DESTDIR}${SYSTEMDUNITDIR}/system-update.target.wants + ln -sf ../fwupd-offline-update.service ${DESTDIR}${SYSTEMDUNITDIR}/system-update.target.wants/fwupd-offline-update.service +- echo 'Creating stateful directory' +- mkdir -p ${DESTDIR}${LOCALSTATEDIR}/lib/fwupd + #fi diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/default.nix new file mode 100644 index 000000000000..5b14546c90fd --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/default.nix @@ -0,0 +1,60 @@ +{ efivar, fetchurl, gettext, gnu-efi, libsmbios, pkgconfig, popt, stdenv }: +let + version = "12"; +in stdenv.mkDerivation { + name = "fwupdate-${version}"; + src = fetchurl { + url = "https://github.com/rhinstaller/fwupdate/releases/download/${version}/fwupdate-${version}.tar.bz2"; + sha256 = "00w7jsg7wrlq4cpfz26m9rbv2jwyf0sansf343vfq02fy5lxars1"; + }; + + patches = [ + ./do-not-create-sharedstatedir.patch + ]; + + NIX_CFLAGS_COMPILE = [ "-I${gnu-efi}/include/efi" ]; + + # TODO: Just apply the disable to the efi subdir + hardeningDisable = [ "stackprotector" ]; + + makeFlags = [ + "EFIDIR=nixos" + "prefix=$(out)" + "LIBDIR=$(out)/lib" + "GNUEFIDIR=${gnu-efi}/lib" + "ESPMOUNTPOINT=$(out)/boot" + ]; + + nativeBuildInputs = [ + pkgconfig + gettext + ]; + + buildInputs = [ + gnu-efi + libsmbios + popt + ]; + + propagatedBuildInputs = [ + efivar + ]; + + # TODO: fix wrt cross-compilation + preConfigure = '' + arch=$(cc -dumpmachine | cut -f1 -d- | sed 's,i[3456789]86,ia32,' ) + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${gnu-efi}/include/efi/$arch" + ''; + + postInstall = '' + rm -rf $out/src + rm -rf $out/lib/debug + ''; + + meta = with stdenv.lib; { + description = "Tools for using the ESRT and UpdateCapsule() to apply firmware updates"; + maintainers = with maintainers; [ ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch b/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch new file mode 100644 index 000000000000..b8588ef2b11a --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupdate/do-not-create-sharedstatedir.patch @@ -0,0 +1,10 @@ +--- a/linux/Makefile ++++ b/linux/Makefile +@@ -131,7 +131,6 @@ + ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so.1,$(DESTDIR)$(libdir)/$(x)) ;\ + ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so,$(DESTDIR)$(libdir)/$(x)) ;\ + ) +- $(INSTALL) -d -m 755 $(DESTDIR)$(sharedstatedir)/fwupdate/ + $(INSTALL) -d -m 755 $(DESTDIR)$(libexecdir)/fwupdate/ + $(INSTALL) -m 755 cleanup $(DESTDIR)$(libexecdir)/fwupdate/cleanup + $(INSTALL) -d -m 755 $(DESTDIR)$(libdatadir)/systemd/system diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix new file mode 100644 index 000000000000..372be2d71f2c --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix @@ -0,0 +1,25 @@ +{ lib, fetchzip }: + +let version = "3.1"; in + +fetchzip { + name = "intel2200BGFirmware-${version}"; + url = "https://src.fedoraproject.org/repo/pkgs/ipw2200-firmware/ipw2200-fw-${version}.tgz/eaba788643c7cc7483dd67ace70f6e99/ipw2200-fw-${version}.tgz"; + sha256 = "0zjyjndyc401pn5x5lgypxdal21n82ymi3vbb2ja1b89yszj432b"; + + 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 lib; { + description = "Firmware for Intel 2200BG cards"; + homepage = http://ipw2200.sourceforge.net/firmware.php; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ sternenseemann ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix new file mode 100644 index 000000000000..b60ce6f1b4af --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "openelec-dvb-firmware-${version}"; + version = "0.0.51"; + + src = fetchurl { + url = "https://github.com/OpenELEC/dvb-firmware/archive/${version}.tar.gz"; + sha256 = "cef3ce537d213e020af794cecf9de207e2882c375ceda39102eb6fa2580bad8d"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + DESTDIR="$out" ./install + find $out \( -name 'README.*' -or -name 'LICEN[SC]E.*' -or -name '*.txt' \) | xargs rm + ''; + + meta = with stdenv.lib; { + description = "DVB firmware from OpenELEC"; + homepage = https://github.com/OpenELEC/dvb-firmware; + license = licenses.unfreeRedistributableFirmware; + platforms = platforms.linux; + priority = 7; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix new file mode 100644 index 000000000000..89b4f70264eb --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, fetchFromGitHub, dpkg }: + +stdenv.mkDerivation rec { + name = "raspberrypi-wireless-firmware-${version}"; + version = "2018-08-20"; + + srcs = [ + (fetchFromGitHub { + name = "bluez-firmware"; + owner = "RPi-Distro"; + repo = "bluez-firmware"; + rev = "ade2bae1aaaebede09abb8fb546f767a0e4c7804"; + sha256 = "07gm76gxp5anv6paryvxcp34a86fkny8kdlzqhzcpfczzglkp6ag"; + }) + (fetchFromGitHub { + name = "firmware-nonfree"; + owner = "RPi-Distro"; + repo = "firmware-nonfree"; + rev = "b518de45ced519e8f7a499f4778100173402ae43"; + sha256 = "1d5026ic9awji6c67irpwsxpxgsc0dhn11d3abkxi2vvra1pir4g"; + }) + ]; + + sourceRoot = "."; + + dontBuild = true; + # Firmware blobs do not need fixing and should not be modified + dontFixup = true; + + installPhase = '' + mkdir -p "$out/lib/firmware/brcm" + + # Wifi firmware + for filename in firmware-nonfree/brcm/brcmfmac434??-sdio.*; do + cp "$filename" "$out/lib/firmware/brcm" + done + + # Bluetooth firmware + cp bluez-firmware/broadcom/*.hcd "$out/lib/firmware/brcm" + ''; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "1s5gb00v42s5izbaw8irs1fwvhh7z9wl07czc0nkw6p91871ivb7"; + + meta = with stdenv.lib; { + description = "Firmware for builtin Wifi/Bluetooth devices in the Raspberry Pi 3 and Zero W"; + homepage = https://github.com/RPi-Distro/firmware-nonfree; + license = licenses.unfreeRedistributableFirmware; + platforms = platforms.linux; + maintainers = with maintainers; [ lopsided98 ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/default.nix new file mode 100644 index 000000000000..8965e5d60d78 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "raspberrypi-firmware-${version}"; + version = "1.20181112"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "firmware"; + rev = version; + sha256 = "0jjxr8k8vdziynj8101ikcc9hmm61r2la51nrx6zv8a7j9a4m5zg"; + }; + + installPhase = '' + mkdir -p $out/share/raspberrypi/boot + cp -R boot/* $out/share/raspberrypi/boot + ''; + + meta = with stdenv.lib; { + description = "Firmware for the Raspberry Pi board"; + homepage = https://github.com/raspberrypi/firmware; + license = licenses.unfreeRedistributableFirmware; # See https://github.com/raspberrypi/firmware/blob/master/boot/LICENCE.broadcom + platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ dezgeg tavyc ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools-dont-install-sysv-init-scripts.patch b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools-dont-install-sysv-init-scripts.patch new file mode 100644 index 000000000000..e12aeeb0cdb8 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools-dont-install-sysv-init-scripts.patch @@ -0,0 +1,20 @@ +diff --git a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +index aed0e83..b325676 100644 +--- a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt ++++ b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +@@ -17,15 +17,6 @@ target_link_libraries(vcfiled + install(TARGETS vcfiled + RUNTIME DESTINATION sbin) + +-configure_file (etc/init.d/vcfiled ${PROJECT_BINARY_DIR}/etc/init.d/vcfiled) +- +-# script to start up vcfiled at start of day +-install(PROGRAMS ${PROJECT_BINARY_DIR}/etc/init.d/vcfiled +- DESTINATION /etc/init.d) +-# install locally to the installation directory too +-install(PROGRAMS ${PROJECT_BINARY_DIR}/etc/init.d/vcfiled +- DESTINATION ${VMCS_INSTALL_PREFIX}/share/install) +- + # test program for vcfiled_check library + add_executable(vcfiled_lock_test vcfiled_lock_test.c) + target_link_libraries(vcfiled_lock_test vcfiled_check) diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix new file mode 100644 index 000000000000..4685f6757179 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig }: + +stdenv.mkDerivation rec { + name = "raspberrypi-tools-${version}"; + version = "2018-10-03"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "userland"; + rev = "de4a7f2e3c391e2d3bc76af31864270e7802d9ac"; + sha256 = "0w96xa98ngdk9m6wv185w8waa7wm2hkn2bhxz52zd477hchzrxlg"; + }; + + patches = [ ./tools-dont-install-sysv-init-scripts.patch ]; + + nativeBuildInputs = [ cmake pkgconfig ]; + + preConfigure = '' + cmakeFlagsArray+=("-DVMCS_INSTALL_PREFIX=$out") + '' + stdenv.lib.optionalString stdenv.isAarch64 '' + cmakeFlagsArray+=("-DARM64=1") + ''; + + meta = with stdenv.lib; { + description = "Userland tools for the Raspberry Pi board"; + homepage = https://github.com/raspberrypi/userland; + license = licenses.bsd3; + platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ dezgeg tavyc ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rt5677/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rt5677/default.nix new file mode 100644 index 000000000000..af0c07d10596 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rt5677/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchgit }: + +stdenv.mkDerivation { + name = "rt5677-firmware"; + + src = fetchgit { + url = "https://github.com/raphael/linux-samus"; + rev = "995de6c2093797905fbcd79f1a3625dd3f50be37"; + sha256 = "0a6lz9wadm47cmva136q6wd0lw03bmymf9ispnzb091a7skwacry"; + }; + + + installPhase = '' + mkdir -p $out/lib/firmware + cp ./firmware/rt5677_elf_vad $out/lib/firmware + ''; + + meta = with stdenv.lib; { + description = "Firmware for Realtek rt5677 device"; + license = licenses.unfreeRedistributableFirmware; + maintainers = [ maintainers.zohl ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix new file mode 100644 index 000000000000..d8d4c37fd886 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub }: +with stdenv.lib; +stdenv.mkDerivation { + name = "rtl8192su-unstable-2016-10-05"; + + src = fetchFromGitHub { + owner = "chunkeey"; + repo = "rtl8192su"; + rev = "c00112c9a14133290fe30bd3b44e45196994cb1c"; + sha256 = "0j3c35paapq1icmxq0mg7pm2xa2m69q7bkfmwgq99d682yr2cb5l"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + for i in rtl8192sfw.bin \ + rtl8192sufw-ap.bin \ + rtl8192sufw-apple.bin \ + rtl8192sufw-windows.bin \ + rtl8712u-linux-firmware-bad.bin \ + rtl8712u-most-recent-v2.6.6-bad.bin \ + rtl8712u-most-recent-v2.6.6-bad.bin \ + rtl8712u-oldest-but-good.bin; + do + install -D -pm644 firmwares/$i $out/lib/firmware/rtlwifi/$i + done + ''; + + meta = with stdenv.lib; { + description = "Firmware for Realtek RTL8188SU/RTL8191SU/RTL8192SU"; + homepage = https://github.com/chunkeey/rtl8192su; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ mic92 ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix new file mode 100644 index 000000000000..eea6f2893f22 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix @@ -0,0 +1,22 @@ +{ stdenv, linuxPackages }: +with stdenv.lib; +stdenv.mkDerivation { + name = "rtl8723bs-firmware-${linuxPackages.rtl8723bs.version}"; + inherit (linuxPackages.rtl8723bs) src; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + mkdir -p "$out/lib/firmware/rtlwifi" + cp rtl8723bs_nic.bin "$out/lib/firmware/rtlwifi" + cp rtl8723bs_wowlan.bin "$out/lib/firmware/rtlwifi" + ''; + + meta = with stdenv.lib; { + description = "Firmware for RealTek 8723bs"; + homepage = https://github.com/hadess/rtl8723bs; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ elitak ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix new file mode 100644 index 000000000000..673ef686e488 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix @@ -0,0 +1,23 @@ +{ stdenv, lib, linuxPackages }: + +with lib; + +stdenv.mkDerivation rec { + name = "rtlwifi_new-firmware-${linuxPackages.rtlwifi_new.version}"; + inherit (linuxPackages.rtlwifi_new) src; + + dontBuild = true; + + installPhase = '' + mkdir -p "$out/lib/firmware" + cp -rf firmware/rtlwifi/ "$out/lib/firmware" + ''; + + meta = { + description = "Firmware for the newest Realtek rtlwifi codes"; + inherit (src.meta) homepage; + license = licenses.unfreeRedistributableFirmware; + platforms = with platforms; linux; + maintainers = with maintainers; [ tvorog ]; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/zd1211/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/zd1211/default.nix new file mode 100644 index 000000000000..2c9db47539f7 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/zd1211/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchzip }: + +let + pname = "zd1211-firmware"; + version = "1.5"; +in fetchzip rec { + name = "${pname}-${version}"; + url = "mirror://sourceforge/zd1211/${name}.tar.bz2"; + + postFetch = '' + tar -xjvf $downloadedFile + mkdir -p $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/; + license = "GPL"; + platforms = stdenv.lib.platforms.linux; + }; +} |