114 lines
2.5 KiB
Nix
114 lines
2.5 KiB
Nix
{
|
|
lib,
|
|
libicns,
|
|
p7zip,
|
|
fetchzip,
|
|
stdenvNoCC,
|
|
makeDesktopItem,
|
|
buildFHSEnv,
|
|
workdir ? "/tmp/blhelisuite32",
|
|
}:
|
|
let
|
|
name = "BLHeliSuite32";
|
|
pname = "blhelisuite32";
|
|
version = "32.10";
|
|
suffix = "1044";
|
|
|
|
dist = fetchzip {
|
|
name = "${pname}-dist";
|
|
url = "https://github.com/bitdump/BLHeli/releases/download/Rev${version}/${name}xLinux64_${suffix}.zip";
|
|
hash = "sha256-y4S824s9Ipxb1M1IeD6Lo6k7hmm8CEmPflvhaqZz+84=";
|
|
};
|
|
|
|
desktopItem = makeDesktopItem {
|
|
name = pname;
|
|
exec = pname;
|
|
icon = pname;
|
|
comment = "This Application may flash and configure BLHeli_32 based ESCs";
|
|
desktopName = name;
|
|
genericName = "BLHeli for brushless ESC firmware";
|
|
};
|
|
|
|
icons = stdenvNoCC.mkDerivation {
|
|
pname = "${pname}-icons";
|
|
inherit version;
|
|
src = fetchzip {
|
|
name = "${pname}-macos";
|
|
url = "https://github.com/bitdump/BLHeli/releases/download/Rev${version}/${name}xm_MacOS64_${suffix}.zip";
|
|
hash = "sha256-StRnrVI8p51vNsTMO1LtaZvENbG7XZ1V/mKHe4pO7kU=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
libicns
|
|
p7zip
|
|
];
|
|
|
|
configurePhase = ''
|
|
7z x *.dmg
|
|
'';
|
|
|
|
buildPhase = ''
|
|
icns2png -x ${name}xm_MacOS64_${suffix}/${name}xm.app/Contents/Resources/${name}xm.icns
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p "$out"
|
|
cp -r ${name}*.png "$out"
|
|
'';
|
|
};
|
|
|
|
linked = stdenvNoCC.mkDerivation {
|
|
inherit pname version;
|
|
phases = [
|
|
"unpackPhase"
|
|
"patchPhase"
|
|
"installPhase"
|
|
];
|
|
src = dist;
|
|
|
|
installPhase = ''
|
|
cp -r . "$out"
|
|
|
|
# BLHeliSuite32 tries to write next to its binary
|
|
ln -s ${workdir}/settings $out/Settings
|
|
ln -s ${workdir}/music $out/Music
|
|
'';
|
|
};
|
|
in
|
|
buildFHSEnv {
|
|
inherit pname version;
|
|
targetPkgs =
|
|
pkgs:
|
|
(with pkgs; [
|
|
glib
|
|
libGL
|
|
curl
|
|
libgcc
|
|
gtk3
|
|
zlib
|
|
systemdLibs
|
|
]);
|
|
extraInstallCommands =
|
|
let
|
|
mkIconScale =
|
|
scale:
|
|
"install -m 444 -D ${icons}/${name}xm_${scale}x${scale}x32.png $out/share/icons/hicolor/${scale}x${scale}/apps/${pname}.png";
|
|
in
|
|
''
|
|
${mkIconScale "16"}
|
|
${mkIconScale "32"}
|
|
${mkIconScale "64"}
|
|
${mkIconScale "128"}
|
|
${mkIconScale "256"}
|
|
${mkIconScale "512"}
|
|
${mkIconScale "1024"}
|
|
cp -r ${desktopItem}/share/applications $out/share/
|
|
'';
|
|
|
|
runScript =
|
|
"sh -c '"
|
|
+ "mkdir -p ${workdir}/settings && "
|
|
+ "mkdir -p ${workdir}/music && "
|
|
+ "exec ${linked}/${name}xl'";
|
|
}
|