This commit is contained in:
66
pkgs/by-name/qe/qebspil/package.nix
Normal file
66
pkgs/by-name/qe/qebspil/package.nix
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
gnumake,
|
||||
dtc,
|
||||
glibc,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "qebspil";
|
||||
version = "unstable-2025-10-25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stephan-gh";
|
||||
repo = "qebspil";
|
||||
rev = "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0";
|
||||
hash = "sha256-kWUXzeYWNxGgmjt/p9yozrWc5ouUs0XXBRfiFMlu+QQ=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnumake
|
||||
dtc
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# Create a symlink to glibc's elf.h for gnu-efi
|
||||
mkdir -p external/gnu-efi/inc/sys
|
||||
ln -sf ${glibc.dev}/include/elf.h external/gnu-efi/inc/sys/elf.h
|
||||
|
||||
# Set up build environment
|
||||
export SRCDIR=$PWD
|
||||
export OUTDIR=$PWD/out
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"QEBSPIL_ALWAYS_START=1"
|
||||
"CROSS_COMPILE="
|
||||
"ARCH=aarch64"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# Install the EFI binary
|
||||
mkdir -p $out/share/efi
|
||||
cp out/qebspilaa64.efi $out/share/efi/
|
||||
|
||||
# Also create a symlink in a more standard location
|
||||
mkdir -p $out/lib/systemd/boot/efi
|
||||
ln -s $out/share/efi/qebspilaa64.efi $out/lib/systemd/boot/efi/qebspilaa64.efi
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "UEFI boot driver to start co-processors on Qualcomm platforms late during the boot process";
|
||||
homepage = "https://github.com/stephan-gh/qebspil";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = [ "aarch64-linux" ];
|
||||
mainProgram = "qebspilaa64.efi";
|
||||
};
|
||||
}
|
||||
101
pkgs/by-name/sl/slbounce/package.nix
Normal file
101
pkgs/by-name/sl/slbounce/package.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
fetchgit,
|
||||
fetchFromGitHub,
|
||||
buildPackages,
|
||||
dtc,
|
||||
}:
|
||||
|
||||
let
|
||||
aarch64-system-register-xmls = fetchzip {
|
||||
url = "https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2020-06/SysReg_xml_v86A-2020-06.tar.gz";
|
||||
stripRoot = false;
|
||||
hash = "sha256-wpWMIdR4v4sGZ0FEn/j5+AzkpPFOF7lUKIFpVl5AMEE=";
|
||||
};
|
||||
|
||||
arm64-sysreg-lib = stdenv.mkDerivation {
|
||||
name = "arm64-sysreg-lib";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ashwio";
|
||||
repo = "arm64-sysreg-lib";
|
||||
sparseCheckout = [ "/" ];
|
||||
rev = "d421e249a026f6f14653cb6f9c4edd8c5d898595";
|
||||
hash = "sha256-vUuV8eddYAdwXGQe+L7lKiAwyqHPYmiOdVFKvwCMWkQ=";
|
||||
};
|
||||
nativeBuildInputs = [
|
||||
(buildPackages.python3.withPackages (ps: [ ps.beautifulsoup4 ]))
|
||||
];
|
||||
buildPhase = ''
|
||||
python ./run-build.py ${aarch64-system-register-xmls}/SysReg_xml_v86A-2020-06
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/include
|
||||
cp -r include $out/
|
||||
'';
|
||||
};
|
||||
|
||||
gnu-efi = fetchFromGitHub {
|
||||
owner = "ncroxon";
|
||||
repo = "gnu-efi";
|
||||
rev = "3.0.15";
|
||||
hash = "sha256-flQJIRPKd0geQRAtJSu4vravJG0lTB6BfeIqpUM5P2I=";
|
||||
};
|
||||
|
||||
dtc-src = fetchgit {
|
||||
url = "https://git.kernel.org/pub/scm/utils/dtc/dtc.git";
|
||||
rev = "v1.7.2";
|
||||
hash = "sha256-KZCzrvdWd6zfQHppjyp4XzqNCfH2UnuRneu+BNIRVAY=";
|
||||
};
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "slbounce";
|
||||
version = "5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TravMurav";
|
||||
repo = "slbounce";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-w+0SKR0A/hcFU6iFEOgyG+vWwgAWF8h9D0/X7GSFm7w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ dtc ];
|
||||
|
||||
postPatch = ''
|
||||
rmdir external/{arm64-sysreg-lib,dtc}
|
||||
ln -s ${arm64-sysreg-lib} external/arm64-sysreg-lib
|
||||
ln -s ${dtc-src} external/dtc
|
||||
|
||||
cp -r ${gnu-efi}/* external/gnu-efi/
|
||||
chmod -R u+w external/gnu-efi
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
||||
# Force EL2 switch regardless of DTB detection
|
||||
# Without this, slbounce checks for 'dtbhack-el2-overlay' in DTB
|
||||
"SLBOUNCE_ALWAYS_SWITCH=1"
|
||||
# Enable debug output
|
||||
"DEBUG=1"
|
||||
"all"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/slbounce
|
||||
cp out/*.efi $out/share/slbounce/
|
||||
|
||||
# Also build and install DTB overlays
|
||||
make dtbs || true
|
||||
mkdir -p $out/share/slbounce/dtbo
|
||||
cp out/dtbo/*.dtbo $out/share/slbounce/dtbo/ 2>/dev/null || true
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "EL2 (hypervisor mode) enabler for Qualcomm Windows-on-ARM devices";
|
||||
homepage = "https://github.com/TravMurav/slbounce";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = [ "aarch64-linux" ];
|
||||
};
|
||||
})
|
||||
96
pkgs/by-name/tc/tcblaunch/package.nix
Normal file
96
pkgs/by-name/tc/tcblaunch/package.nix
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
stdenv,
|
||||
p7zip,
|
||||
curl,
|
||||
jq,
|
||||
cacert,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "22621.6060";
|
||||
# Fixed-Output Derivation to fetch winre.wim from Microsoft CDN via UUPDump API
|
||||
winre-wim = stdenvNoCC.mkDerivation {
|
||||
pname = "winre-wim";
|
||||
inherit version;
|
||||
nativeBuildInputs = [
|
||||
curl
|
||||
jq
|
||||
cacert
|
||||
];
|
||||
|
||||
UUP_ID = "b90029a9-23b4-4558-9687-2142f79e5ae2";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
echo "Querying UUPDump API for winre.wim..."
|
||||
WINRE_URL=$(curl -s "https://api.uupdump.net/get.php?id=$UUP_ID" | jq -r '.response.files["winre.wim"].url')
|
||||
|
||||
if [[ -z "$WINRE_URL" || "$WINRE_URL" == "null" ]]; then
|
||||
echo "ERROR: Failed to get winre.wim URL from UUPDump API"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Downloading winre.wim from: $WINRE_URL"
|
||||
curl -L -o winre.wim "$WINRE_URL"
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cp winre.wim "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
outputHashMode = "flat";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "sha256-jEBM0ZXEqe7HEjbpQdWNumWH5/KmCuGnIcIlFGN3W6g=";
|
||||
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tcblaunch";
|
||||
inherit version;
|
||||
src = winre-wim;
|
||||
|
||||
nativeBuildInputs = [ p7zip ];
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
echo "Extracting tcblaunch.exe from winre.wim..."
|
||||
mkdir -p extracted
|
||||
7z e "$src" -oextracted 'Windows/System32/tcblaunch.exe' -y
|
||||
if [[ ! -f "extracted/tcblaunch.exe" ]]; then
|
||||
echo "ERROR: tcblaunch.exe was not extracted"
|
||||
exit 1
|
||||
fi
|
||||
ls -lh extracted/tcblaunch.exe
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/share/tcblaunch"
|
||||
cp extracted/tcblaunch.exe "$out/share/tcblaunch/tcblaunch.exe"
|
||||
chmod 644 "$out/share/tcblaunch/tcblaunch.exe"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Microsoft tcblaunch.exe for Qualcomm Secure Launch (required by slbounce)";
|
||||
homepage = "https://github.com/TravMurav/slbounce";
|
||||
license = lib.licenses.unfree;
|
||||
platforms = [
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user