flocon/shared/pkgs/mcuxpresso/ide.nix
Anthony Rodriguez 390691be57
treewide: refactor structure
I have decided to refactor the entire structure of my repository, as the
old one was getting quite cluttered and I needed something that made
more sense. I've decided to go with the following, which will be
explained in the README when I find the time to do it. The gist of it
is:
- Put everything shared into its shared directory
- Rewrite the theme module (now style) to be more split, as it is
  theming a lot of different apps
- Merge nixos and home-manager configurations back into a singular
  config directory

Thanks a lot to llakala for the massive help she was with my Nix code.

commit 66ff9820f8
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:23:28 2024 +0100

    shared/nixosModules/style: use sharedModules

commit 1271294049
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:23:13 2024 +0100

    treewide: remove unused nvidia file

commit ab18a42418
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:02:34 2024 +0100

    flake: remove uneeded directory for nodes

commit f8afc9f461
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 18:43:19 2024 +0100

    shared/nixosModules/style: split everything into its file

commit 851a4d0d32
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:15:40 2024 +0100

    repo: update README

commit e01237d59a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:00:56 2024 +0100

    hosts/solaire: delete unused modules directory

commit 1c3665ec1c
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:00:24 2024 +0100

    pkgs: move to shared/pkgs

commit 587e8d321b
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:57:03 2024 +0100

    treewide: split up options from theming module, rename to style

    As an initial step towards refactoring the theming module, the options
    have been split up from the configuration itself. This will allow to
    find available options quicker, and separate concerns nicely. It was
    also renamed to style, to avoid confusion with its own options (eg.
    gtk.theme).

commit 87bb04f065
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:59 2024 +0100

    config/nixos/core/boot: remove unused arguments

commit 8e7c0584ef
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:46 2024 +0100

    hosts: move host-specific configuration to hosts/{host}/config

commit a600143e8a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:24 2024 +0100

    nvidia: move to hosts/solaire

commit 7174a33a44
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:14:06 2024 +0100

    treewide: reorganize general structure

commit b86f1470ed
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:03:08 2024 +0100

    hosts/solaire: set global vars

commit de6ea242c0
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:59 2024 +0100

    system/network: replace hard-coded values with global vars

commit 5acf11adca
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:51 2024 +0100

    system/core/users: replace hard-coded values with global vars

commit 96425172a0
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:30 2024 +0100

    hosts/vamos: set global vars

commit 8338818b7d
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:23 2024 +0100

    hosts: import local modules by default

commit ffb60ac869
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:23:54 2024 +0100

    flake: update eachSystem to use lib.systems.flakeExposed

commit e98a15db1d
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:23:33 2024 +0100

    modules: create modules to hold global variables
2024-12-18 19:24:59 +01:00

100 lines
3.1 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";
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
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
'';
}