treewide: add custom packages + mcuxpesso IDE
This commit is contained in:
parent
2e29a5cec7
commit
746f658c95
9 changed files with 185 additions and 3 deletions
|
@ -26,6 +26,7 @@
|
|||
formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
|
||||
nixosModules = import ./modules;
|
||||
nixosConfigurations = import ./hosts {inherit self inputs;};
|
||||
packages = eachSystem (pkgs: import ./pkgs pkgs);
|
||||
deploy.nodes = import ./nodes {inherit self inputs;};
|
||||
};
|
||||
inputs = {
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./browsers
|
||||
./media
|
||||
|
@ -35,5 +39,9 @@
|
|||
nautilus
|
||||
simple-scan
|
||||
entr
|
||||
inputs.self.packages.${pkgs.system}.mcuxpresso.ide
|
||||
dfu-util
|
||||
segger-jlink
|
||||
# inputs.self.packages.${pkgs.system}.mcuxpresso.config-tools
|
||||
];
|
||||
}
|
||||
|
|
3
pkgs/default.nix
Normal file
3
pkgs/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
pkgs: {
|
||||
mcuxpresso = import ./mcuxpresso pkgs;
|
||||
}
|
49
pkgs/mcuxpresso/config-tools.nix
Normal file
49
pkgs/mcuxpresso/config-tools.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
eclipses,
|
||||
stdenv,
|
||||
requireFile,
|
||||
...
|
||||
}: let
|
||||
name = "mcuxpressotools";
|
||||
version = "v16-1";
|
||||
description = "MCUXpresso Config Tools";
|
||||
filename = "mcuxpresso-config-tools-${version}_amd64.deb";
|
||||
|
||||
src = stdenv.mkDerivation {
|
||||
inherit version description;
|
||||
name = "${name}-src";
|
||||
src = requireFile {
|
||||
url = "https://www.nxp.com/design/software/development-software/mcuxpresso-config-tools-pins-clocks-and-peripherals:MCUXpresso-Config-Tools";
|
||||
name = "${filename}.bin";
|
||||
sha256 = "sha256-BbEwxm1urV2IrgUiTiMBEAPvonQGwdL4fpqFftGgRxI=";
|
||||
};
|
||||
|
||||
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
|
||||
mv ./opt/nxp/MCUX_CFG_v13/bin/.* final/eclipse
|
||||
mv ./usr final/
|
||||
mv final/eclipse/tools final/eclipse/eclipse
|
||||
mv final/eclipse/tools.ini final/eclipse/eclipse.ini
|
||||
|
||||
# Create custom .eclipseproduct file
|
||||
echo "name=${name}
|
||||
id=com.nxp.${name}
|
||||
version=${version}
|
||||
" > final/eclipse/.eclipseproduct
|
||||
|
||||
# Additional files
|
||||
mkdir -p final/usr/share/mime
|
||||
mv ./opt/nxp/MCUX_CFG_v13/mcu_data final/mcu_data
|
||||
|
||||
cd ./final
|
||||
tar -czf $out ./
|
||||
'';
|
||||
};
|
||||
in
|
||||
eclipses.buildEclipse {inherit description name src;}
|
3
pkgs/mcuxpresso/default.nix
Normal file
3
pkgs/mcuxpresso/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
pkgs: {
|
||||
ide = pkgs.callPackage ./ide.nix {};
|
||||
}
|
105
pkgs/mcuxpresso/ide.nix
Normal file
105
pkgs/mcuxpresso/ide.nix
Normal file
|
@ -0,0 +1,105 @@
|
|||
# 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";
|
||||
|
||||
mcuxpressoideSrc = 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 = "mcuxpresso-eclipse";
|
||||
inherit description;
|
||||
src = mcuxpressoideSrc;
|
||||
};
|
||||
|
||||
# needed because of the integrated toolchain
|
||||
mcuxpressoFhsEnv = pkgs.buildFHSEnv {
|
||||
name = "mcuxpresso-env";
|
||||
targetPkgs = pkgs: [
|
||||
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
|
||||
];
|
||||
|
||||
runScript = "${mcuxpressoide}/bin/eclipse";
|
||||
};
|
||||
in
|
||||
# wrapper with desktop entry and udev rules
|
||||
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 $out/lib/udev/rules.d $out/eclipse $out/mcu_data
|
||||
|
||||
cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/
|
||||
|
||||
ln -s ${mcuxpressoFhsEnv}/bin/mcuxpresso-env $out/bin/mcuxpresso
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
"audio"
|
||||
"video"
|
||||
"wheel"
|
||||
"plugdev"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{pkgs, ...}: {
|
||||
nixpkgs = {
|
||||
config.allowUnfree = true;
|
||||
overlays = [
|
||||
(_: prev: {
|
||||
lib =
|
||||
|
@ -10,6 +9,11 @@
|
|||
};
|
||||
})
|
||||
];
|
||||
config.permittedInsecurePackages = ["cinny-4.2.2" "cinny-unwrapped-4.2.2"];
|
||||
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = ["cinny-4.2.2" "cinny-unwrapped-4.2.2" "segger-jlink-qt4-796s"];
|
||||
segger-jlink.acceptLicense = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [./docker.nix ./gnupg.nix ./pipewire.nix ./kmscon.nix];
|
||||
services.udev.packages = [pkgs.segger-jlink inputs.self.packages.${pkgs.system}.mcuxpresso.ide];
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="1fc9", ATTR{idProduct}=="0132", MODE="0666"
|
||||
'';
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue