Files
pkgs/pkgs/by-name/x1/x1e80100-firmware/package.nix

63 lines
1.5 KiB
Nix

{
msitools,
tree,
fetchurl,
lib,
stdenv,
...
}:
stdenv.mkDerivation (
let
fw_files = [
"adsp_dtbs.elf"
"adspr.jsn"
"adsps.jsn"
"adspua.jsn"
"battmgr.jsn"
"cdsp_dtbs.elf"
"cdspr.jsn"
"qcadsp8380.mbn"
"qccdsp8380.mbn"
"qcdxkmsuc8380.mbn"
"bdwlan01.e0b"
];
in
rec {
name = "x1e80100-firmware";
version = "26100_25.101.12926.0";
src = fetchurl {
# https://www.microsoft.com/en-us/download/details.aspx?id=106120
url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_${version}.msi";
hash = "sha256-4LVqkA4YwGrAh3gNSUQ5G2ahwBoj/5QvyFqvNgznvX4=";
};
nativeBuildInputs = [
msitools
tree
];
unpackPhase = ''
msiextract -C . "$src"
'';
buildPhase = ''
mkdir -p "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus"
for file in ${lib.concatStringsSep " " fw_files}; do
echo -e "\tSearching for $file..."
fw_path=$(find . -type f -name "$file" -print | head -n 1)
if [[ -n "$fw_path" ]]; then
cp -v "$fw_path" "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus/"
else
echo "Error: $file not found!"
exit 1
fi
done
cp "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus/qcdxkmsuc8380.mbn" "$out/lib/firmware/qcom/x1e80100/microsoft/qcdxkmsuc8380.mbn"
'';
meta = {
platforms = [ "aarch64-linux" ];
};
}
)