mirror of
https://github.com/nix-community/raspberry-pi-nix.git
synced 2025-11-08 19:46:03 +01:00
organize kernels and firmware
This commit is contained in:
parent
28498601bb
commit
9cac87a79c
8 changed files with 212 additions and 127 deletions
|
|
@ -1,36 +1,26 @@
|
|||
final: prev:
|
||||
let
|
||||
rpi-kernel = { kernel, version, fw, extraConfig ? null }:
|
||||
rpi-kernel = { kernel, version, fw, wireless-fw, argsOverride ? null }:
|
||||
let
|
||||
new-kernel = prev.linux_rpi4.override {
|
||||
argsOverride = {
|
||||
src = kernel;
|
||||
inherit version;
|
||||
modDirVersion = version;
|
||||
} // (if builtins.isNull extraConfig then
|
||||
{ }
|
||||
else {
|
||||
inherit extraConfig;
|
||||
});
|
||||
} // (if builtins.isNull argsOverride then { } else argsOverride);
|
||||
};
|
||||
new-fw = prev.raspberrypifw.overrideAttrs (oldfw: { src = fw; });
|
||||
new-wireless-fw = final.callPackage wireless-fw { };
|
||||
version-slug = builtins.replaceStrings [ "." ] [ "_" ] version;
|
||||
in {
|
||||
"linux_rpi-${version-slug}" = new-kernel;
|
||||
"raspberrypifw-${version-slug}" = new-fw;
|
||||
"v${version-slug}" = {
|
||||
kernel = new-kernel;
|
||||
firmware = new-fw;
|
||||
wireless-firmware = new-wireless-fw;
|
||||
};
|
||||
};
|
||||
rpi-kernels = builtins.foldl' (b: a: b // rpi-kernel a) { };
|
||||
in {
|
||||
# newer version of libcamera
|
||||
# libcamera = prev.libcamera.overrideAttrs (old: {
|
||||
# src = prev.fetchgit {
|
||||
# url = "https://git.libcamera.org/libcamera/libcamera.git";
|
||||
# rev = "44d59841e1ce59042b8069b8078bc9f7b1bfa73b";
|
||||
# sha256 = "1nzkvy2y772ak9gax456ws2fmjc9ncams0m1w27h1rzpxn5yphqr";
|
||||
# };
|
||||
# mesonFlags = [ "-Dv4l2=true" "-Dqcam=disabled" "-Dlc-compliance=disabled" ];
|
||||
# patches = (old.patches or [ ]) ++ [ ./libcamera.patch ];
|
||||
# });
|
||||
|
||||
libcamera-apps = final.callPackage ./libcamera-apps.nix { };
|
||||
|
||||
|
|
@ -46,49 +36,29 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
raspberrypiWirelessFirmware = prev.raspberrypiWirelessFirmware.overrideAttrs
|
||||
(old: {
|
||||
version = "2023-01-19";
|
||||
srcs = [
|
||||
(prev.fetchFromGitHub {
|
||||
name = "bluez-firmware";
|
||||
owner = "RPi-Distro";
|
||||
repo = "bluez-firmware";
|
||||
rev = "9556b08ace2a1735127894642cc8ea6529c04c90";
|
||||
sha256 = "gKGK0XzNrws5REkKg/JP6SZx3KsJduu53SfH3Dichkc=";
|
||||
})
|
||||
(prev.fetchFromGitHub {
|
||||
name = "firmware-nonfree";
|
||||
owner = "RPi-Distro";
|
||||
repo = "firmware-nonfree";
|
||||
rev = "8e349de20c8cb5d895b3568777ec53cbb333398f";
|
||||
sha256 = "45/FnaaZTEG6jLmbaXohpNpS6BEZu3DBDHqquq8ukXc=";
|
||||
})
|
||||
];
|
||||
});
|
||||
# raspberrypiWirelessFirmware = prev.raspberrypiWirelessFirmware.overrideAttrs
|
||||
# (old: {
|
||||
# version = "2023-01-19";
|
||||
# srcs = [
|
||||
# (prev.fetchFromGitHub {
|
||||
# name = "bluez-firmware";
|
||||
# owner = "RPi-Distro";
|
||||
# repo = "bluez-firmware";
|
||||
# rev = "9556b08ace2a1735127894642cc8ea6529c04c90";
|
||||
# sha256 = "gKGK0XzNrws5REkKg/JP6SZx3KsJduu53SfH3Dichkc=";
|
||||
# })
|
||||
# (prev.fetchFromGitHub {
|
||||
# name = "firmware-nonfree";
|
||||
# owner = "RPi-Distro";
|
||||
# repo = "firmware-nonfree";
|
||||
# rev = "8e349de20c8cb5d895b3568777ec53cbb333398f";
|
||||
# sha256 = "45/FnaaZTEG6jLmbaXohpNpS6BEZu3DBDHqquq8ukXc=";
|
||||
# })
|
||||
# ];
|
||||
# });
|
||||
|
||||
} // (rpi-kernels [
|
||||
{
|
||||
version = "5.10.110";
|
||||
kernel = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "linux";
|
||||
rev = "8e1110a580887f4b82303b9354c25d7e2ff5860e";
|
||||
sha256 = "G0XLIpiuszbHKetBQPSBxnyPggFDxUJ4B8F5poS9Tfg=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
extraConfig = ''
|
||||
DRM_AST n
|
||||
DRM_AMDGPU n
|
||||
DRM_TIDSS n
|
||||
'';
|
||||
fw = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "firmware";
|
||||
rev = "e1e3dc004ec45c0a6ab3f32eb02c1e0c8846796c";
|
||||
sha256 = "Smn3wQ81zzmj+Wpt2Xwby+0Zt7YGhmhlaEscbaZaMmI=";
|
||||
};
|
||||
}
|
||||
} // {
|
||||
rpi-kernels = rpi-kernels [
|
||||
{
|
||||
version = "5.15.36";
|
||||
kernel = prev.fetchFromGitHub {
|
||||
|
|
@ -104,38 +74,7 @@ in {
|
|||
rev = "2cf8a179b3f2e6e5e5ceba4e8e544def10a49020";
|
||||
sha256 = "YG1bryflbV3W62MhZ/XMSgUJXMhCl/fe86x+CT7XZ4U=";
|
||||
};
|
||||
}
|
||||
{
|
||||
version = "5.15.56";
|
||||
kernel = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "linux";
|
||||
rev = "912b039b7c55d40ae930f2602e45c66055c375a8";
|
||||
sha256 = "igtTOPbDw9FJAzZe7u4trCkHLOIQX0RZdUwtWpBX1Ag=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
fw = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "firmware";
|
||||
rev = "e1e3dc004ec45c0a6ab3f32eb02c1e0c8846796c";
|
||||
sha256 = "Smn3wQ81zzmj+Wpt2Xwby+0Zt7YGhmhlaEscbaZaMmI=";
|
||||
};
|
||||
}
|
||||
{
|
||||
version = "5.15.61";
|
||||
kernel = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "linux";
|
||||
rev = "004a1de4f5d866c7a62e6f96ac10bdd908c2d28c";
|
||||
sha256 = "K4yjgova6COikjUgQpX13N5ygpGXDH9Uy54FAg+NKpc=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
fw = prev.fetchFromGitHub {
|
||||
owner = "raspberrypi";
|
||||
repo = "firmware";
|
||||
rev = "8ca25048d08420eac28a97b00ab134ee3535e105";
|
||||
sha256 = "9nM0GbKZHiGOM5C5g9WFnFC0ONQ+g+pbPBl5djOCiLE=";
|
||||
};
|
||||
wireless-fw = import ./raspberrypi-wireless-firmware/5.10.36.nix;
|
||||
}
|
||||
{
|
||||
version = "5.15.87";
|
||||
|
|
@ -152,5 +91,7 @@ in {
|
|||
rev = "2e7137e0840f76f056589aba7f82d5b7236d8f1c";
|
||||
sha256 = "jIKhQxp9D83OAZ8X2Vra9THHBE0j5Z2gRMDSVqIhopY=";
|
||||
};
|
||||
wireless-fw = import ./raspberrypi-wireless-firmware/5.10.87.nix;
|
||||
}
|
||||
])
|
||||
];
|
||||
}
|
||||
|
|
|
|||
56
overlay/raspberrypi-wireless-firmware/5.10.36.nix
Normal file
56
overlay/raspberrypi-wireless-firmware/5.10.36.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{ lib, stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "raspberrypi-wireless-firmware";
|
||||
version = "2021-06-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 = "00de3194a96397c913786945ac0af1fd6fbec45b";
|
||||
sha256 = "1xnr364dkiq6gmr21lcrj23hwc0g9y5qad8dm2maij647bgzp07r";
|
||||
})
|
||||
];
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
dontBuild = true;
|
||||
# Firmware blobs do not need fixing and should not be modified
|
||||
dontFixup = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
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"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
56
overlay/raspberrypi-wireless-firmware/5.10.87.nix
Normal file
56
overlay/raspberrypi-wireless-firmware/5.10.87.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{ lib, stdenvNoCC, fetchFromGitHub }:
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "raspberrypi-wireless-firmware";
|
||||
version = "2023-01-19";
|
||||
|
||||
srcs = [
|
||||
(fetchFromGitHub {
|
||||
name = "bluez-firmware";
|
||||
owner = "RPi-Distro";
|
||||
repo = "bluez-firmware";
|
||||
rev = "9556b08ace2a1735127894642cc8ea6529c04c90";
|
||||
sha256 = "gKGK0XzNrws5REkKg/JP6SZx3KsJduu53SfH3Dichkc=";
|
||||
})
|
||||
(fetchFromGitHub {
|
||||
name = "firmware-nonfree";
|
||||
owner = "RPi-Distro";
|
||||
repo = "firmware-nonfree";
|
||||
rev = "8e349de20c8cb5d895b3568777ec53cbb333398f";
|
||||
sha256 = "45/FnaaZTEG6jLmbaXohpNpS6BEZu3DBDHqquq8ukXc=";
|
||||
})
|
||||
];
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
dontBuild = true;
|
||||
# Firmware blobs do not need fixing and should not be modified
|
||||
dontFixup = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/lib/firmware/brcm"
|
||||
|
||||
# Wifi firmware
|
||||
cp -rv "$NIX_BUILD_TOP/firmware-nonfree/debian/config/brcm80211/." "$out/lib/firmware/"
|
||||
|
||||
# Bluetooth firmware
|
||||
cp -rv "$NIX_BUILD_TOP/bluez-firmware/broadcom/." "$out/lib/firmware/brcm"
|
||||
|
||||
# CM4 symlink must be added since it's missing from upstream
|
||||
pushd $out/lib/firmware/brcm &>/dev/null
|
||||
ln -s "./brcmfmac43455-sdio.txt" "$out/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt"
|
||||
popd &>/dev/null
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
|
|
@ -3,6 +3,17 @@ rpi:
|
|||
|
||||
{
|
||||
imports = [ rpi ];
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
(final: prev: {
|
||||
raspberrypiWirelessFirmware =
|
||||
final.rpi-kernels.v5_15_87.wireless-firmware;
|
||||
raspberrypifw = final.rpi-kernels.v5_15_87.firmware;
|
||||
})
|
||||
];
|
||||
};
|
||||
boot.kernelPackages =
|
||||
pkgs.linuxPackagesFor (pkgs.rpi-kernels.v5_15_87.kernel);
|
||||
hardware.raspberry-pi.deviceTree = {
|
||||
base-dtb = "bcm2710-rpi-3-b-plus.dtb";
|
||||
# u-boot expects bcm2837-rpi-3-b-plus.dtb for the 3b+ (as of
|
||||
|
|
|
|||
|
|
@ -2,7 +2,18 @@ rpi:
|
|||
{ lib, pkgs, config, ... }:
|
||||
|
||||
{
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
(final: prev: {
|
||||
raspberrypiWirelessFirmware =
|
||||
final.rpi-kernels.v5_15_87.wireless-firmware;
|
||||
raspberrypifw = final.rpi-kernels.v5_15_87.firmware;
|
||||
})
|
||||
];
|
||||
};
|
||||
imports = [ rpi ];
|
||||
hardware.raspberry-pi.deviceTree.base-dtb = "bcm2711-rpi-4-b.dtb";
|
||||
boot.kernelPackages =
|
||||
pkgs.linuxPackagesFor (pkgs.rpi-kernels.v5_15_87.kernel);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,15 @@ rpi:
|
|||
|
||||
{
|
||||
imports = [ rpi ];
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
(final: prev: {
|
||||
raspberrypiWirelessFirmware =
|
||||
final.rpi-kernels.v5_15_36.wireless-firmware;
|
||||
raspberrypifw = final.rpi-kernels.v5_15_36.firmware;
|
||||
})
|
||||
];
|
||||
};
|
||||
hardware.raspberry-pi.deviceTree.base-dtb = "bcm2710-rpi-zero-2.dtb";
|
||||
# u-boot expects bcm2837-rpi-zero-2.dtb for the zero 2 w (as of
|
||||
# 2020.04), although the kernel has 2710. We rename it to satisfy
|
||||
|
|
@ -10,4 +19,6 @@ rpi:
|
|||
hardware.raspberry-pi.deviceTree.postInstall = ''
|
||||
mv $out/broadcom/bcm2710-rpi-zero-2.dtb $out/broadcom/bcm2837-rpi-zero-2.dtb
|
||||
'';
|
||||
boot.kernelPackages =
|
||||
pkgs.linuxPackagesFor (pkgs.rpi-kernels.v5_15_36.kernel);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
|
||||
nixpkgs = { overlays = [ overlay ]; };
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_rpi-5_15_87);
|
||||
initrd.availableKernelModules = [ "usbhid" "usb_storage" "vc4" ];
|
||||
|
||||
loader = {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
sdImage = {
|
||||
populateFirmwareCommands = let
|
||||
raspberrypifw = pkgs.raspberrypifw-5_15_87;
|
||||
inherit (pkgs) raspberrypifw;
|
||||
configTxt = pkgs.writeText "config.txt" ''
|
||||
[pi02]
|
||||
kernel=u-boot-rpi_arm64.bin
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue