100 lines
3 KiB
Nix
100 lines
3 KiB
Nix
# https://github.com/KoviRobi/nixos-config/blob/3ab3f8372d1fd021a235de4d314ef7147846513e/overlays/mcuxpresso.nix
|
|
{pkgs, ...}: let
|
|
name = "mcuxpressoide";
|
|
version = "24.9.25";
|
|
description = "MCUXpresso IDE";
|
|
filename = "${name}-${version}.x86_64.deb";
|
|
src = pkgs.stdenv.mkDerivation {
|
|
inherit version description;
|
|
name = "${name}-src";
|
|
src = pkgs.requireFile {
|
|
url = "https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE";
|
|
name = "${filename}.bin";
|
|
hash = "sha256-e3g7rzZQ1WFLcUakkjaufpHMtw3qkw5lwxJuCKs6L+k=";
|
|
};
|
|
buildCommand = ''
|
|
# Unpack tarball.
|
|
mkdir -p deb
|
|
sh $src --target deb || true
|
|
ar -xv deb/${filename}
|
|
tar xfvz data.tar.gz -C .
|
|
mkdir -p ./final/eclipse
|
|
find . -type f -iname "*mcuxpresso*" -o -iname "*.png" -o -iname "*.svg"
|
|
mv ./usr/local/${name}-${version}/ide/* ./usr/local/${name}-${version}/ide/.* final/eclipse
|
|
mv final/eclipse/mcuxpressoide final/eclipse/eclipse
|
|
mv final/eclipse/mcuxpressoide.ini final/eclipse/eclipse.ini
|
|
# Create custom .eclipseproduct file
|
|
rm final/eclipse/.eclipseproduct
|
|
echo "name=${name}
|
|
id=com.nxp.${name}
|
|
version=${version}
|
|
" > final/eclipse/.eclipseproduct
|
|
# Install udev rules
|
|
mkdir -p final/lib/udev/rules.d
|
|
mv ./lib/udev/rules.d/56-pemicro.rules ./lib/udev/rules.d/85-mcuxpresso.rules final/lib/udev/rules.d/
|
|
# Additional files
|
|
mv ./usr/local/${name}-${version}/mcu_data final/mcu_data
|
|
cd ./final
|
|
tar -czf $out ./
|
|
'';
|
|
};
|
|
mcuxpressoide = pkgs.eclipses.buildEclipse {
|
|
name = "${name}-eclipse";
|
|
inherit description src;
|
|
};
|
|
|
|
patchedMcuxpressoide = pkgs.stdenv.mkDerivation {
|
|
name = "${name}-patched";
|
|
src = mcuxpressoide;
|
|
nativeBuildInputs = [
|
|
pkgs.stdenv.cc.cc.lib
|
|
pkgs.gcc
|
|
pkgs.libgcc
|
|
pkgs.libstdcxx5
|
|
pkgs.xorg.libXext
|
|
pkgs.xorg.libX11
|
|
pkgs.xorg.libXrender
|
|
pkgs.xorg.libXtst
|
|
pkgs.xorg.libXi
|
|
pkgs.freetype
|
|
pkgs.alsa-lib
|
|
pkgs.ncurses
|
|
pkgs.ncurses5
|
|
pkgs.libusb1
|
|
pkgs.readline
|
|
pkgs.libffi
|
|
pkgs.zlib
|
|
pkgs.tcl
|
|
pkgs.libxcrypt
|
|
pkgs.libxcrypt-legacy
|
|
pkgs.libusb-compat-0_1
|
|
pkgs.autoPatchelfHook
|
|
];
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r $src/* $out
|
|
'';
|
|
};
|
|
in
|
|
pkgs.stdenv.mkDerivation {
|
|
inherit name version description;
|
|
dontUnpack = true;
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
nativeBuildInputs = [pkgs.copyDesktopItems];
|
|
desktopItems = [
|
|
(pkgs.makeDesktopItem {
|
|
inherit name;
|
|
type = "Application";
|
|
desktopName = "MCUXpresso IDE";
|
|
exec = "mcuxpresso";
|
|
})
|
|
];
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin
|
|
ln -s ${patchedMcuxpressoide}/bin/eclipse $out/bin/mcuxpresso
|
|
runHook postInstall
|
|
'';
|
|
}
|