diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/firmware')
28 files changed, 1361 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..79de65fcb981 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix @@ -0,0 +1,21 @@ +{ lib, 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 = lib.licenses.free; + platforms = 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..42444d784d52 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchurl, b43FirmwareCutter }: + +let version = "5.100.138"; in + +stdenv.mkDerivation { + pname = "b43-firmware"; + inherit 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 = 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..c0226065ea26 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchurl, b43FirmwareCutter }: + +stdenv.mkDerivation rec { + pname = "b43-firmware"; + 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 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..5118d0a0b9bf --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix @@ -0,0 +1,46 @@ +{ lib, 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 { + pname = "broadcom-bt-firmware"; + 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 ${pname}-${version} + cabextract $src --directory ${pname}-${version} + ''; + + 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 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..a28189a9e474 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchurl, makeWrapper, perl, perlPackages, bluez }: + +stdenv.mkDerivation rec { + pname = "bt-fw-converter"; + 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 ${pname}-${version} + cp $src ${pname}-${version}/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 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..88a32f174d54 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix @@ -0,0 +1,65 @@ +{ lib, stdenv, fetchurl, cpio, xz, pkgs }: + +let + + version = "1.43_5"; + + + # 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://updates.cdn-apple.com/2019/cert/041-88431-20191011-e7ee7d98-2878-4cd9-bc0a-d98b3a1e24b1/OSXUpd10.11.5.dmg"; + dmgRange = "204909802-207733123"; # 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 { + + pname = "facetimehd-firmware"; + inherit version; + src = fetchurl { + url = dmgUrl; + sha256 = "0s8crlh8rvpanzk1w4z3hich0a3mw0m5xhpcg07bxy02calhpdk1"; + 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 lib; { + description = "facetimehd firmware"; + homepage = "https://support.apple.com/kb/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..4293f53e47d1 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix @@ -0,0 +1,32 @@ +{ stdenvNoCC, fetchgit, lib }: + +stdenvNoCC.mkDerivation rec { + pname = "firmware-linux-nonfree"; + version = "2021-07-16"; + + src = fetchgit { + url = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"; + rev = "refs/tags/" + lib.replaceStrings ["-"] [""] version; + sha256 = "185pnaqf2qmhbcdvvldmbar09zgaxhh3h8x9bxn6079bcdpaskn6"; + }; + + installFlags = [ "DESTDIR=$(out)" ]; + + # Firmware blobs do not need fixing and should not be modified + dontFixup = true; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "0g470hj2ylpviijfpjqzsndn2k8kkscj27wqwk51xlk8cr3mrahb"; + + meta = with lib; { + description = "Binary firmware collection packaged by kernel.org"; + homepage = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"; + 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/firmware-manager/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/firmware-manager/default.nix new file mode 100644 index 000000000000..ee36ab574426 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/firmware-manager/default.nix @@ -0,0 +1,38 @@ +{ rustPlatform, lib, fetchFromGitHub, xz, pkg-config, openssl, dbus, glib, udev, cairo, pango, atk, gdk-pixbuf, gtk3, wrapGAppsHook }: +rustPlatform.buildRustPackage rec { + pname = "firmware-manager"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "pop-os"; + repo = pname; + rev = version; + sha256 = "sha256-aKatdjHa/k7j48upkR1O6PFxCUfJYE3KhhzZ9Ohe0Jc="; + }; + + nativeBuildInputs = [ pkg-config wrapGAppsHook ]; + + buildInputs = [ xz openssl dbus glib udev cairo pango atk gdk-pixbuf gtk3 ]; + + depsExtraArgs.postPatch = "make prefix='$(out)' toml-gen"; + + postPatch = '' + sed -i 's|etc|$(prefix)/etc|' Makefile + ''; + + buildPhase = "make prefix='$(out)'"; + + installPhase = "make prefix='$(out)' install"; + + cargoSha256 = "sha256-BUo77ERHvuc8IkDdU3Z/gZZicNHT26IbAgEBnVM3O4U="; + + doCheck = false; + + meta = { + description = "Graphical frontend for firmware management"; + homepage = "https://github.com/pop-os/firmware-manager"; + license = lib.licenses.gpl3; + maintainers = [ lib.maintainers.shlevy ]; + platforms = lib.platforms.linux; + }; +} 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..cd42f2f44e20 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch @@ -0,0 +1,161 @@ +diff --git a/data/meson.build b/data/meson.build +index 50154569..f8058a8e 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -17,7 +17,7 @@ endif + + if build_standalone + install_data(['daemon.conf'], +- install_dir : join_paths(sysconfdir, 'fwupd') ++ install_dir : join_paths(sysconfdir_install, 'fwupd') + ) + endif + +diff --git a/data/pki/meson.build b/data/pki/meson.build +index 94bb0b6f..1ea6a9ac 100644 +--- a/data/pki/meson.build ++++ b/data/pki/meson.build +@@ -3,24 +3,23 @@ install_data([ + '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') + ) + + 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') + ) +- +diff --git a/data/remotes.d/meson.build b/data/remotes.d/meson.build +index 826a3c1d..b78db663 100644 +--- a/data/remotes.d/meson.build ++++ b/data/remotes.d/meson.build +@@ -3,7 +3,7 @@ if build_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 : 'vendor.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-directory.conf', + output : 'vendor-directory.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 b075ca89..8d504d3c 100644 +--- a/meson.build ++++ b/meson.build +@@ -194,6 +194,12 @@ endif + 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 ++ + diffcmd = find_program('diff') + gio = dependency('gio-2.0', version : '>= 2.45.8') + giounix = dependency('gio-unix-2.0', version : '>= 2.45.8', required: false) +diff --git a/meson_options.txt b/meson_options.txt +index bc76c0ab..8a67d012 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,3 +1,4 @@ ++option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') + option('build', type : 'combo', choices : ['all', 'standalone', 'library'], value : 'all', description : 'build type') + option('agent', type : 'boolean', value : true, description : 'enable the fwupd agent') + option('consolekit', type : 'boolean', value : true, description : 'enable ConsoleKit support') +diff --git a/plugins/dell-esrt/meson.build b/plugins/dell-esrt/meson.build +index ed4eee70..76dbdb1d 100644 +--- a/plugins/dell-esrt/meson.build ++++ b/plugins/dell-esrt/meson.build +@@ -37,5 +37,5 @@ configure_file( + output : 'dell-esrt.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/plugins/redfish/meson.build b/plugins/redfish/meson.build +index 205d1394..3223f404 100644 +--- a/plugins/redfish/meson.build ++++ b/plugins/redfish/meson.build +@@ -27,7 +27,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/thunderbolt/meson.build b/plugins/thunderbolt/meson.build +index 6b2368fb..2bd06fed 100644 +--- a/plugins/thunderbolt/meson.build ++++ b/plugins/thunderbolt/meson.build +@@ -31,7 +31,7 @@ fu_plugin_thunderbolt = shared_module('fu_plugin_thunderbolt', + ) + + install_data(['thunderbolt.conf'], +- install_dir: join_paths(sysconfdir, 'fwupd') ++ install_dir: join_paths(sysconfdir_install, 'fwupd') + ) + # we use functions from 2.52 in the tests + if get_option('tests') and umockdev.found() and gio.version().version_compare('>= 2.52') +diff --git a/plugins/uefi-capsule/meson.build b/plugins/uefi-capsule/meson.build +index 0b793a07..ebd3e5ea 100644 +--- a/plugins/uefi-capsule/meson.build ++++ b/plugins/uefi-capsule/meson.build +@@ -97,7 +97,7 @@ if get_option('man') + endif + + install_data(['uefi_capsule.conf'], +- install_dir: join_paths(sysconfdir, 'fwupd') ++ install_dir: join_paths(sysconfdir_install, 'fwupd') + ) + + if get_option('tests') +diff --git a/plugins/upower/meson.build b/plugins/upower/meson.build +index 290a3eb6..9ab2f452 100644 +--- a/plugins/upower/meson.build ++++ b/plugins/upower/meson.build +@@ -23,5 +23,5 @@ shared_module('fu_plugin_upower', + ) + + install_data(['upower.conf'], +- install_dir: join_paths(sysconfdir, 'fwupd') ++ install_dir: join_paths(sysconfdir_install, 'fwupd') + ) 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..24e23f2b7e97 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/default.nix @@ -0,0 +1,355 @@ +# Updating? Keep $out/etc synchronized with passthru keys + +{ lib, stdenv +, fetchurl +, fetchFromGitHub +, substituteAll +, gtk-doc +, pkg-config +, gobject-introspection +, gettext +, libgudev +, polkit +, libxmlb +, gusb +, sqlite +, libarchive +, curl +, help2man +, libjcat +, libxslt +, elfutils +, libsmbios +, efivar +, gnu-efi +, valgrind +, meson +, libuuid +, colord +, docbook_xml_dtd_43 +, docbook-xsl-nons +, ninja +, gcab +, gnutls +, python3 +, wrapGAppsHook +, json-glib +, bash-completion +, shared-mime-info +, umockdev +, vala +, makeFontsConf +, freefont_ttf +, cairo +, freetype +, fontconfig +, pango +, tpm2-tss +, bubblewrap +, efibootmgr +, flashrom +, tpm2-tools +, nixosTests +, runCommand +}: + +let + python = python3.withPackages (p: with p; [ + pygobject3 + pycairo + pillow + setuptools + ]); + + installedTestsPython = python3.withPackages (p: with p; [ + pygobject3 + requests + ]); + + isx86 = stdenv.isx86_64 || stdenv.isi686; + + # Dell isn't supported on Aarch64 + haveDell = isx86; + + # only redfish for x86_64 + haveRedfish = stdenv.isx86_64; + + # only use msr if x86 (requires cpuid) + haveMSR = isx86; + + # # Currently broken on Aarch64 + # haveFlashrom = isx86; + # Experimental + haveFlashrom = false; + + runPythonCommand = name: buildCommandPython: runCommand name { + nativeBuildInputs = [ python3 ]; + inherit buildCommandPython; + } '' + exec python3 -c "$buildCommandPython" + ''; + + self = stdenv.mkDerivation rec { + pname = "fwupd"; + version = "1.5.7"; + + # libfwupd goes to lib + # daemon, plug-ins and libfwupdplugin go to out + # CLI programs go to out + outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ]; + + src = fetchurl { + url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz"; + sha256 = "16isrrv6zhdgccbfnz7km5g1cnvfnip7aiidkfhf5dlnrnyb2sxh"; + }; + + patches = [ + # Do not try to create useless paths in /var. + ./fix-paths.patch + + # Allow installing + ./add-option-for-installation-sysconfdir.patch + + # Install plug-ins and libfwupdplugin to out, + # they are not really part of the library. + ./install-fwupdplugin-to-out.patch + + # 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; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + gtk-doc + pkg-config + gobject-introspection + gettext + shared-mime-info + valgrind + gcab + gnutls + docbook_xml_dtd_43 + docbook-xsl-nons + help2man + libxslt + python + wrapGAppsHook + vala + ]; + + buildInputs = [ + polkit + libxmlb + gusb + sqlite + libarchive + curl + elfutils + gnu-efi + libgudev + colord + libjcat + libuuid + json-glib + umockdev + bash-completion + cairo + freetype + fontconfig + pango + tpm2-tss + efivar + ] ++ lib.optionals haveDell [ + libsmbios + ]; + + mesonFlags = [ + "-Dgtkdoc=true" + "-Dplugin_dummy=true" + # We are building the official releases. + "-Dsupported_build=true" + # Would dlopen libsoup to preserve compatibility with clients linking against older fwupd. + # https://github.com/fwupd/fwupd/commit/173d389fa59d8db152a5b9da7cc1171586639c97 + "-Dsoup_session_compat=false" + "-Dudevdir=lib/udev" + "-Dsystemd_root_prefix=${placeholder "out"}" + "-Dinstalled_test_prefix=${placeholder "installedTests"}" + "-Defi-libdir=${gnu-efi}/lib" + "-Defi-ldsdir=${gnu-efi}/lib" + "-Defi-includedir=${gnu-efi}/include/efi" + "-Defi_sbat_distro_id=nixos" + "-Defi_sbat_distro_summary=NixOS" + "-Defi_sbat_distro_pkgname=fwupd" + "-Defi_sbat_distro_version=${version}" + "-Defi_sbat_distro_url=https://search.nixos.org/packages?channel=unstable&show=fwupd&from=0&size=50&sort=relevance&query=fwupd" + "--localstatedir=/var" + "--sysconfdir=/etc" + "-Dsysconfdir_install=${placeholder "out"}/etc" + + # We do not want to place the daemon into lib (cyclic reference) + "--libexecdir=${placeholder "out"}/libexec" + # Our builder only adds $lib/lib to rpath but some things link + # against libfwupdplugin which is in $out/lib. + "-Dc_link_args=-Wl,-rpath,${placeholder "out"}/lib" + ] ++ lib.optionals (!haveDell) [ + "-Dplugin_dell=false" + "-Dplugin_synaptics=false" + ] ++ lib.optionals (!haveRedfish) [ + "-Dplugin_redfish=false" + ] ++ lib.optionals haveFlashrom [ + "-Dplugin_flashrom=true" + ] ++ lib.optionals (!haveMSR) [ + "-Dplugin_msr=false" + ]; + + # TODO: wrapGAppsHook wraps efi capsule even though it is not ELF + dontWrapGApps = true; + + # /etc/os-release not available in sandbox + # doCheck = true; + + # Environment variables + + # Fontconfig error: Cannot load default config file + FONTCONFIG_FILE = + let + fontsConf = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + in fontsConf; + + # 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"; + + # Phase hooks + + postPatch = '' + patchShebangs \ + contrib/get-version.py \ + contrib/generate-version-script.py \ + meson_post_install.sh \ + plugins/uefi-capsule/efi/generate_sbat.py \ + plugins/uefi-capsule/efi/generate_binary.py \ + po/make-images \ + po/make-images.sh \ + po/test-deps + ''; + + preCheck = '' + addToSearchPath XDG_DATA_DIRS "${shared-mime-info}/share" + ''; + + postInstall = + let + testFw = fetchFromGitHub { + owner = "fwupd"; + repo = "fwupd-test-firmware"; + rev = "c13bfb26cae5f4f115dd4e08f9f00b3cb9acc25e"; + sha256 = "US81i7mtLEe85KdWz5r+fQTk61IhqjVkzykBaBPuKL4="; + }; + in '' + # These files have weird licenses so they are shipped separately. + cp --recursive --dereference "${testFw}/installed-tests/tests" "$installedTests/libexec/installed-tests/fwupd" + ''; + + preFixup = let + binPath = [ + efibootmgr + bubblewrap + tpm2-tools + ] ++ 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 + --prefix PATH : "${lib.makeBinPath binPath}" + ) + ''; + + # Since we had to disable wrapGAppsHook, 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" + wrapGApp "$file" + fi + done + ''; + + separateDebugInfo = true; + + passthru = { + filesInstalledToEtc = [ + "fwupd/daemon.conf" + "fwupd/remotes.d/lvfs-testing.conf" + "fwupd/remotes.d/lvfs.conf" + "fwupd/remotes.d/vendor.conf" + "fwupd/remotes.d/vendor-directory.conf" + "fwupd/thunderbolt.conf" + "fwupd/upower.conf" + "fwupd/uefi_capsule.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" + ] ++ lib.optionals haveDell [ + "fwupd/remotes.d/dell-esrt.conf" + ] ++ lib.optionals haveRedfish [ + "fwupd/redfish.conf" + ]; + + # DisabledPlugins key in fwupd/daemon.conf + defaultDisabledPlugins = [ + "test" + "test_ble" + "invalid" + ]; + + tests = let + listToPy = list: "[${lib.concatMapStringsSep ", " (f: "'${f}'") list}]"; + in { + installedTests = nixosTests.installed-tests.fwupd; + + passthruMatches = runPythonCommand "fwupd-test-passthru-matches" '' + import itertools + import configparser + import os + import pathlib + + etc = '${self}/etc' + package_etc = set(itertools.chain.from_iterable([[os.path.relpath(os.path.join(prefix, file), etc) for file in files] for (prefix, dirs, files) in os.walk(etc)])) + passthru_etc = set(${listToPy passthru.filesInstalledToEtc}) + assert len(package_etc - passthru_etc) == 0, f'fwupd package contains the following paths in /etc that are not listed in passthru.filesInstalledToEtc: {package_etc - passthru_etc}' + assert len(passthru_etc - package_etc) == 0, f'fwupd package lists the following paths in passthru.filesInstalledToEtc that are not contained in /etc: {passthru_etc - package_etc}' + + config = configparser.RawConfigParser() + config.read('${self}/etc/fwupd/daemon.conf') + package_disabled_plugins = config.get('fwupd', 'DisabledPlugins').rstrip(';').split(';') + passthru_disabled_plugins = ${listToPy passthru.defaultDisabledPlugins} + assert package_disabled_plugins == passthru_disabled_plugins, f'Default disabled plug-ins in the package {package_disabled_plugins} do not match those listed in passthru.defaultDisabledPlugins {passthru_disabled_plugins}' + + pathlib.Path(os.getenv('out')).touch() + ''; + }; + }; + + meta = with lib; { + homepage = "https://fwupd.org/"; + maintainers = with maintainers; [ jtojnar ]; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + }; + }; + +in self 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..474b250097d0 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/fix-paths.patch @@ -0,0 +1,8 @@ +diff --git a/data/builder/meson.build b/data/builder/meson.build +index c7a430c0..e69de29b 100644 +--- 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') +-) diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch new file mode 100644 index 000000000000..347b6862146d --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch @@ -0,0 +1,37 @@ +diff --git a/libfwupdplugin/meson.build b/libfwupdplugin/meson.build +index 0abcd45c..51cbc912 100644 +--- a/libfwupdplugin/meson.build ++++ b/libfwupdplugin/meson.build +@@ -114,7 +114,8 @@ + ], + link_args : vflag, + link_depends : fwupdplugin_mapfile, +- install : true ++ install : true, ++ install_dir : bindir / '..' / 'lib', + ) + + fwupdplugin_pkgg = import('pkgconfig') +@@ -167,7 +168,8 @@ + 'GUsb-1.0', + fwupd_gir[0], + ], +- install : true ++ install : true, ++ install_dir_typelib : bindir / '..' / 'lib' / 'girepository-1.0', + ) + gnome.generate_vapi('fwupdplugin', + sources : fwupd_gir[0], +diff --git a/meson.build b/meson.build +index b1a523d2..00125997 100644 +--- a/meson.build ++++ b/meson.build +@@ -389,7 +389,7 @@ + if host_machine.system() == 'windows' + plugin_dir = 'fwupd-plugins-3' + else +- plugin_dir = join_paths(libdir, 'fwupd-plugins-3') ++ plugin_dir = join_paths(bindir, '..', 'lib', 'fwupd-plugins-3') + endif + conf.set_quoted('FWUPD_PLUGINDIR', plugin_dir) + endif diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch new file mode 100644 index 000000000000..d8f1a533b824 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch @@ -0,0 +1,48 @@ +diff --git a/data/device-tests/hardware.py b/data/device-tests/hardware.py +index 7f1e1907..10fee1b8 100755 +--- a/data/device-tests/hardware.py ++++ b/data/device-tests/hardware.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!@installedTestsPython@/bin/python3 + # pylint: disable=wrong-import-position,too-many-locals,unused-argument,wrong-import-order + # + # Copyright (C) 2017 Richard Hughes <richard@hughsie.com> +diff --git a/data/installed-tests/meson.build b/data/installed-tests/meson.build +index adadbcdd..1b51bb9c 100644 +--- a/data/installed-tests/meson.build ++++ b/data/installed-tests/meson.build +@@ -65,5 +65,5 @@ configure_file( + output : 'fwupd-tests.conf', + configuration : con2, + install: true, +- install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'), ++ install_dir: join_paths(get_option('installed_test_prefix'), 'etc', 'fwupd', 'remotes.d'), + ) +diff --git a/meson.build b/meson.build +index 772b7bbe..f59302cd 100644 +--- a/meson.build ++++ b/meson.build +@@ -177,8 +177,8 @@ else + datadir = join_paths(prefix, get_option('datadir')) + sysconfdir = join_paths(prefix, get_option('sysconfdir')) + localstatedir = join_paths(prefix, get_option('localstatedir')) +- installed_test_bindir = join_paths(libexecdir, 'installed-tests', meson.project_name()) +- installed_test_datadir = join_paths(datadir, 'installed-tests', meson.project_name()) ++ installed_test_bindir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', meson.project_name()) ++ installed_test_datadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', meson.project_name()) + endif + mandir = join_paths(prefix, get_option('mandir')) + localedir = join_paths(prefix, get_option('localedir')) +diff --git a/meson_options.txt b/meson_options.txt +index 0a0e2853..5f68d78b 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -25,6 +26,7 @@ option('plugin_coreboot', type : 'boolean', value : true, description : 'enable + option('systemd', type : 'boolean', value : true, description : 'enable systemd support') + option('systemd_root_prefix', type: 'string', value: '', description: 'Directory to base systemd’s installation directories on') + option('elogind', type : 'boolean', value : false, description : 'enable elogind support') ++option('installed_test_prefix', type: 'string', description: 'Prefix for installed tests') + option('tests', type : 'boolean', value : true, description : 'enable tests') + option('tpm', type : 'boolean', value : true, description : 'enable TPM support') + option('udevdir', type: 'string', value: '', description: 'Directory for udev rules') 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..c9b1d7c5f0a5 --- /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..3181072ea182 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "openelec-dvb-firmware"; + 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 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..e6a03ef7df50 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + pname = "raspberrypi-wireless-firmware"; + version = "2021-01-28"; + + srcs = [ + (fetchFromGitHub { + name = "bluez-firmware"; + owner = "RPi-Distro"; + repo = "bluez-firmware"; + rev = "e7fd166981ab4bb9a36c2d1500205a078a35714d"; + sha256 = "1dkg8mzn7n4afi50ibrda2s33nw2qj52jjjdv9w560q601gms47b"; + }) + (fetchFromGitHub { + name = "firmware-nonfree"; + owner = "RPi-Distro"; + repo = "firmware-nonfree"; + rev = "83938f78ca2d5a0ffe0c223bb96d72ccc7b71ca5"; + sha256 = "1l4zz86y2hjyvdwjy75abyjwh3wqknd71y3vh1iw5nd0hws8ranp"; + }) + ]; + + 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 = "0a54gyrq6jfxxvimaa4yjfiyfwf7wv58v0a32l74yrzyarr3ldby"; + + meta = with 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/armstubs.nix b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix new file mode 100644 index 000000000000..52fa42665773 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix @@ -0,0 +1,51 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config }: + +let + inherit (lib) optionals; +in +stdenv.mkDerivation { + pname = "raspberrypi-armstubs"; + version = "2020-10-08"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "tools"; + rev = "fc0e73c13865450e95edd046200e42a6e52d8256"; + sha256 = "1g6ikpjcrm5x0rk5aiwjdd8grf997qkvgamcrdxy6k9ln746h25s"; + }; + + NIX_CFLAGS_COMPILE = [ + "-march=armv8-a+crc" + ]; + + preConfigure = '' + cd armstubs + ''; + + makeFlags = [ + "CC8=${stdenv.cc.targetPrefix}cc" + "LD8=${stdenv.cc.targetPrefix}ld" + "OBJCOPY8=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP8=${stdenv.cc.targetPrefix}objdump" + "CC7=${stdenv.cc.targetPrefix}cc" + "LD7=${stdenv.cc.targetPrefix}ld" + "OBJCOPY7=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP7=${stdenv.cc.targetPrefix}objdump" + ] + ++ optionals (stdenv.isAarch64) [ "armstub8.bin" "armstub8-gic.bin" ] + ++ optionals (stdenv.isAarch32) [ "armstub7.bin" "armstub8-32.bin" "armstub8-32-gic.bin" ] + ; + + installPhase = '' + mkdir -vp $out/ + cp -v *.bin $out/ + ''; + + meta = with lib; { + description = "Firmware related ARM stubs for the Raspberry Pi"; + homepage = https://github.com/raspberrypi/tools; + license = licenses.bsd3; + platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ samueldr ]; + }; +} 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..6a826f639660 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -0,0 +1,30 @@ +{ lib, stdenvNoCC, fetchFromGitHub }: + +stdenvNoCC.mkDerivation rec { + # NOTE: this should be updated with linux_rpi + pname = "raspberrypi-firmware"; + version = "1.20210303"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "firmware"; + rev = version; + sha256 = "0pgiw93hq4gfph5dnwbi8w59g0f7yhmagwzam971k529mh5yl86m"; + }; + + installPhase = '' + mkdir -p $out/share/raspberrypi/boot + cp -R boot/* $out/share/raspberrypi/boot + ''; + + dontConfigure = true; + dontBuild = true; + dontFixup = true; + + meta = with 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 + maintainers = with maintainers; [ dezgeg ]; + }; +} 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..f5d84179fd29 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rt5677/default.nix @@ -0,0 +1,24 @@ +{ lib, 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 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..34c2b683ea40 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchFromGitHub }: +with 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 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..36580d4b1b91 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix @@ -0,0 +1,22 @@ +{ lib, stdenv, linuxPackages }: +with 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 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/rtl8761b-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix new file mode 100644 index 000000000000..f2dd36a0e065 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + name = "rtl8761b-firmware"; + + src = fetchFromGitHub { + owner = "Realtek-OpenSource"; + repo = "android_hardware_realtek"; + rev = "rtk1395"; + sha256 = "sha256-vd9sZP7PGY+cmnqVty3sZibg01w8+UNinv8X85B+dzc="; + }; + + installPhase = '' + install -D -pm644 \ + bt/rtkbt/Firmware/BT/rtl8761b_fw \ + $out/lib/firmware/rtl_bt/rtl8761b_fw.bin + + install -D -pm644 \ + bt/rtkbt/Firmware/BT/rtl8761b_config \ + $out/lib/firmware/rtl_bt/rtl8761b_config.bin + ''; + + meta = with lib; { + description = "Firmware for Realtek RTL8761b"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ edibopp ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix new file mode 100644 index 000000000000..b4e07624b6ef --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix @@ -0,0 +1,25 @@ +{ stdenvNoCC, lib, linuxPackages }: + +stdenvNoCC.mkDerivation { + pname = "rtw88-firmware"; + inherit (linuxPackages.rtw88) version src; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/firmware/rtw88 + cp *.bin $out/lib/firmware/rtw88 + + runHook postInstall + ''; + + meta = with lib; { + description = "Firmware for the newest Realtek rtlwifi codes"; + homepage = "https://github.com/lwfinger/rtw88"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ tvorog ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix new file mode 100644 index 000000000000..8e71770df9ce --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix @@ -0,0 +1,25 @@ +{ stdenvNoCC, lib, linuxPackages }: + +stdenvNoCC.mkDerivation { + pname = "rtw89-firmware"; + inherit (linuxPackages.rtw89) version src; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/firmware/rtw89 + cp *.bin $out/lib/firmware/rtw89 + + runHook postInstall + ''; + + meta = with lib; { + description = "Driver for Realtek 8852AE, an 802.11ax device"; + homepage = "https://github.com/lwfinger/rtw89"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ tvorog ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/sof-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/sof-firmware/default.nix new file mode 100644 index 000000000000..5ee39c5bf331 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/sof-firmware/default.nix @@ -0,0 +1,30 @@ +{ lib, stdenv, fetchFromGitHub }: + +with lib; +stdenv.mkDerivation rec { + pname = "sof-firmware"; + version = "1.7"; + + src = fetchFromGitHub { + owner = "thesofproject"; + repo = "sof-bin"; + rev = "v${version}"; + sha256 = "sha256-Z0Z4HLsIIuW8E1kFNhAECmzj1HkJVfbEw13B8V7PZLk="; + }; + + dontFixup = true; # binaries must not be stripped or patchelfed + + installPhase = '' + mkdir -p $out/lib/firmware/intel/ + cp -a sof-v${version} $out/lib/firmware/intel/sof + cp -a sof-tplg-v${version} $out/lib/firmware/intel/sof-tplg + ''; + + meta = with lib; { + description = "Sound Open Firmware"; + homepage = "https://www.sofproject.org/"; + license = with licenses; [ bsd3 isc ]; + maintainers = with maintainers; [ lblasc evenbrenden hmenke ]; + platforms = with platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/os-specific/linux/firmware/system76-firmware/default.nix b/nixpkgs/pkgs/os-specific/linux/firmware/system76-firmware/default.nix new file mode 100644 index 000000000000..ca750d89cc5b --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/system76-firmware/default.nix @@ -0,0 +1,39 @@ +{ rustPlatform, lib, fetchFromGitHub, xz, pkg-config, openssl, dbus, efibootmgr, makeWrapper }: +rustPlatform.buildRustPackage rec { + pname = "system76-firmware"; + # Check Makefile when updating, make sure postInstall matches make install + version = "1.0.24"; + + src = fetchFromGitHub { + owner = "pop-os"; + repo = pname; + rev = version; + sha256 = "sha256-Poe18HKEQusvN3WF4ZAV1WCvU8/3HKpHEqDsfDO62V0="; + }; + + nativeBuildInputs = [ pkg-config makeWrapper ]; + + buildInputs = [ xz openssl dbus ]; + + cargoBuildFlags = [ "--workspace" ]; + + cargoSha256 = "sha256-gGw3zpxLxQZ3rglpDERO0fSxBOez1Q10Fljis6nyB/4="; + + # Purposefully don't install systemd unit file, that's for NixOS + postInstall = '' + install -D -m -0644 data/system76-firmware-daemon.conf $out/etc/dbus-1/system.d/system76-firmware-daemon.conf + + for bin in $out/bin/system76-firmware-* + do + wrapProgram $bin --prefix PATH : "${efibootmgr}/bin" + done + ''; + + meta = with lib; { + description = "Tools for managing firmware updates for system76 devices"; + homepage = "https://github.com/pop-os/system76-firmware"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ shlevy ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} 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..15e53557126d --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/firmware/zd1211/default.nix @@ -0,0 +1,24 @@ +{ lib, 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 = lib.platforms.linux; + }; +} |