Modelio: init at 5.4.1 (#508042)

This commit is contained in:
Matt Sturgeon
2026-06-10 13:58:35 +00:00
committed by GitHub
2 changed files with 141 additions and 0 deletions
+5
View File
@@ -9663,6 +9663,11 @@
githubId = 293586;
name = "Adam Gamble";
};
gamebeaker = {
github = "gamebeaker";
githubId = 9269847;
name = "gamebeaker";
};
gamedungeon = {
github = "GameDungeon";
githubId = 60719255;
+136
View File
@@ -0,0 +1,136 @@
{
lib,
stdenvNoCC,
fetchurl,
dpkg,
makeWrapper,
autoPatchelfHook,
wrapGAppsHook3,
gtk3,
glib,
libsecret,
libx11,
libxtst,
openjdk11,
webkitgtk_4_1,
glib-networking,
imagemagick,
}:
let
# SWT 3.120 hardcodes dlopen("libwebkit2gtk-4.0.so.37") but nixpkgs
# only ships webkitgtk_4_1 (soname libwebkit2gtk-4.1.so.0).
webkitCompat = stdenvNoCC.mkDerivation {
name = "webkitgtk-4.0-compat";
dontUnpack = true;
installPhase = ''
mkdir -p $out/lib
ln -s ${webkitgtk_4_1}/lib/libwebkit2gtk-4.1.so.0 $out/lib/libwebkit2gtk-4.0.so.37
'';
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "modelio";
version = "5.4.1";
# Using .deb package instead of building from source as the build process uses eclipse gui as a necessary build step.
# Building from source steps: https://github.com/ModelioOpenSource/Modelio/wiki/Build-Modelio-Index
# I was unsuccessful in the attempt to build it via cli.
src = fetchurl {
url = "https://github.com/ModelioOpenSource/Modelio/releases/download/v${finalAttrs.version}/modelio-open-source-${finalAttrs.version}_amd64.deb";
hash = "sha256-cg7ruIYpOgz2nfax37M8sUs89Qvbb5PMudyR0ZNiURo=";
};
nativeBuildInputs = [
dpkg
makeWrapper
autoPatchelfHook
wrapGAppsHook3
imagemagick
];
buildInputs = [
gtk3
glib
libsecret
libx11
libxtst
];
strictDeps = true;
__structuredAttrs = true;
unpackPhase = ''
runHook preUnpack
dpkg-deb --extract $src .
runHook postUnpack
'';
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
rm -rf usr/lib/modelio-open-source5.4/jre
mkdir -p $out/opt/modelio $out/bin
cp -r usr/lib/modelio-open-source5.4/* $out/opt/modelio
# Remove upstream's blanket TLS error suppression
substituteInPlace $out/opt/modelio/modelio.ini \
--replace-fail "-Dorg.eclipse.swt.internal.webkitgtk.ignoretlserrors=true" ""
# change dark theme to light theme as the text isn't readable in dark themes GTK_THEME "Adwaita:light" isn't enough
# https://github.com/ModelioOpenSource/Modelio/issues/59
cp $out/opt/modelio/plugins/org.eclipse.ui.themes_1.2.1200.v20201112-1139/css/{e4_basestyle,e4-dark_linux}.css
# --set GTK_THEME "Adwaita:light" as the text isn't readable in dark themes
# https://github.com/ModelioOpenSource/Modelio/issues/59
makeWrapper $out/opt/modelio/modelio $out/bin/modelio \
--prefix PATH : "${openjdk11}/bin" \
--set JAVA_HOME "${openjdk11.home}" \
--set GDK_BACKEND "x11" \
--set GTK_THEME "Adwaita:light" \
--set SWT_GTK3 "1" \
--set SWT_WEBKIT2 "1" \
--set UBUNTU_MENUPROXY "0" \
--set LIBOVERLAY_SCROLLBAR "0" \
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
--prefix LD_LIBRARY_PATH : "${
lib.makeLibraryPath [
gtk3
glib
webkitCompat
glib-networking
]
}"
mkdir -p $out/share/applications
cp usr/share/applications/modelio-open-source5.4.desktop $out/share/applications/modelio.desktop
substituteInPlace $out/share/applications/modelio.desktop \
--replace-fail "Exec=/usr/bin/modelio-open-source5.4" "Exec=$out/bin/modelio" \
--replace-fail "Icon=modelio-open-source5.4" "Icon=modelio"
mkdir -p $out/share/icons/hicolor/scalable/apps
cp usr/share/icons/hicolor/scalable/apps/modelio-open-source5.4.svg \
$out/share/icons/hicolor/scalable/apps/modelio.svg
for size in 16 32 48 64 128 256 512; do
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
magick -background none $out/share/icons/hicolor/scalable/apps/modelio.svg -resize "$size"x"$size" $out/share/icons/hicolor/"$size"x"$size"/apps/modelio.png
done
runHook postInstall
'';
meta = {
homepage = "https://www.modelio.org/";
changelog = "https://github.com/ModelioOpenSource/Modelio/releases/tag/v${finalAttrs.version}";
description = "Open-source UML, BPMN, ArchiMate and SysML modeling environment";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ gamebeaker ];
platforms = [ "x86_64-linux" ];
mainProgram = "modelio";
};
})