diff --git a/pkgs/default.nix b/pkgs/default.nix index 5790118..f5a275c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -15,6 +15,7 @@ jirafeau-cli = pkgs.callPackage ./jirafeau-cli { }; kicad-mcp = pkgs.callPackage ./kicad-mcp { }; mcpo = pkgs.callPackage ./mcpo { }; + openmv-ide = pkgs.callPackage ./openmv-ide { }; pass2bw = pkgs.callPackage ./pass2bw { }; pyman = pkgs.callPackage ./pyman { }; quicknote = pkgs.callPackage ./quicknote { }; diff --git a/pkgs/openmv-ide/default.nix b/pkgs/openmv-ide/default.nix new file mode 100644 index 0000000..bef3cc1 --- /dev/null +++ b/pkgs/openmv-ide/default.nix @@ -0,0 +1,132 @@ +{ + lib, + stdenv, + fetchurl, + + at-spi2-atk, + autoPatchelfHook, + cairo, + cups, + dbus, + fontconfig, + freetype, + gdk-pixbuf, + glib, + gtk3, + libGL, + libdrm, + libxcb-cursor, + libxkbcommon, + makeWrapper, + pango, + wayland, + xorg, + zlib, +}: + +stdenv.mkDerivation rec { + pname = "openmv-ide"; + version = "4.8.9"; + + src = fetchurl { + url = "https://github.com/openmv/openmv-ide/releases/download/v${version}/openmv-ide-linux-x86_64-${version}.tar.gz"; + hash = "sha256-D0Uunb6IIX8gkirZIISjjhvrrCsR5bgRBcXidtjN/n0="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + at-spi2-atk + cairo + cups + dbus.lib + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libGL + libdrm + libxcb-cursor + libxkbcommon + pango + stdenv.cc.cc.lib + wayland + xorg.libX11 + xorg.libxcb + xorg.xcbutil + xorg.xcbutilimage + xorg.xcbutilkeysyms + xorg.xcbutilrenderutil + xorg.xcbutilwm + zlib + ]; + + autoPatchelfIgnoreMissingDeps = [ + "libQt6Designer.so.6" + "libQt6Labs*.so.6" + "libQt6OpenGLWidgets.so.6" + "libQt6Qml*.so.6" + "libQt6Quick*.so.6" + "libQt6ShaderTools.so.6" + "libgssapi_krb5.so.2" + "libicudata.so.56" + "libicui18n.so.56" + "libicuuc.so.56" + "libmysqlclient.so.21" + "libodbc.so.2" + "libpq.so.5" + ]; + + dontAutoPatchelf = true; + dontBuild = true; + dontConfigure = true; + dontStrip = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/openmv-ide + cp -r bin lib share $out/share/openmv-ide/ + + chmod -R u+w $out/share/openmv-ide/ + + mkdir -p $out/share/applications + cp share/applications/io.openmv.openmvide.desktop $out/share/applications/ + + mkdir -p $out/share/icons + cp -r share/icons/hicolor $out/share/icons/ + + substituteInPlace $out/share/applications/io.openmv.openmvide.desktop \ + --replace "Exec=openmvide" "Exec=$out/bin/openmvide" + + mkdir -p $out/bin + makeWrapper $out/share/openmv-ide/bin/openmvide $out/bin/openmvide \ + --prefix LD_LIBRARY_PATH : "$out/share/openmv-ide/lib:$out/share/openmv-ide/lib/qtcreator:$out/share/openmv-ide/lib/Qt/lib" \ + --add-flags "-user-library-path \"\$LD_LIBRARY_PATH\"" + + runHook postInstall + ''; + + postFixup = '' + addAutoPatchelfSearchPath $out/share/openmv-ide/lib/Qt/lib + addAutoPatchelfSearchPath $out/share/openmv-ide/lib/qtcreator + + # skip embedded third-party toolchains and tools under share/ + autoPatchelf -- \ + $out/share/openmv-ide/bin \ + $out/share/openmv-ide/lib + ''; + + meta = { + description = "QtCreator based IDE for the OpenMV Cam"; + homepage = "https://openmv.io/"; + license = lib.licenses.gpl3Plus; + mainProgram = "openmvide"; + platforms = [ "x86_64-linux" ]; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + }; +}