diff options
Diffstat (limited to 'pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix')
-rw-r--r-- | pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix new file mode 100644 index 000000000000..0918279cc9a9 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "raspberrypi-wireless-firmware-${version}"; + version = "2018-05-30"; + + srcs = [ + (fetchurl { + url = "https://archive.raspberrypi.org/debian/pool/main/b/bluez-firmware/bluez-firmware_1.2-3+rpt5.debian.tar.xz"; + sha256 = "06zpyrz6frkgjy26hr3998klnhjdqxwashgjgvj9rgbcqy70nkxg"; + }) + (fetchurl { + url = "https://archive.raspberrypi.org/debian/pool/main/f/firmware-nonfree/firmware-brcm80211_20161130-3+rpt3_all.deb"; + sha256 = "10l74ac28baprnsiylf2vy4pkxgb3crixid90ngs6si9smm7rn6z"; + }) + ]; + + sourceRoot = "."; + dontBuild = true; + # Firmware blobs do not need fixing and should not be modified + dontFixup = true; + + # Unpack the debian package + unpackCmd = '' + if ! [[ "$curSrc" =~ \.deb$ ]]; then return 1; fi + ar -xf "$curSrc" + tar -xf data.tar.xz + ''; + + installPhase = '' + mkdir -p "$out/lib/firmware/brcm" + + # Wifi firmware + for filename in lib/firmware/brcm/brcmfmac434??-sdio.*; do + cp "$filename" "$out/lib/firmware/brcm" + done + + # Bluetooth firmware + cp broadcom/*.hcd "$out/lib/firmware/brcm" + ''; + + meta = with stdenv.lib; { + description = "Firmware for builtin Wifi/Bluetooth devices in the Raspberry Pi 3 and Zero W"; + homepage = https://archive.raspberrypi.org/debian/pool/main/f/firmware-nonfree/; + license = licenses.unfreeRedistributableFirmware; + platforms = platforms.linux; + maintainers = with maintainers; [ lopsided98 ]; + }; +} |