diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..16aee40 --- /dev/null +++ b/default.nix @@ -0,0 +1,273 @@ +{ + stdenv, + lib, + + fetchurl, + dpkg, + autoPatchelfHook, + wrapQtAppsHook, + + qt3d, + + libSM, + libxxf86vm, + libxv, + libxres, + libxpm, + libxmu, + libxkbfile, + libxinerama, + libxdamage, + libxfixes, + libxcursor, + libxcomposite, + libxaw, + libxt, + libxtst, + libICE, + libfontenc, + libxcb, + libx11, + libxext, + libxrender, + libxrandr, + libxScrnSaver, + libxi, + xcbutil, + xcbutilwm, + xcbutilrenderutil, + xcbutilkeysyms, + xcbutilimage, + libxdmcp, + libxau, + xcb-util-cursor, + libdrm, + libgcc, + util-linux, + llvmPackages, + cups, + libGLU, + tinyxml, + gtk2, +}: + +let + version = "24.1.0.161"; + pkgsList = [ + { + name = "ascon-kompas3d-v24-full"; + hash = "sha256-KhBf0K450J3donQB7OmbHuPUmNREcCWJdFlhi6dkXyo="; + } + { + name = "ascon-kompas3d-v24"; + hash = "sha256-aFJ5OT1ZtT6a9IGURMtIWoHYSCZG4c8SlXNLmyLg6Zc="; + } + { + name = "ascon-kompas-graphic-v24"; + hash = "sha256-5ebowbW/HxnZfnC6uUizBsQKD+NCu9+WgwcGz8Oop4I="; + } + { + name = "ascon-kompas-plugins-v24"; + hash = "sha256-A90aR0AIJDSdu6kXq70g/kIm1w7QUnl/wOOgwwnUdrY="; + } + { + name = "ascon-kompas-nesting-v24"; + hash = "sha256-/LXNk9k2MmDvgnf4eGqrXCGnswdmeDyBvrlAcVMgZY8="; + } + { + name = "ascon-kompas-servicetools-v24"; + hash = "sha256-QiEqVyllq5ahZsE+liUWoCqOqrqL4Tpgc6MXPCeS0fo="; + } + { + name = "ascon-kompas-featurekompas-v24"; + hash = "sha256-zuWsok3h5deOEqJ8Na4ruaKh8rjVPfAN4yj7RlNSiQA="; + } + { + name = "ascon-kompas-sdk-v24"; + hash = "sha256-z0bohENrSBk4LDPK+cC3YkYARxvwdpEJMZdVuf1oAPA="; + } + { + name = "ascon-kompas-libsamples-v24"; + hash = "sha256-wZfda5t8aaH2IlHByZrKa7lDfeqWK483FxQnaoXhARk="; + } + { + name = "ascon-kompas-coupling-v24"; + hash = "sha256-lptq6iZA0Ij09VkvwsIcAqAuJJfSfpn8/Vqn8AaJhtU="; + } + { + name = "ascon-kompas-help-v24"; + hash = "sha256-nmFqmsPx6g0+4ptFnOJ6AtVoSVtZWEGmU88qhQl9XR8="; + } + { + name = "ascon-kompas-checker-v24"; + hash = "sha256-z+huhrrEvgA50G0UJ7Cd7q0pMAJtYoTk2BHyEZepzXU="; + } + { + name = "ascon-kompas-dimchain-v24"; + hash = "sha256-EtY1KLWWFWTogY0QnS/E4x+76FaUohWBk860CJrSuo0="; + } + ]; + + fetchDebs = + package: + fetchurl { + url = "https://repo.ascon.ru/stable/deb/pool/main/a/${package.name}/${package.name}_${version}_amd64.deb"; + hash = package.hash; + }; + + srcs = (map fetchDebs pkgsList) ++ [ + (fetchurl { + url = "https://repo.ascon.ru/stable/deb/pool/main/a/ascon-kompas-common/ascon-kompas-common_1.0.0.3_amd64.deb"; + hash = "sha256-fYGTd2WNrQBSXDvn5g/yHM8WTXkALNsnGPd9dxUNgM4="; + }) + (fetchurl { + url = "https://repo.ascon.ru/stable/deb/pool/main/a/ascon-kompas-fonts/ascon-kompas-fonts_1.0.0.7_amd64.deb"; + hash = "sha256-iQKgDSzyd3fRBcZzl4IbkCn9Z0z+xsCRRhW+lbo9cyo="; + }) + # ascon-kompas3d-viewer-help-v24/ + # ascon-kompas3d-viewer-v24/ + # ascon-kompas3d-viewer-v24-full/ + (fetchurl { + url = "https://repo.ascon.ru/stable/deb/pool/main/a/ascon/ascon-polynom-library-23.3-23.3.0.25101312-amd64.deb"; + hash = "sha256-IIfFSfZ2+HTf0diA7+6BcvGzIgDbwDmUq1ruAqLaB20="; + }) + # ascon-cas-23.3-23.3.0.25092913-amd64.deb + # ascon-commons-23.3-23.3.0.25092914-amd64.deb + # ascon-csc-agent-5.1-5.1.0.43.deb + # ascon-csc-console-5.1-5.1.0.43.deb + # ascon-csc-monitor-5.1-5.1.0.43.deb + # ascon-loodsman-23.3-23.3.1.25101616-amd64.deb + # ascon-loodsman-appserver-23.3-23.3.1.25101616-amd64.deb + # ascon-loodsman-file-archive-service-23.3-23.3.1.25101616-amd64.deb + # ascon-loodsman-load-balancer-23.3-23.3.1.25101616-amd64.deb + # ascon-loodsman-notify-23.3-23.3.1.25101616-amd64.deb + # ascon-polynom-appserver-23.3-23.3.0.25081118-amd64.deb + # ascon-polynom-database-23.3-23.3.0.25080512-amd64.deb + #? ascon-polynom-library-23.3-23.3.0.25101312-amd64.deb + # ascon-polynom-migration-23.3-23.3.0.25081118-amd64.deb + # ascon-polynom-webserver-23.3-23.3.0.25081118-amd64.deb + # main/c/c3dwebservice/ + ]; + +in +stdenv.mkDerivation { + pname = "kompas3d-v24-full"; + inherit version srcs; + + nativeBuildInputs = [ + dpkg + autoPatchelfHook + wrapQtAppsHook + ]; + + autoPatchelfIgnoreMissingDeps = [ + "*.tx" + "*.txv" + "liboless.so" + ]; + + propagatedBuildInputs = [ + gtk2 + libgcc.lib + qt3d + util-linux.lib + cups + libGLU + tinyxml + libdrm + xcb-util-cursor + libSM + libxxf86vm + libxv + libxres + libxpm + libxmu + libxkbfile + libxinerama + libxdamage + libxfixes + libxcursor + libxcomposite + libxaw + libxt + libxtst + libICE + libfontenc + libxcb + libx11 + libxext + libxrender + libxrandr + libxScrnSaver + libxi + xcbutil + xcbutilwm + xcbutilrenderutil + xcbutilkeysyms + xcbutilimage + libxdmcp + libxau + llvmPackages.libcxx + llvmPackages.libunwind + llvmPackages.openmp + # icu #? is needed for dotnet based Bin/Ascon.HelpCall, but idk how to pass it + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,opt,share}/ + cp -R {etc,opt} $out/ + cp -R usr/{bin,share} $out/ + + basepath=$out/opt/ascon/kompas3d-v24 + + ln -s $basepath/Bin/kKompas $out/bin/kompas-v24 + ln -s $basepath/License/kactivation $out/bin/kompas-kactivation-v24 + ln -s $out/opt/ascon/PolynomLibrary $basepath/Libs/PolynomLibrary + + mv $out/share/applications/flystartmenu/kompas3d-24/* $out/share/applications/ + rm -rf $out/share/applications/flystartmenu + substituteInPlace $out/share/applications/* \ + --replace-quiet "/opt/ascon/kompas3d-v24" "$basepath" + substituteInPlace $out/share/applications/*help* \ + --replace-fail "$basepath" "env DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 $basepath" + + examplesfile=$basepath/Bin/UIConfig/Examples.xml + iconv -f UTF-16LE -t UTF-8 $examplesfile -o $examplesfile + substituteInPlace $examplesfile \ + --replace-fail "..\Samples" "$out\opt\ascon\kompas3d-v24\Samples" + iconv -f UTF-8 -t UTF-16LE $examplesfile -o $examplesfile + + runHook postInstall + ''; + + dontBuild = true; + + meta = with lib; { + description = "КОМПАС-3D для машиностроения и приборостроения"; + longDescription = '' + КОМПАС-3D для машиностроения и приборостроения + Данный пакет предназначен для установки КОМПАС-3D для машиностроения и приборостроения в составе: + * КОМПАС-График + * КОМПАС-3D + * Локальная справка для КОМПАС-3D + * Шрифты чертежные + * Средства разработки приложений + * Каталог: Муфты + * Размерные цепи + * Сервисные инструменты + * Проверка документов + * Распознавание 3D-моделей + * Раскрой + * Примеры библиотек фрагментов и моделей + * Стандартные Изделия для КОМПАС + ''; + homepage = "https://ascon.ru/products/kompas-3d/"; + platforms = with platforms; lists.intersectLists x86_64 linux; + license = licenses.unfree; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + maintainers = with maintainers; [ barsikus007 ]; + mainProgram = "kompas-v24"; + }; +}