update dependencies, more flexible kernel config

This commit is contained in:
Travis Staton 2022-08-30 09:26:21 -04:00
parent ddfb3d0128
commit 28498601bb
5 changed files with 89 additions and 22 deletions

View file

@ -1,13 +1,17 @@
final: prev: final: prev:
let let
rpi-kernel = { kernel, version, fw }: rpi-kernel = { kernel, version, fw, extraConfig ? null }:
let let
new-kernel = prev.linux_rpi4.override { new-kernel = prev.linux_rpi4.override {
argsOverride = { argsOverride = {
src = kernel; src = kernel;
inherit version; inherit version;
modDirVersion = version; modDirVersion = version;
}; } // (if builtins.isNull extraConfig then
{ }
else {
inherit extraConfig;
});
}; };
new-fw = prev.raspberrypifw.overrideAttrs (oldfw: { src = fw; }); new-fw = prev.raspberrypifw.overrideAttrs (oldfw: { src = fw; });
version-slug = builtins.replaceStrings [ "." ] [ "_" ] version; version-slug = builtins.replaceStrings [ "." ] [ "_" ] version;
@ -18,15 +22,15 @@ let
rpi-kernels = builtins.foldl' (b: a: b // rpi-kernel a) { }; rpi-kernels = builtins.foldl' (b: a: b // rpi-kernel a) { };
in { in {
# newer version of libcamera # newer version of libcamera
libcamera = prev.libcamera.overrideAttrs (old: { # libcamera = prev.libcamera.overrideAttrs (old: {
src = prev.fetchgit { # src = prev.fetchgit {
url = "https://git.libcamera.org/libcamera/libcamera.git"; # url = "https://git.libcamera.org/libcamera/libcamera.git";
rev = "44d59841e1ce59042b8069b8078bc9f7b1bfa73b"; # rev = "44d59841e1ce59042b8069b8078bc9f7b1bfa73b";
sha256 = "1nzkvy2y772ak9gax456ws2fmjc9ncams0m1w27h1rzpxn5yphqr"; # sha256 = "1nzkvy2y772ak9gax456ws2fmjc9ncams0m1w27h1rzpxn5yphqr";
}; # };
mesonFlags = [ "-Dv4l2=true" "-Dqcam=disabled" "-Dlc-compliance=disabled" ]; # mesonFlags = [ "-Dv4l2=true" "-Dqcam=disabled" "-Dlc-compliance=disabled" ];
patches = (old.patches or [ ]) ++ [ ./libcamera.patch ]; # patches = (old.patches or [ ]) ++ [ ./libcamera.patch ];
}); # });
libcamera-apps = final.callPackage ./libcamera-apps.nix { }; libcamera-apps = final.callPackage ./libcamera-apps.nix { };
@ -42,7 +46,49 @@ 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=";
})
];
});
} // (rpi-kernels [ } // (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=";
};
}
{ {
version = "5.15.36"; version = "5.15.36";
kernel = prev.fetchFromGitHub { kernel = prev.fetchFromGitHub {
@ -91,4 +137,20 @@ in {
sha256 = "9nM0GbKZHiGOM5C5g9WFnFC0ONQ+g+pbPBl5djOCiLE="; sha256 = "9nM0GbKZHiGOM5C5g9WFnFC0ONQ+g+pbPBl5djOCiLE=";
}; };
} }
{
version = "5.15.87";
kernel = prev.fetchFromGitHub {
owner = "raspberrypi";
repo = "linux";
rev = "da4c8e0ffe7a868b989211045657d600be3046a1";
sha256 = "hNLVfhalmRhhRfvu2mR/qDmmGl//Ic1eqR7N1HFj2CY=";
fetchSubmodules = true;
};
fw = prev.fetchFromGitHub {
owner = "raspberrypi";
repo = "firmware";
rev = "2e7137e0840f76f056589aba7f82d5b7236d8f1c";
sha256 = "jIKhQxp9D83OAZ8X2Vra9THHBE0j5Z2gRMDSVqIhopY=";
};
}
]) ])

View file

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libcamera-apps"; pname = "libcamera-apps";
version = "unstable-2022-05-12"; version = "v1.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "raspberrypi"; owner = "raspberrypi";
repo = "libcamera-apps"; repo = "libcamera-apps";
rev = "f5a2f1d86b440ebc064d4369421348d858ef31f3"; rev = "4fea2eed68300dcc88e89aa30da6079d10dce822";
sha256 = "Et8enICYct/AvWstY/id6BD/NB9+La9pNrtAsdwv+Tg="; sha256 = "T6BpC1lEZD00TBZ7SXChKh/m+vKYnVzSTLxBHIEJYn8=";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -13,7 +13,7 @@
nixpkgs = { overlays = [ overlay ]; }; nixpkgs = { overlays = [ overlay ]; };
boot = { boot = {
kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_rpi-5_15_61); kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_rpi-5_15_87);
initrd.availableKernelModules = [ "usbhid" "usb_storage" "vc4" ]; initrd.availableKernelModules = [ "usbhid" "usb_storage" "vc4" ];
loader = { loader = {

View file

@ -18,7 +18,7 @@ in {
type = with lib.types; type = with lib.types;
listOf (submodule { listOf (submodule {
options = { options = {
overlay = lib.mkOption { type = str; }; overlay = lib.mkOption { type = oneOf [ str path ]; };
args = lib.mkOption { args = lib.mkOption {
type = listOf str; type = listOf str;
default = [ ]; default = [ ];
@ -61,6 +61,15 @@ in {
make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}" make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
''; '';
}; };
compiled-overlays = map (x:
let
overlay-file = if builtins.isPath x.overlay then
pkgs.runCommand "overlay.dtbo" {
buildInputs = with pkgs; [ dtc ];
} "dtc -I dts -O dtb -o $out ${x.overlay}"
else
"${config.boot.kernelPackages.kernel}/dtbs/overlays/${x.overlay}.dtbo";
in x // { overlay = overlay-file; }) cfg.dt-overlays;
in lib.mkForce (pkgs.runCommand "device-tree-overlays" { in lib.mkForce (pkgs.runCommand "device-tree-overlays" {
buildInputs = with pkgs; [ findutils libraspberrypi ]; buildInputs = with pkgs; [ findutils libraspberrypi ];
} '' } ''
@ -82,11 +91,7 @@ in {
builtins.concatStringsSep " " x.args builtins.concatStringsSep " " x.args
} }
mv $out/$dtb{-merged,} mv $out/$dtb{-merged,}
'') (map (x: '') compiled-overlays
x // {
overlay =
"${config.boot.kernelPackages.kernel}/dtbs/overlays/${x.overlay}.dtbo";
}) cfg.dt-overlays)
} }
done done
${cfg.postInstall} ${cfg.postInstall}

View file

@ -13,7 +13,7 @@
sdImage = { sdImage = {
populateFirmwareCommands = let populateFirmwareCommands = let
raspberrypifw = pkgs.raspberrypifw-5_15_61; raspberrypifw = pkgs.raspberrypifw-5_15_87;
configTxt = pkgs.writeText "config.txt" '' configTxt = pkgs.writeText "config.txt" ''
[pi02] [pi02]
kernel=u-boot-rpi_arm64.bin kernel=u-boot-rpi_arm64.bin