From 3a002c5a6476f98ae7c88be25ac9c18ef4974699 Mon Sep 17 00:00:00 2001 From: Adam Stephens Date: Mon, 27 May 2024 12:11:12 -0400 Subject: [PATCH] fix: pd-mapper can't read zstd firmware files nixos unstable and 24.05 switched to zstd compression for firmware files. Roll back to the previous setup of creating a package of the qcom firmware uncompressed, and patching pd-mapper. closes #14 --- module.nix | 10 +++++++- packages/default.nix | 2 ++ .../pd-mapper/pd-mapper-firmware-path.diff | 4 ++-- packages/uncompressed-firmware.nix | 24 +++++++++++++++++++ 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 packages/uncompressed-firmware.nix diff --git a/module.nix b/module.nix index 24a9a41..7fad5c8 100644 --- a/module.nix +++ b/module.nix @@ -2,6 +2,7 @@ { config, lib, + options, pkgs, ... }: @@ -40,7 +41,14 @@ in }; config = lib.mkIf cfg.enable { - environment.systemPackages = [ pkgs.efibootmgr ]; + environment.systemPackages = [ + pkgs.efibootmgr + (x13sPackages.uncompressed-firmware.override { + firmwareFilesList = lib.flatten options.hardware.firmware.definitions; + }) + ]; + + environment.pathsToLink = [ "/share/uncompressed-firmware" ]; hardware.enableAllFirmware = true; hardware.firmware = [ x13sPackages."x13s/extra-firmware" ]; diff --git a/packages/default.nix b/packages/default.nix index 15dbe36..44309d6 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -27,4 +27,6 @@ rec { qrtr = pkgs.callPackage ./qrtr { }; "x13s/extra-firmware" = pkgs.callPackage ./extra-firmware.nix { }; + + uncompressed-firmware = pkgs.callPackage ./uncompressed-firmware.nix { }; } diff --git a/packages/pd-mapper/pd-mapper-firmware-path.diff b/packages/pd-mapper/pd-mapper-firmware-path.diff index 696b6da..8e58e4d 100644 --- a/packages/pd-mapper/pd-mapper-firmware-path.diff +++ b/packages/pd-mapper/pd-mapper-firmware-path.diff @@ -4,10 +4,10 @@ index 65c4b80..669d9a0 100644 +++ b/pd-mapper.c @@ -194,7 +194,7 @@ static int pd_load_map(const char *file) } - + #ifndef ANDROID -#define FIRMWARE_BASE "/lib/firmware/" -+#define FIRMWARE_BASE "/run/current-system/firmware/" ++#define FIRMWARE_BASE "/run/current-system/sw/share/uncompressed-firmware/" #else #define FIRMWARE_BASE "/vendor/firmware/" #endif diff --git a/packages/uncompressed-firmware.nix b/packages/uncompressed-firmware.nix new file mode 100644 index 0000000..8fe5d3a --- /dev/null +++ b/packages/uncompressed-firmware.nix @@ -0,0 +1,24 @@ +{ + runCommand, + buildEnv, + firmwareFilesList ? [ ], +}: +runCommand "qcom-modem-uncompressed-firmware-share" + { + firmwareFiles = buildEnv { + name = "qcom-modem-uncompressed-firmware"; + paths = firmwareFilesList; + pathsToLink = [ + "/lib/firmware/rmtfs" + "/lib/firmware/qcom" + ]; + }; + } + '' + PS4=" $ " + ( + set -x + mkdir -p $out/share/ + ln -s $firmwareFiles/lib/firmware/ $out/share/uncompressed-firmware + ) + ''