From c7a6ae86b8bb82827b2afe453eec85738943aaf7 Mon Sep 17 00:00:00 2001 From: brothermechanic Date: Tue, 5 Mar 2024 08:06:32 +0300 Subject: [PATCH 01/25] BPY: rewrite as overlay --- flake.nix | 24 +- .../bpy/blender-fix-boost-1.81-iostream.patch | 10 - .../bpy/blender-fix-desktop.patch | 10 - .../python-modules/bpy/cg-defaults.patch | 84 ------- .../python-modules/bpy/cg_environment.patch | 45 ---- .../python-modules/bpy/default.nix | 213 ------------------ .../development/python-modules/bpy/x112.patch | 46 ---- 7 files changed, 21 insertions(+), 411 deletions(-) delete mode 100644 pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch delete mode 100644 pkgs/development/python-modules/bpy/blender-fix-desktop.patch delete mode 100644 pkgs/development/python-modules/bpy/cg-defaults.patch delete mode 100644 pkgs/development/python-modules/bpy/cg_environment.patch delete mode 100644 pkgs/development/python-modules/bpy/default.nix delete mode 100644 pkgs/development/python-modules/bpy/x112.patch diff --git a/flake.nix b/flake.nix index c26db7c..8b5af3e 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ # robossembler custom packages; defined here for share between devShells and packages cg_preferences = pkgs.fetchgit { url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git"; - sha256 = "sha256-ahEakvluX7vd+OY6zaDeZIFS8WbsTevRzuEXlBu2/fg="; + sha256 = "sha256-/mNNjvrhIxSZVv1/LSJ7+c/dXH3E0Orh5Zr0oVPLquY="; }; rs_logo = pkgs.fetchgit { url = "https://gitlab.com/robossembler/logo.git"; @@ -75,7 +75,7 @@ patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ]; buildInputs = old.buildInputs ++ [ pkgs.imath pkgs.git ]; postPatch = old.postPatch + '' - cp ${cg_preferences}/share/cg_preferences_service.py scripts/startup/ + cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/ cp ${cg_preferences}/share/startup.blend release/datafiles/ cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png ''; @@ -86,7 +86,25 @@ }/scripts/addons/ ''; }); - bpy = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy { }; + bpy = blender.overrideAttrs (old: { + pname = "bpy"; + cmakeFlags = old.cmakeFlags ++ [ + "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_AUDASPACE=OFF" + "-DWITH_PYTHON_MODULE=ON" + "-DWITH_MEM_JEMALLOC=OFF" + "-DWITH_INSTALL_PORTABLE=ON" + ]; + postInstall = '' + mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages + mkdir -p $out/nix-support + mv $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/ + echo ${pkgs.python3} >> $out/nix-support/propagated-build-inputs + ''; + postFixup = '' + buildPythonPath $out/lib/python${pkgs.python3.pythonVersion}/site-packages + ''; + }); pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; pytorch3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pytorch3d { }; mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { }; diff --git a/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch b/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch deleted file mode 100644 index bd2beed..0000000 --- a/pkgs/development/python-modules/bpy/blender-fix-boost-1.81-iostream.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/intern/locale/boost_locale_wrapper.cpp -+++ b/intern/locale/boost_locale_wrapper.cpp -@@ -7,6 +7,7 @@ - - #include - #include -+#include - - #include "boost_locale_wrapper.h" - diff --git a/pkgs/development/python-modules/bpy/blender-fix-desktop.patch b/pkgs/development/python-modules/bpy/blender-fix-desktop.patch deleted file mode 100644 index ed3b101..0000000 --- a/pkgs/development/python-modules/bpy/blender-fix-desktop.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/release/freedesktop/blender.desktop -+++ b/release/freedesktop/blender.desktop -@@ -84,6 +84,6 @@ Icon=blender - Terminal=false - Type=Application - PrefersNonDefaultGPU=true --X-KDE-RunOnDiscreteGpu=true -+X-PreferRunOnDiscreteGPU=true - Categories=Graphics;3DGraphics; - MimeType=application/x-blender; diff --git a/pkgs/development/python-modules/bpy/cg-defaults.patch b/pkgs/development/python-modules/bpy/cg-defaults.patch deleted file mode 100644 index 54439ea..0000000 --- a/pkgs/development/python-modules/bpy/cg-defaults.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff -Naur a/source/blender/makesdna/DNA_modifier_defaults.h b/source/blender/makesdna/DNA_modifier_defaults.h ---- a/source/blender/makesdna/DNA_modifier_defaults.h 2020-12-24 20:07:32.000000000 +0300 -+++ b/source/blender/makesdna/DNA_modifier_defaults.h 2020-12-28 00:11:53.397550988 +0300 -@@ -43,7 +43,7 @@ - .length = 0.0f, \ - .merge_dist = 0.01f, \ - .fit_type = MOD_ARR_FIXEDCOUNT, \ -- .offset_type = MOD_ARR_OFF_RELATIVE, \ -+ .offset_type = MOD_ARR_OFF_CONST, \ - .flags = 0, \ - .count = 2, \ - .uv_offset = {0.0f, 0.0f}, \ -@@ -51,8 +51,8 @@ - - #define _DNA_DEFAULT_BevelModifierData \ - { \ -- .value = 0.1f, \ -- .res = 1, \ -+ .value = 0.01f, \ -+ .res = 2, \ - .flags = 0, \ - .val_flags = MOD_BEVEL_AMT_OFFSET, \ - .profile_type = MOD_BEVEL_PROFILE_SUPERELLIPSE, \ -@@ -93,7 +93,7 @@ - #define _DNA_DEFAULT_CastModifierData \ - { \ - .object = NULL, \ -- .fac = 0.5f, \ -+ .fac = 1.0f, \ - .radius = 0.0f, \ - .size = 0.0f, \ - .defgrp_name = "", \ -@@ -259,7 +259,7 @@ - - #define _DNA_DEFAULT_DecimateModifierData \ - { \ -- .percent = 1.0f, \ -+ .percent = 0.1f, \ - .iter = 0, \ - .delimit = 0, \ - .symmetry_axis = 0, \ -@@ -567,7 +567,7 @@ - .vgroup_name = "", \ - .factor = DEG2RADF(45.0f), \ - .limit = {0.0f, 1.0f}, \ -- .mode = MOD_SIMPLEDEFORM_MODE_TWIST, \ -+ .mode = MOD_SIMPLEDEFORM_MODE_BEND, \ - .axis = 0, \ - .deform_axis = 0, \ - .flag = 0, \ -@@ -608,7 +608,7 @@ - .crease_inner = 0.0f, \ - .crease_outer = 0.0f, \ - .crease_rim = 0.0f, \ -- .flag = MOD_SOLIDIFY_RIM, \ -+ .flag = MOD_SOLIDIFY_RIM | MOD_SOLIDIFY_EVEN, \ - .mat_ofs = 0, \ - .mat_ofs_rim = 0, \ - .merge_tolerance = 0.0001f, \ -@@ -619,7 +619,7 @@ - .subdivType = 0, \ - .levels = 1, \ - .renderLevels = 2, \ -- .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges, \ -+ .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges | eSubsurfModifierFlag_UseRecursiveSubdivision, \ - .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \ - .quality = 3, \ - .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \ -diff -Naur a/source/blender/makesdna/DNA_view3d_defaults.h b/source/blender/makesdna/DNA_view3d_defaults.h ---- a/source/blender/makesdna/DNA_view3d_defaults.h 2020-12-24 20:07:32.000000000 +0300 -+++ b/source/blender/makesdna/DNA_view3d_defaults.h 2020-12-27 22:52:32.467466785 +0300 -@@ -94,9 +94,9 @@ - .flag = V3D_SELECT_OUTLINE, \ - .flag2 = V3D_SHOW_RECONSTRUCTION | V3D_SHOW_ANNOTATION, \ - \ -- .lens = 50.0f, \ -- .clip_start = 0.01f, \ -- .clip_end = 1000.0f, \ -+ .lens = 85.0f, \ -+ .clip_start = 0.001f, \ -+ .clip_end = 100.0f, \ - \ - .bundle_size = 0.2f, \ - .bundle_drawtype = OB_PLAINAXES, \ diff --git a/pkgs/development/python-modules/bpy/cg_environment.patch b/pkgs/development/python-modules/bpy/cg_environment.patch deleted file mode 100644 index a2ac741..0000000 --- a/pkgs/development/python-modules/bpy/cg_environment.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- /dev/null 2023-08-11 22:07:27.012000310 +0300 -+++ b/scripts/startup/cg_environment.py 2023-08-11 00:44:51.704718595 +0300 -@@ -0,0 +1,42 @@ -+#!/usr/bin/python3 -+# -*- coding: utf-8 -*- -+# Copyright (C) 2023 Ilia Kurochkin -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+__doc__ = 'Environment for use CG Overlay' -+__version__ = '0.1' -+ -+import bpy -+from bpy.app.handlers import persistent -+import addon_utils -+ -+ -+@persistent -+def cg_env(dummy): -+ '''Scripts environment''' -+ addon_utils.enable('cg_preferences', default_set=True) -+ -+ print('CG Environment activated!') -+ -+ -+def register(): -+ '''register blender module''' -+ bpy.app.handlers.load_post.append(cg_env) -+ -+ -+def unregister(): -+ '''unregister blender module''' -+ bpy.app.handlers.load_post.remove(cg_env) -+ -+ -+if __name__ == '__main__': -+ register() diff --git a/pkgs/development/python-modules/bpy/default.nix b/pkgs/development/python-modules/bpy/default.nix deleted file mode 100644 index f04d187..0000000 --- a/pkgs/development/python-modules/bpy/default.nix +++ /dev/null @@ -1,213 +0,0 @@ -# TODO WITH_CYCLES_OSL -# TODO WITH_NANOVDB -# TODO WITH_CLANG -{ config, stdenv, lib, fetchurl, fetchzip, fetchgit, makeWrapper, cmake, git-lfs -, boost, ocl-icd, gettext, zlib, zstd, pugixml, llvmPackages, clang -, libepoxy, libXi, libX11, libXext, libXrender, libXxf86vm -, libGLU, libGL, glew, addOpenGLRunpath, freeglut -, openimageio, opencolorio, openexr, ilmbase, libjpeg, libpng, libtiff, libwebp, potrace -, embree, gmp, openvdb, tbb, openimagedenoise, opensubdiv, freetype, libharu, brotli -, ffmpeg, fftw, libsndfile -, python310Packages, buildPythonPackage, fetchPypi, pkgs, lzma, freecad -, cudaSupport ? config.cudaSupport or false, cudaPackages ? { } -, hipSupport ? false, hip # comes with a significantly larger closure size -, colladaSupport ? true, opencollada -, waylandSupport ? stdenv.isLinux, pkg-config, wayland, wayland-protocols, libffi, libdecor, libxkbcommon, dbus -}: - -let - python = python310Packages.python; - optix = fetchzip { - # url taken from the archlinux blender PKGBUILD - url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip"; - sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY="; - }; - cg_preferences = fetchgit { - url = "https://gitlab.com/brothermechanic/cg_preferences.git"; - rev = "db192525ff41dfae4c063dc914a2c3fe5850d480"; - sha256 = "sha256-+eLWdokH/5odzOTykgrmG36U8h+Wf8YGOxe1oIy4dJo="; - fetchLFS = true; - }; - - -in -stdenv.mkDerivation rec { - pname = "bpy"; - version = "3.6.1"; - - src = fetchurl { - url = "https://download.blender.org/source/blender-${version}.tar.xz"; - hash = "sha256-JJF+cbyya0kAJXBU2do4tiMWx0J9cyNTO0HKmztFrE0="; - }; - - patches = [ - ./cg-defaults.patch - ./x112.patch - ./blender-fix-desktop.patch - ./blender-fix-boost-1.81-iostream.patch - ]; - - nativeBuildInputs = - [ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev - ] - ++ lib.optionals cudaSupport [ addOpenGLRunpath ] - ++ lib.optionals waylandSupport [ pkg-config ]; - buildInputs = - [ boost ffmpeg gettext glew ilmbase - freetype libjpeg libpng libsndfile libtiff libwebp - opencolorio openexr openimageio python zlib pkgs.zstd.dev fftw - (opensubdiv.override { inherit cudaSupport; }) - tbb - gmp - pugixml - potrace - libharu - brotli - libepoxy - lzma - optix - ] - ++ lib.optionals waylandSupport [ - wayland wayland-protocols libffi libdecor libxkbcommon dbus - ] - ++ lib.optionals (!stdenv.isAarch64) [ - openimagedenoise - embree - ] - ++ (if (!stdenv.isDarwin) then [ - libXi libX11 libXext libXrender - libGLU libGL - libXxf86vm - # OpenVDB currently doesn't build on darwin - openvdb - ] - else [ - llvmPackages.openmp clang - ]) - ++ lib.optional cudaSupport cudaPackages.cudatoolkit - ++ lib.optional colladaSupport opencollada - ; - pythonPath = with python310Packages; [ numpy requests ]; - - postPatch = '' - cp ${cg_preferences}/startup.blend release/datafiles/ - '' + - (if stdenv.isDarwin then '' - : > build_files/cmake/platform/platform_apple_xcode.cmake - substituteInPlace source/creator/CMakeLists.txt \ - --replace '${"$"}{LIBDIR}/python' \ - '${python}' - substituteInPlace build_files/cmake/platform/platform_apple.cmake \ - --replace '${"$"}{LIBDIR}/python' \ - '${python}' \ - --replace '${"$"}{LIBDIR}/opencollada' \ - '${opencollada}' \ - --replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \ - '${python310Packages.numpy}/${python.sitePackages}/numpy' - '' else '' - substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"' - '') + - (lib.optionalString hipSupport '' - substituteInPlace extern/hipew/src/hipew.c --replace '"/opt/rocm/hip/lib/libamdhip64.so"' '"${hip}/lib/libamdhip64.so"' - substituteInPlace extern/hipew/src/hipew.c --replace '"opt/rocm/hip/bin"' '"${hip}/bin"' - ''); - - cmakeFlags = - [ - "-DWITH_PYTHON_INSTALL=OFF" - "-DWITH_AUDASPACE=OFF" - "-DWITH_PYTHON_MODULE=ON" - "-DWITH_MEM_JEMALLOC=OFF" - "-DWITH_INSTALL_PORTABLE=ON" - #___________ - "-DPYTHON_LIBPATH=${python}/lib" - "-DPYTHON_VERSION=${python.pythonVersion}" - "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}" - "-DPYTHON_LIBRARY=${python.libPrefix}" - "-DWITH_PYTHON_INSTALL_NUMPY=OFF" - "-DPYTHON_NUMPY_PATH=${python310Packages.numpy}/${python.sitePackages}" - "-DPYTHON_NUMPY_INCLUDE_DIRS=${python310Packages.numpy}/${python.sitePackages}/numpy/core/include" - "-DWITH_PYTHON_INSTALL_REQUESTS=OFF" - "-DWITH_ALEMBIC=OFF" - "-DWITH_OPENVDB=ON" - "-DWITH_NANOVDB=ON" - "-DWITH_IMAGE_OPENJPEG=OFF" - "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" - "-DWITH_OPENAL=OFF" - "-DWITH_SDL=OFF" - "-DWITH_PULSEAUDIO=OFF" - "-DWITH_JACK=OFF" - "-DWITH_OPENMP=ON" - "-DWITH_OPENCOLORIO=ON" - "-DWITH_OPENSUBDIV=ON" - "-DWITH_TBB=ON" - "-DWITH_USD=OFF" - "-DWITH_XR_OPENXR=OFF" - "-DWITH_NINJA_POOL_JOBS=OFF" - "-DBUILD_SHARED_LIBS=OFF" - "-DWITH_BUILDINFO=OFF" - "-DWITH_HYDRA=OFF" - "-DWITH_MATERIALX=OFF" - "-DWITH_LINKER_LLD=ON" - "-DWITH_LIBS_PRECOMPILED=OFF" - "-DWITH_INTERNATIONAL=ON" - ] - ++ lib.optionals stdenv.hostPlatform.isAarch64 [ - "-DWITH_CYCLES_EMBREE=OFF" - ] - ++ lib.optionals stdenv.isDarwin [ - "-DWITH_CYCLES_OSL=OFF" # requires LLVM - "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin - "-DLIBDIR=/does-not-exist" - ] - ++ lib.optionals cudaSupport [ - "-DWITH_CYCLES_CUDA_BINARIES=ON" - "-DCUDA_NVCC_FLAGS=-std=c++14" - "-DWITH_CYCLES_DEVICE_OPTIX=ON" - "-DOPTIX_INCLUDE_DIR=${optix}" - ] - # Clang doesn't support "-export-dynamic" - ++ lib.optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" - ++ lib.optionals waylandSupport [ - "-DWITH_GHOST_WAYLAND=ON" - "-DWITH_GHOST_WAYLAND_DBUS=ON" - "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF" - "-DWITH_GHOST_WAYLAND_LIBDECOR=ON" - ]; - - env.NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}"; - - # Since some dependencies are built with gcc 6, we need gcc 6's - # libstdc++ in our RPATH. Sigh. - NIX_LDFLAGS = lib.optionalString cudaSupport "-rpath ${stdenv.cc.cc.lib}/lib"; - - postInstall = '' - mkdir -p $out/lib/python3.10/site-packages - mkdir -p $out/nix-support - mv $out/bpy $out/lib/python3.10/site-packages/ - echo ${python} >> $out/nix-support/propagated-build-inputs - '' + '' - mkdir $out/lib/python3.10/site-packages/bpy/3.6/scripts/addons/cg_preferences - cp -r ${cg_preferences}/* $out/lib/python3.10/site-packages/bpy/3.6/scripts/addons/cg_preferences/ - ''; - # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be - # found. See the explanation in libglvnd. - postFixup = '' - buildPythonPath $out/lib/python3.10/site-packages - ''; - - passthru = { inherit python; }; - - meta = with lib; { - description = "3D Creation/Animation/Publishing System module"; - homepage = "https://www.blender.org"; - # They comment two licenses: GPLv2 and Blender License, but they - # say: "We've decided to cancel the BL offering for an indefinite period." - # OptiX, enabled with cudaSupport, is non-free. - license = with licenses; [ gpl2Plus ] ++ optional cudaSupport unfree; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ]; - broken = stdenv.isDarwin; - maintainers = with maintainers; [ goibhniu veprbl brothermechanic ]; - mainProgram = "bpy"; - }; -} diff --git a/pkgs/development/python-modules/bpy/x112.patch b/pkgs/development/python-modules/bpy/x112.patch deleted file mode 100644 index 791591b..0000000 --- a/pkgs/development/python-modules/bpy/x112.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/intern/ghost/CMakeLists.txt -+++ b/intern/ghost/CMakeLists.txt -@@ -183,6 +183,13 @@ - ${X11_X11_INCLUDE_PATH} - ) - -+ list(APPEND LIB -+ ${X11_X11_LIB} -+ -lXext -+ -lXxf86vm -+ ${X11_Xrender_LIB} -+ ) -+ - list(APPEND SRC - intern/GHOST_DisplayManagerX11.cpp - intern/GHOST_SystemX11.cpp -@@ -234,6 +241,9 @@ - list(APPEND INC_SYS - ${X11_xf86vmode_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xf86vmode_LIB} -+ ) - endif() - - if(WITH_X11_XFIXES) -@@ -241,6 +251,9 @@ - list(APPEND INC_SYS - ${X11_Xfixes_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xfixes_LIB} -+ ) - endif() - - if(WITH_X11_ALPHA) -@@ -252,6 +265,9 @@ - list(APPEND INC_SYS - ${X11_Xinput_INCLUDE_PATH} - ) -+ list(APPEND LIB -+ ${X11_Xinput_LIB} -+ ) - endif() - - add_definitions(-DWITH_GHOST_X11) From 5b8cd6e4adead93c20d9d51d94fa73eb448d267f Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Tue, 5 Mar 2024 12:35:44 +0300 Subject: [PATCH 02/25] Update nixpkgs input --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 37d354f..29ebfbd 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1695298503, - "narHash": "sha256-eDuN/+479v5gfVqwmJRYVX/Skh+TYSifAXdJ9xMqiP4=", + "lastModified": 1709626223, + "narHash": "sha256-5y1aC4PQGWIPF6ndHvFjZX0zvJ/U1QmupVuxsDqZ2C0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b1370f72c01cee73c8648baf158453d60f3127e2", + "rev": "c44c76a75d8a9b83458d222f532a8c23b031d239", "type": "github" }, "original": { From 3ae3ee190ce1e9a40941c3c89aabf96122f3ab32 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Tue, 5 Mar 2024 14:25:41 +0300 Subject: [PATCH 03/25] remove python from all packages devshell --- flake.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 8b5af3e..c881621 100644 --- a/flake.nix +++ b/flake.nix @@ -174,7 +174,7 @@ }; devShells.all = pkgs.mkShell { - packages = [ mayo blender bpy pysdf fstl ]; + packages = [ blender fstl mayo ]; }; devShells.perception = @@ -194,7 +194,6 @@ devShells.default = let my-python-packages = p: with p; [ - pysdf unified-planning pybullet scipy From 3fd5b354c6ba603ed4b6d03a0725f34f7ac73b39 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Tue, 5 Mar 2024 20:08:32 +0300 Subject: [PATCH 04/25] bpy returned to packages --- flake.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index c881621..0806b96 100644 --- a/flake.nix +++ b/flake.nix @@ -129,8 +129,7 @@ }; packages = { - inherit mayo pysdf fstl unified-planning test-script blender; - zoz = pkgs.btop; + inherit mayo pysdf fstl unified-planning test-script blender bpy; }; devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; From 5bb350b79c648ed6feb8f1d0ae264fac9f6844b8 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 22 Mar 2024 17:03:50 +0300 Subject: [PATCH 05/25] Add cudaSupport to blender --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 0806b96..a417501 100644 --- a/flake.nix +++ b/flake.nix @@ -62,7 +62,7 @@ }; blender' = pkgs.blender.override { python310Packages = pkgs.python311Packages; - cudaSupport = false; + cudaSupport = true; spaceNavSupport = false; waylandSupport = false; }; From 053bfcc1e05f07dba76c151b6edca7958b9511ad Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 25 Mar 2024 10:16:13 +0000 Subject: [PATCH 06/25] Allow Unfree for CUDA --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1a2f7b0..fec6fc1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,6 +10,7 @@ default: before_script: - mkdir -p /etc/nix - echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf + - export NIXPKGS_ALLOW_UNFREE=1 - cachix use "$CACHIX_CACHE_NAME" general-packages: @@ -17,7 +18,7 @@ general-packages: inherit: default: [before_script, image] script: - - cachix watch-exec robossembler -- nix develop .#all -c echo "General Packages is BUILT" + - cachix watch-exec robossembler -- nix develop .#all --impure -c echo "General Packages is BUILT" ros-packages: stage: build @@ -31,4 +32,4 @@ perception-packages: inherit: default: [before_script, image] script: - - cachix watch-exec robossembler -- nix develop .#perception -c echo "PERCEPTION packages is BUILT" + - cachix watch-exec robossembler -- nix develop .#perception --impure -c echo "PERCEPTION packages is BUILT" From a082f90c9156b6a84a435508a8260252ceed7d46 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Thu, 28 Mar 2024 10:08:27 +0300 Subject: [PATCH 07/25] mayo: 0.6.0 -> 0.8.0 --- pkgs/misc/mayo/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/mayo/default.nix b/pkgs/misc/mayo/default.nix index 912277b..098561a 100644 --- a/pkgs/misc/mayo/default.nix +++ b/pkgs/misc/mayo/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "mayo"; - version = "0.6.0"; + version = "0.8.0"; src = fetchFromGitHub { owner = "fougue"; repo = "mayo"; rev = "v${version}"; - hash = "sha256-seRk02jYiABjoO35AG47ioCByBIdLibJ4QHLeXW8cXQ="; + hash = "sha256-/MavLqC3BBRmlqMZIhKEYJPTV6pvLKlCNMXGJ6vnmUg="; }; buildInputs = [ qtbase opencascade-occt ]; From cf98f8aae79197a17e77abf4da97ce3f7b0f01e5 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 5 Apr 2024 12:09:22 +0300 Subject: [PATCH 08/25] flake.lock update --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 29ebfbd..4c7879f 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709626223, - "narHash": "sha256-5y1aC4PQGWIPF6ndHvFjZX0zvJ/U1QmupVuxsDqZ2C0=", + "lastModified": 1712307699, + "narHash": "sha256-/PzHcPvBvJeZTY9JCEtbNljYLecwggveHQ2oHPlTycA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c44c76a75d8a9b83458d222f532a8c23b031d239", + "rev": "3541c7628de9414f999ced044c95a284584f4ec1", "type": "github" }, "original": { @@ -36,11 +36,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1691006197, - "narHash": "sha256-DbtxVWPt+ZP5W0Usg7jAyTomIM//c3Jtfa59Ht7AV8s=", + "lastModified": 1707268954, + "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", "owner": "lopsided98", "repo": "nixpkgs", - "rev": "66aedfd010204949cb225cf749be08cb13ce1813", + "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", "type": "github" }, "original": { @@ -66,11 +66,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1694916346, - "narHash": "sha256-3Fb5sRqFhpIVCK8hH0dtRNyJHV7zvVavZEbTGZWNy4g=", + "lastModified": 1711215320, + "narHash": "sha256-dIjE3NR/sTED8uOLUzqSgj+OaRDQuZK6d9U1EAWamx4=", "owner": "lopsided98", "repo": "nix-ros-overlay", - "rev": "148dc07305802c41369839fb2d4d5291571ddb69", + "rev": "1b9585ae8f529b2b392203f2dda6fb96311621a9", "type": "github" }, "original": { From 1c1d90e53b30dbe88dcbea99b49fd462d92bc4df Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 5 Apr 2024 12:16:53 +0300 Subject: [PATCH 09/25] Remove python packages override in blender --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index a417501..ec1aaca 100644 --- a/flake.nix +++ b/flake.nix @@ -61,7 +61,6 @@ fetchLFS = true; }; blender' = pkgs.blender.override { - python310Packages = pkgs.python311Packages; cudaSupport = true; spaceNavSupport = false; waylandSupport = false; From b697e5df03dfcf066477b729bf232cfd84f0c1f5 Mon Sep 17 00:00:00 2001 From: brothermechanic Date: Mon, 8 Apr 2024 09:12:18 +0300 Subject: [PATCH 10/25] bpy: pkg source name WIP --- flake.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/flake.nix b/flake.nix index ec1aaca..b40a9e1 100644 --- a/flake.nix +++ b/flake.nix @@ -87,6 +87,12 @@ }); bpy = blender.overrideAttrs (old: { pname = "bpy"; + version = "4.1.0"; + src = pkgs.fetchurl { + # url = "https://download.blender.org/source/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; + url = "https://download.blender.org/source/blender-4.1.0.tar.xz"; + hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; + }; cmakeFlags = old.cmakeFlags ++ [ "-DWITH_PYTHON_INSTALL=OFF" "-DWITH_AUDASPACE=OFF" From 927f6f8eab2fc320f2b1d0c442dac2a64364e326 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 8 Apr 2024 10:54:56 +0300 Subject: [PATCH 11/25] src & version from blender --- flake.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index b40a9e1..22a85e8 100644 --- a/flake.nix +++ b/flake.nix @@ -87,10 +87,8 @@ }); bpy = blender.overrideAttrs (old: { pname = "bpy"; - version = "4.1.0"; src = pkgs.fetchurl { - # url = "https://download.blender.org/source/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; - url = "https://download.blender.org/source/blender-4.1.0.tar.xz"; + url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz"; hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; }; cmakeFlags = old.cmakeFlags ++ [ From 4687ec3b24e19d1cef2b634d6705f73b0718fc92 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 8 Apr 2024 11:29:08 +0300 Subject: [PATCH 12/25] Temporary remove pytorch3d --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index 22a85e8..79bb37a 100644 --- a/flake.nix +++ b/flake.nix @@ -182,7 +182,6 @@ devShells.perception = let rbs-packages = p: with p; [ - pytorch3d torch torchvision torchaudio From 9e3b9e97d7be81767d98fdd465ee47e0a0b32477 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 12 Apr 2024 20:29:16 +0300 Subject: [PATCH 13/25] rcg_pipeline: init at 1.0.0 --- flake.nix | 6 ++- .../python-modules/bpy-wheel/default.nix | 31 +++++++++++++ .../python-modules/rcg-pipeline/default.nix | 45 +++++++++++++++++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/python-modules/bpy-wheel/default.nix create mode 100644 pkgs/development/python-modules/rcg-pipeline/default.nix diff --git a/flake.nix b/flake.nix index 79bb37a..5e8e25a 100644 --- a/flake.nix +++ b/flake.nix @@ -108,6 +108,7 @@ buildPythonPath $out/lib/python${pkgs.python3.pythonVersion}/site-packages ''; }); + bpy-wheel = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy-wheel { }; pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; pytorch3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pytorch3d { }; mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { }; @@ -120,6 +121,7 @@ ansitable = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/ansitable { }; megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; + rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { inherit bpy-wheel; }; in { inherit pkgs; @@ -132,7 +134,7 @@ }; packages = { - inherit mayo pysdf fstl unified-planning test-script blender bpy; + inherit mayo pysdf fstl unified-planning test-script blender bpy bpy-wheel rcg-pipeline; }; devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; @@ -199,7 +201,7 @@ pybullet scipy spatialmath - bpy + rcg-pipeline ]; in pkgs.mkShell { diff --git a/pkgs/development/python-modules/bpy-wheel/default.nix b/pkgs/development/python-modules/bpy-wheel/default.nix new file mode 100644 index 0000000..5b2f05e --- /dev/null +++ b/pkgs/development/python-modules/bpy-wheel/default.nix @@ -0,0 +1,31 @@ +{ buildPythonPackage, fetchPypi, python3Packages, lib, autoPatchelfHook, blender, pythonImportsCheckHook, config, cudaSupport ? config.cudaSupport }: +buildPythonPackage rec { + format = "wheel"; + pname = "bpy"; + version = "4.1.0"; + + src = fetchPypi rec { + inherit pname version format; + sha256 = "sha256-bGOlo3NvYMdbXw0UaKGkP7gRVdilKHdwfPtoAF27dLQ="; + dist = python; + python = "cp311"; + abi = "cp311"; + platform = "manylinux_2_28_x86_64"; + }; + propagatedBuildInputs = with python3Packages; [ requests numpy cython zstandard ]; + buildInputs = blender.buildInputs; + nativeBuildInputs = [ autoPatchelfHook pythonImportsCheckHook ]; + autoPatchelfIgnoreMissingDeps = true; + pythonImportsCheck = [ "bpy" ]; + + meta = with lib; { + description = "3D Creation/Animation/Publishing System"; + homepage = "https://www.blender.org"; + # They comment two licenses: GPLv2 and Blender License, but they + # say: "We've decided to cancel the BL offering for an indefinite period." + # OptiX, enabled with cudaSupport, is non-free. + license = with licenses; [ gpl2Plus ] ++ optional cudaSupport unfree; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ brothermechanic ]; + }; +} diff --git a/pkgs/development/python-modules/rcg-pipeline/default.nix b/pkgs/development/python-modules/rcg-pipeline/default.nix new file mode 100644 index 0000000..b62d747 --- /dev/null +++ b/pkgs/development/python-modules/rcg-pipeline/default.nix @@ -0,0 +1,45 @@ +{ buildPythonPackage +, fetchgit +, python3Packages +, lib +, autoPatchelfHook +, pythonImportsCheckHook +, config +, cudaSupport ? config.cudaSupport +, numpy +, setuptools +, bpy-wheel +, ... }: + +buildPythonPackage rec { + name = "rcg_pipeline"; + version = "1.0.0"; + format = "pyproject"; + + # src = /home/movefasta/Documents/robossembler/framework; + + src = fetchgit { + url = "https://gitlab.com/robossembler/framework"; + hash = "sha256-iLPphGbIGf7IRdedBSC2yJ2M3ttsHATvtOLot/04AZU="; + rev = "8268db0dec793bfa42d4fcba24c7d442938b7a25"; + }; + sourceRoot = "${src.name}/rcg_pipeline"; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + numpy + bpy-wheel + ]; + + pythonImportsCheck = [ "rcg_pipeline" ]; + + meta = with lib; { + description = "Robossembler CG Pipeline Python Module"; + homepage = "https://gitlab.com/robossembler/framework/rcg_pipeline"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; +} From dd6fe64af1d765a3f9b9a40ff0503b39fa3104d3 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 15 Apr 2024 10:50:21 +0300 Subject: [PATCH 14/25] Add gazebo overlay --- .gitlab-ci.yml | 5 +++ flake.lock | 84 +++++++++++++++++++++++++++++++++++++++++++++++--- flake.nix | 19 ++++++++++-- 3 files changed, 101 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fec6fc1..4dd37f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,6 +18,11 @@ general-packages: inherit: default: [before_script, image] script: + # Gazebo security freeimage-unstable-2021-11-01’ is marked as insecure + # /nix/store/28gcncrir6wd8n6n762y92lbm632cxcy-gazebo-sim + # └───/nix/store/bw3nx4nrvwbnj9b6hdg4p0iyxnakqca8-gz-common5-5.4.2 + # └───/nix/store/hwr0f25hiqv1pjnqyg0sp1gv9grb198b-freeimage-unstable-2021-11-01 + - export NIXPKGS_ALLOW_INSECURE=1 - cachix watch-exec robossembler -- nix develop .#all --impure -c echo "General Packages is BUILT" ros-packages: diff --git a/flake.lock b/flake.lock index 4c7879f..ed81be7 100644 --- a/flake.lock +++ b/flake.lock @@ -1,6 +1,21 @@ { "nodes": { "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": "systems" }, @@ -18,7 +33,67 @@ "type": "github" } }, + "gazebo": { + "inputs": { + "flake-utils": [ + "ros-flake", + "flake-utils" + ], + "nixgl": "nixgl", + "nixpkgs": [ + "ros-flake", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711612492, + "narHash": "sha256-QEz9HZCth8kxz8nrqZ9/hhomAfSW6E0ngmoIb00NXQ8=", + "owner": "movefasta", + "repo": "gazebo-sim-overlay", + "rev": "4f1c3c115b55795ec7d7af43d0b16f7ef18dcc44", + "type": "github" + }, + "original": { + "owner": "movefasta", + "repo": "gazebo-sim-overlay", + "type": "github" + } + }, + "nixgl": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1685908677, + "narHash": "sha256-E4zUPEUFyVWjVm45zICaHRpfGepfkE9Z2OECV9HXfA4=", + "owner": "guibou", + "repo": "nixGL", + "rev": "489d6b095ab9d289fe11af0219a9ff00fe87c7c5", + "type": "github" + }, + "original": { + "owner": "guibou", + "repo": "nixGL", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1660551188, + "narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1712307699, "narHash": "sha256-/PzHcPvBvJeZTY9JCEtbNljYLecwggveHQ2oHPlTycA=", @@ -34,7 +109,7 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1707268954, "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", @@ -56,14 +131,15 @@ "ros-flake", "flake-utils" ], - "nixpkgs": "nixpkgs", + "gazebo": "gazebo", + "nixpkgs": "nixpkgs_2", "ros-flake": "ros-flake" } }, "ros-flake": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_2" + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1711215320, diff --git a/flake.nix b/flake.nix index 5e8e25a..dd15bcd 100644 --- a/flake.nix +++ b/flake.nix @@ -4,15 +4,26 @@ nixpkgs.url = "github:NixOS/nixpkgs?ref=master"; flake-utils.follows = "ros-flake/flake-utils"; ros-flake.url = "github:lopsided98/nix-ros-overlay?ref=develop"; + gazebo = { + url = "github:movefasta/gazebo-sim-overlay"; + inputs.flake-utils.follows = "ros-flake/flake-utils"; + inputs.nixpkgs.follows = "ros-flake/nixpkgs"; + + # Transitive inputs "not in registry" https://github.com/NixOS/nix/issues/5790 + # inputs.nixgl.inputs.nixpkgs.follows = "ros-flake/nixpkgs"; + # inputs.nixgl.inputs.flake-utils.follows = "ros-flake/flake-utils"; + }; }; - outputs = { self, nixpkgs, ros-flake, flake-utils }: + outputs = { self, nixpkgs, ros-flake, gazebo, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}.extend overlay; + # pkgs = nixpkgs.legacyPackages.${system}.extend overlay; ros = ros-flake.legacyPackages.${system}; + pkgs = import nixpkgs { inherit system; overlays = [ overlay gazebo.overlays.default ]; }; + overlay = final: prev: { # -- PLACEHOLDER for overlay # freecad = prev.freecad.overrideAttrs @@ -139,6 +150,8 @@ devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; + devShells.gazebo = gazebo.devShells.${system}.default; + devShells.ros = pkgs.mkShell { buildInputs = (with humble-overrided; [ @@ -173,7 +186,7 @@ image-transport cv-bridge example-interfaces - ]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat ]); + ]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat gazebo_sim ]); RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; }; From d203eabcdb1661d86c9feae39f47ce8ab710206f Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 15 Apr 2024 08:08:41 +0000 Subject: [PATCH 15/25] --impure flag at ros dev env --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4dd37f2..b38aac1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ ros-packages: inherit: default: [before_script, image] script: - - cachix watch-exec robossembler -- nix develop .#ros -c echo "ROS environment is BUILT" + - cachix watch-exec robossembler -- nix develop .#ros --impure -c echo "ROS environment is BUILT" perception-packages: stage: build From f7384cc0756904924ed5ede2f2eb0ca289d7b0f7 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 15 Apr 2024 08:27:04 +0000 Subject: [PATCH 16/25] fix ROS dev env --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b38aac1..d7274a9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,11 +18,6 @@ general-packages: inherit: default: [before_script, image] script: - # Gazebo security freeimage-unstable-2021-11-01’ is marked as insecure - # /nix/store/28gcncrir6wd8n6n762y92lbm632cxcy-gazebo-sim - # └───/nix/store/bw3nx4nrvwbnj9b6hdg4p0iyxnakqca8-gz-common5-5.4.2 - # └───/nix/store/hwr0f25hiqv1pjnqyg0sp1gv9grb198b-freeimage-unstable-2021-11-01 - - export NIXPKGS_ALLOW_INSECURE=1 - cachix watch-exec robossembler -- nix develop .#all --impure -c echo "General Packages is BUILT" ros-packages: @@ -30,6 +25,11 @@ ros-packages: inherit: default: [before_script, image] script: + # Gazebo security freeimage-unstable-2021-11-01’ is marked as insecure + # /nix/store/28gcncrir6wd8n6n762y92lbm632cxcy-gazebo-sim + # └───/nix/store/bw3nx4nrvwbnj9b6hdg4p0iyxnakqca8-gz-common5-5.4.2 + # └───/nix/store/hwr0f25hiqv1pjnqyg0sp1gv9grb198b-freeimage-unstable-2021-11-01 + - export NIXPKGS_ALLOW_INSECURE=1 - cachix watch-exec robossembler -- nix develop .#ros --impure -c echo "ROS environment is BUILT" perception-packages: From 47eeaa60675710ebc8b6b5780a1ffe25ae0419a3 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 19 Apr 2024 19:42:36 +0300 Subject: [PATCH 17/25] FreeCAD Robossembler Workbench as python module --- flake.nix | 2 + .../freecad.robossembler/default.nix | 38 +++++++++++++++++++ .../python-modules/rcg-pipeline/default.nix | 6 +-- 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/python-modules/freecad.robossembler/default.nix diff --git a/flake.nix b/flake.nix index dd15bcd..15ac36c 100644 --- a/flake.nix +++ b/flake.nix @@ -133,6 +133,7 @@ megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { inherit bpy-wheel; }; + rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { }; in { inherit pkgs; @@ -215,6 +216,7 @@ scipy spatialmath rcg-pipeline + rbs-workbench ]; in pkgs.mkShell { diff --git a/pkgs/development/python-modules/freecad.robossembler/default.nix b/pkgs/development/python-modules/freecad.robossembler/default.nix new file mode 100644 index 0000000..95b721d --- /dev/null +++ b/pkgs/development/python-modules/freecad.robossembler/default.nix @@ -0,0 +1,38 @@ +{ buildPythonPackage +, fetchgit +, python3Packages +, lib +, autoPatchelfHook +, pythonImportsCheckHook +, config +, setuptools +, ... }: + +buildPythonPackage rec { + name = "rbs-workbench"; + version = "1.0.0"; + format = "setuptools"; + + src = fetchgit { + url = "https://gitlab.com/robossembler/framework"; + hash = "sha256-N9xFVU4+GbuRR5saMkK7GjKPqKjk2LjcTFWqVhhJ0bs="; + rev = "946e83fd159f9ed234b70923df657bc5120cc62f"; + }; + sourceRoot = "${src.name}/freecad_workbench"; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + ]; + + pythonImportsCheck = [ "freecad.robossembler" ]; + + meta = with lib; { + description = "Robossembler CG Pipeline Python Module"; + homepage = "https://gitlab.com/robossembler/framework/rcg_pipeline"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/development/python-modules/rcg-pipeline/default.nix b/pkgs/development/python-modules/rcg-pipeline/default.nix index b62d747..22c4134 100644 --- a/pkgs/development/python-modules/rcg-pipeline/default.nix +++ b/pkgs/development/python-modules/rcg-pipeline/default.nix @@ -16,12 +16,10 @@ buildPythonPackage rec { version = "1.0.0"; format = "pyproject"; - # src = /home/movefasta/Documents/robossembler/framework; - src = fetchgit { url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-iLPphGbIGf7IRdedBSC2yJ2M3ttsHATvtOLot/04AZU="; - rev = "8268db0dec793bfa42d4fcba24c7d442938b7a25"; + hash = "sha256-N9xFVU4+GbuRR5saMkK7GjKPqKjk2LjcTFWqVhhJ0bs="; + rev = "946e83fd159f9ed234b70923df657bc5120cc62f"; }; sourceRoot = "${src.name}/rcg_pipeline"; From 7aa811cb0bc19b19109384ba14819d3e9a1254e4 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 22 Apr 2024 15:51:35 +0300 Subject: [PATCH 18/25] init: freecad-py 21.2.0, bpy overlayed version --- flake.nix | 24 +++++++++++-------- .../freecad.robossembler/default.nix | 19 +++++++++++---- .../python-modules/rcg-pipeline/default.nix | 7 ++++-- pkgs/misc/bpy-lib/default.nix | 14 +++++++++++ pkgs/misc/freecad-lib/default.nix | 14 +++++++++++ 5 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 pkgs/misc/bpy-lib/default.nix create mode 100644 pkgs/misc/freecad-lib/default.nix diff --git a/flake.nix b/flake.nix index 15ac36c..ba62d22 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ ( python-final: python-prev: { - iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: { + iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: { version = "unstable"; src = pkgs.fetchFromGitHub { owner = "facebookresearch"; @@ -110,14 +110,11 @@ "-DWITH_INSTALL_PORTABLE=ON" ]; postInstall = '' - mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages mkdir -p $out/nix-support - mv $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/ + mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages + ln -s $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/bpy echo ${pkgs.python3} >> $out/nix-support/propagated-build-inputs ''; - postFixup = '' - buildPythonPath $out/lib/python${pkgs.python3.pythonVersion}/site-packages - ''; }); bpy-wheel = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy-wheel { }; pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; @@ -132,8 +129,10 @@ ansitable = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/ansitable { }; megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; - rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { inherit bpy-wheel; }; - rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { }; + rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; }; + rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-py; }; + freecad-py = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { }); + bpy-lib = pkgs.python3Packages.toPythonModule bpy; in { inherit pkgs; @@ -146,7 +145,7 @@ }; packages = { - inherit mayo pysdf fstl unified-planning test-script blender bpy bpy-wheel rcg-pipeline; + inherit mayo pysdf fstl unified-planning test-script blender bpy bpy-wheel rcg-pipeline freecad-py bpy-lib; }; devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; @@ -217,10 +216,15 @@ spatialmath rcg-pipeline rbs-workbench + ledger ]; in pkgs.mkShell { - packages = [ (pkgs.python3.withPackages my-python-packages) pkgs.freecad mayo pkgs.bashInteractive ]; + packages = with pkgs; [ + freecad + mayo + bashInteractive + ] ++ [ (pkgs.python3.withPackages my-python-packages) ]; buildInputs = [ ]; # Run when the shell is started up diff --git a/pkgs/development/python-modules/freecad.robossembler/default.nix b/pkgs/development/python-modules/freecad.robossembler/default.nix index 95b721d..4033eac 100644 --- a/pkgs/development/python-modules/freecad.robossembler/default.nix +++ b/pkgs/development/python-modules/freecad.robossembler/default.nix @@ -6,17 +6,21 @@ , pythonImportsCheckHook , config , setuptools +, freecad-py +, pytestCheckHook +, toPythonModule +, python , ... }: buildPythonPackage rec { - name = "rbs-workbench"; + name = "freecad.robossembler"; version = "1.0.0"; format = "setuptools"; src = fetchgit { url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-N9xFVU4+GbuRR5saMkK7GjKPqKjk2LjcTFWqVhhJ0bs="; - rev = "946e83fd159f9ed234b70923df657bc5120cc62f"; + hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; + rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; }; sourceRoot = "${src.name}/freecad_workbench"; @@ -24,11 +28,16 @@ buildPythonPackage rec { setuptools ]; - propagatedBuildInputs = [ - ]; + buildInputs = [ freecad-py ]; + propagatedBuildInputs = [ + freecad-py + ]; + pythonImportsCheck = [ "freecad.robossembler" ]; + doCheck = false; + meta = with lib; { description = "Robossembler CG Pipeline Python Module"; homepage = "https://gitlab.com/robossembler/framework/rcg_pipeline"; diff --git a/pkgs/development/python-modules/rcg-pipeline/default.nix b/pkgs/development/python-modules/rcg-pipeline/default.nix index 22c4134..3c3de0e 100644 --- a/pkgs/development/python-modules/rcg-pipeline/default.nix +++ b/pkgs/development/python-modules/rcg-pipeline/default.nix @@ -8,7 +8,7 @@ , cudaSupport ? config.cudaSupport , numpy , setuptools -, bpy-wheel +, bpy , ... }: buildPythonPackage rec { @@ -29,9 +29,12 @@ buildPythonPackage rec { propagatedBuildInputs = [ numpy - bpy-wheel + bpy ]; + # TODO - see later, pyproject.toml duntime deps check doesnt work + dontCheckRuntimeDeps = true; + pythonImportsCheck = [ "rcg_pipeline" ]; meta = with lib; { diff --git a/pkgs/misc/bpy-lib/default.nix b/pkgs/misc/bpy-lib/default.nix new file mode 100644 index 0000000..239f58f --- /dev/null +++ b/pkgs/misc/bpy-lib/default.nix @@ -0,0 +1,14 @@ +{ stdenv +, bpy +, python3 +}: +stdenv.mkDerivation { + inherit (bpy) version; + pname = "bpy-lib"; + src = bpy; + buildInputs = [ python3 ]; + installPhase = '' + mkdir -p $out/lib/python${python3.pythonVersion} + ln -s ${bpy}/bpy $out/lib/python${python3.pythonVersion}/site-packages + ''; +} diff --git a/pkgs/misc/freecad-lib/default.nix b/pkgs/misc/freecad-lib/default.nix new file mode 100644 index 0000000..cec2b44 --- /dev/null +++ b/pkgs/misc/freecad-lib/default.nix @@ -0,0 +1,14 @@ +{ stdenv +, freecad +, python3 +}: +stdenv.mkDerivation { + inherit (freecad) version; + pname = "freecad-lib"; + src = freecad; + buildInputs = [ python3 ]; + installPhase = '' + mkdir -p $out/lib/python${python3.pythonVersion} + ln -s ${freecad}/lib $out/lib/python${python3.pythonVersion}/site-packages + ''; +} From db7a44f4799b44ad8bed73bd08c3ab931291a694 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Mon, 22 Apr 2024 15:57:32 +0300 Subject: [PATCH 19/25] rbs framework single source --- flake.nix | 11 +++++++++-- .../python-modules/freecad.robossembler/default.nix | 8 +++----- .../python-modules/rcg-pipeline/default.nix | 8 +++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index ba62d22..b92fb7d 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,13 @@ # pkgs = nixpkgs.legacyPackages.${system}.extend overlay; ros = ros-flake.legacyPackages.${system}; + # single source for Robossembler Framework packages + rbsFrameworkSrc = pkgs.fetchgit { + url = "https://gitlab.com/robossembler/framework"; + hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; + rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; + }; + pkgs = import nixpkgs { inherit system; overlays = [ overlay gazebo.overlays.default ]; }; overlay = final: prev: { @@ -129,8 +136,8 @@ ansitable = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/ansitable { }; megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; - rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; }; - rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-py; }; + rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; inherit rbsFrameworkSrc; }; + rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-py; inherit rbsFrameworkSrc; }; freecad-py = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { }); bpy-lib = pkgs.python3Packages.toPythonModule bpy; in diff --git a/pkgs/development/python-modules/freecad.robossembler/default.nix b/pkgs/development/python-modules/freecad.robossembler/default.nix index 4033eac..6eff57a 100644 --- a/pkgs/development/python-modules/freecad.robossembler/default.nix +++ b/pkgs/development/python-modules/freecad.robossembler/default.nix @@ -10,6 +10,7 @@ , pytestCheckHook , toPythonModule , python +, rbsFrameworkSrc , ... }: buildPythonPackage rec { @@ -17,11 +18,8 @@ buildPythonPackage rec { version = "1.0.0"; format = "setuptools"; - src = fetchgit { - url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; - rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; - }; + src = rbsFrameworkSrc; + sourceRoot = "${src.name}/freecad_workbench"; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/rcg-pipeline/default.nix b/pkgs/development/python-modules/rcg-pipeline/default.nix index 3c3de0e..01efd32 100644 --- a/pkgs/development/python-modules/rcg-pipeline/default.nix +++ b/pkgs/development/python-modules/rcg-pipeline/default.nix @@ -9,6 +9,7 @@ , numpy , setuptools , bpy +, rbsFrameworkSrc , ... }: buildPythonPackage rec { @@ -16,11 +17,8 @@ buildPythonPackage rec { version = "1.0.0"; format = "pyproject"; - src = fetchgit { - url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-N9xFVU4+GbuRR5saMkK7GjKPqKjk2LjcTFWqVhhJ0bs="; - rev = "946e83fd159f9ed234b70923df657bc5120cc62f"; - }; + src = rbsFrameworkSrc; + sourceRoot = "${src.name}/rcg_pipeline"; nativeBuildInputs = [ From cc723b1bb2f9948e75d4c1ccb02f727504b23f93 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Sat, 27 Apr 2024 15:45:41 +0300 Subject: [PATCH 20/25] Add CAD & CG assets generators --- flake.nix | 34 +++++++++++++++++-- .../freecad.robossembler/default.nix | 6 ++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index b92fb7d..66154dd 100644 --- a/flake.nix +++ b/flake.nix @@ -137,9 +137,37 @@ megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; inherit rbsFrameworkSrc; }; - rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-py; inherit rbsFrameworkSrc; }; - freecad-py = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { }); + rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-lib; inherit rbsFrameworkSrc; }; + freecad-lib = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { }); bpy-lib = pkgs.python3Packages.toPythonModule bpy; + cad-gen = + let + cad_export_script = pkgs.writers.writePython3 "cad_export_script.py" + { libraries = [ rbs-workbench ]; } + '' + import FreeCAD as App + import freecad.robossembler.utils.freecad_exporters as rbs + import sys + + path = sys.argv[4] + print(path) + doc = App.openDocument(path) + rbs.publish_project_database(doc) + App.closeDocument(doc.Name) + ''; + in + pkgs.writeShellScriptBin "cad-gen" + '' + export PYTHONPATH="${rbs-workbench}/${pkgs.python3.sitePackages}" + ${pkgs.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1 + ''; + cg-gen = pkgs.writers.writePython3Bin "cg-gen" + { libraries = [ rcg-pipeline ]; } + '' + from rcg_pipeline import rcg_full_pipeline + import sys + rcg_full_pipeline(sys.argv[1]) + ''; in { inherit pkgs; @@ -152,7 +180,7 @@ }; packages = { - inherit mayo pysdf fstl unified-planning test-script blender bpy bpy-wheel rcg-pipeline freecad-py bpy-lib; + inherit unified-planning test-script cad-gen cg-gen; }; devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; diff --git a/pkgs/development/python-modules/freecad.robossembler/default.nix b/pkgs/development/python-modules/freecad.robossembler/default.nix index 6eff57a..dafd9f8 100644 --- a/pkgs/development/python-modules/freecad.robossembler/default.nix +++ b/pkgs/development/python-modules/freecad.robossembler/default.nix @@ -6,7 +6,7 @@ , pythonImportsCheckHook , config , setuptools -, freecad-py +, freecad-lib , pytestCheckHook , toPythonModule , python @@ -26,10 +26,10 @@ buildPythonPackage rec { setuptools ]; - buildInputs = [ freecad-py ]; + buildInputs = [ freecad-lib ]; propagatedBuildInputs = [ - freecad-py + freecad-lib ]; pythonImportsCheck = [ "freecad.robossembler" ]; From 327d559f710d92a4696505fa1cfae8be949f06eb Mon Sep 17 00:00:00 2001 From: brothermechanic Date: Tue, 25 Jun 2024 09:15:24 +0300 Subject: [PATCH 21/25] add blender and bpy to independent packages --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 66154dd..3e0ed9c 100644 --- a/flake.nix +++ b/flake.nix @@ -180,7 +180,7 @@ }; packages = { - inherit unified-planning test-script cad-gen cg-gen; + inherit unified-planning test-script cad-gen cg-gen blender bpy; }; devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; From 335a5ede21e4642bfe839b8fdef132f08bfef5c0 Mon Sep 17 00:00:00 2001 From: Igor Brylyov Date: Fri, 28 Jun 2024 09:18:26 +0000 Subject: [PATCH 22/25] Big refactor --- .envrc | 1 + README.md | 4 +- default.nix | 63 +++- flake.lock | 24 +- flake.nix | 288 ++++-------------- overlay.nix | 5 + .../python-modules => }/ansitable/default.nix | 0 pkgs/blender/default.nix | 34 +++ pkgs/{misc => }/bpy-lib/default.nix | 0 .../python-modules => }/bpy-wheel/default.nix | 0 pkgs/default.nix | 111 +++++++ pkgs/{misc => }/freecad-lib/default.nix | 0 .../freecad.robossembler/default.nix | 0 pkgs/{misc => }/fstl/default.nix | 0 pkgs/{misc => }/mayo/default.nix | 0 .../megapose6d/default.nix | 0 .../python-modules => }/open3d/default.nix | 0 .../python-modules => }/pysdf/default.nix | 0 .../python-modules => }/pytorch3d/default.nix | 0 .../rcg-pipeline/default.nix | 4 +- .../spatialmath/default.nix | 0 .../test-script/default.nix | 0 .../unified-planning/default.nix | 0 .../webdataset/default.nix | 0 ros/default.nix | 17 ++ 25 files changed, 304 insertions(+), 247 deletions(-) create mode 100644 .envrc create mode 100644 overlay.nix rename pkgs/{development/python-modules => }/ansitable/default.nix (100%) create mode 100644 pkgs/blender/default.nix rename pkgs/{misc => }/bpy-lib/default.nix (100%) rename pkgs/{development/python-modules => }/bpy-wheel/default.nix (100%) create mode 100644 pkgs/default.nix rename pkgs/{misc => }/freecad-lib/default.nix (100%) rename pkgs/{development/python-modules => }/freecad.robossembler/default.nix (100%) rename pkgs/{misc => }/fstl/default.nix (100%) rename pkgs/{misc => }/mayo/default.nix (100%) rename pkgs/{development/python-modules => }/megapose6d/default.nix (100%) rename pkgs/{development/python-modules => }/open3d/default.nix (100%) rename pkgs/{development/python-modules => }/pysdf/default.nix (100%) rename pkgs/{development/python-modules => }/pytorch3d/default.nix (100%) rename pkgs/{development/python-modules => }/rcg-pipeline/default.nix (97%) rename pkgs/{development/python-modules => }/spatialmath/default.nix (100%) rename pkgs/{development/python-modules => }/test-script/default.nix (100%) rename pkgs/{development/python-modules => }/unified-planning/default.nix (100%) rename pkgs/{development/python-modules => }/webdataset/default.nix (100%) create mode 100644 ros/default.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..cffc922 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake . --impure diff --git a/README.md b/README.md index b2ac77a..932ae4e 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ [Cachix Cache](https://robossembler.cachix.org) -Для установки в свою систему blender 3.4.1 +Для установки в свою систему Blender с настройками Robossembler * `nix profile install gitlab:robossembler/nix-robossembler-overlay#blender` Запуск локальных окружений для разработки -* Python-модуль bpy: `nix develop gitlab:robossembler/nix-robossembler-overlay#bpy` +* Python-окружение для Perception навыков робота: `nix develop gitlab:robossembler/nix-robossembler-overlay#perception` * ROS2 Rolling `nix develop gitlab:robossembler/nix-robossembler-overlay#ros` Для внесения изменений в репозиторий: diff --git a/default.nix b/default.nix index 1f45141..f7c4dbc 100644 --- a/default.nix +++ b/default.nix @@ -1,4 +1,4 @@ -{ mkDerivation, mayo, wrapQtAppsHook, lib }: +{ mkDerivation, pkgs, mayo, wrapQtAppsHook, lib, rbs-workbench, cad-gen, cg-gen }: let step2stl = name: file: @@ -20,6 +20,63 @@ let rm ${pname} ''; }; - rlib = { inherit step2stl; }; + + freecad2parts = + file: + let + pname = "${file}-parts"; + extension = lib.last (lib.strings.splitString "." file); + cad_export_script = pkgs.writers.writePython3 "cad_export_script.py" + { libraries = [ rbs-workbench ]; } + '' + import FreeCAD as App + import freecad.robossembler.utils.freecad_exporters as rbs + import sys + + path = sys.argv[4] + print(path) + doc = App.openDocument(path) + rbs.publish_project_database(doc) + App.closeDocument(doc.Name) + ''; + in + lib.throwIfNot + (lib.elem extension ["FCStd"]) + ''Input file have a "${extension}" extension, but valid FreeCAD file should have "FCStd" extention'' + mkDerivation rec { + inherit pname; + version = "unstable"; + src = ./.; + nativeBuildInputs = [ cad-gen pkgs.freecad ] ++ pkgs.freecad.buildInputs; + buildInputs = [ ]; + dontWrapQtApps = true; + buildPhase = '' + export PYTHONPATH="${rbs-workbench}/${pkgs.python3.sitePackages}" + ${pkgs.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1 + #${pkgs.freecad}/bin/freecadcmd -h + #${cad-gen}/bin/cad-gen ${file} + mv parts* trees* $out + ''; + }; + + parts-packages = + parts-package: + let + parts = lib.trivial.importJSON "${parts-package.src}/parts.json"; + pkgSet = builtins.listToAttrs (map ({ material_path, name, part_path }: { inherit name; value = part_path; }) parts ); + mkPkg = + { name, value }: + mkDerivation { + src = "${parts-package}"; + pname = name; + installPhase = '' + outputs = [ "stl" ]; + ln ${parts-package}/${value} $stl + ''; + }; + in + lib.lists.forEach mkPkg pkgSet; + + rlib = { inherit step2stl freecad2parts parts-packages; }; in -rlib \ No newline at end of file +rlib diff --git a/flake.lock b/flake.lock index ed81be7..306a559 100644 --- a/flake.lock +++ b/flake.lock @@ -33,15 +33,15 @@ "type": "github" } }, - "gazebo": { + "gazebo-overlay": { "inputs": { "flake-utils": [ - "ros-flake", + "ros-overlay", "flake-utils" ], "nixgl": "nixgl", "nixpkgs": [ - "ros-flake", + "ros-overlay", "nixpkgs" ] }, @@ -128,25 +128,29 @@ "root": { "inputs": { "flake-utils": [ - "ros-flake", + "ros-overlay", "flake-utils" ], - "gazebo": "gazebo", + "gazebo-overlay": "gazebo-overlay", "nixpkgs": "nixpkgs_2", - "ros-flake": "ros-flake" + "ros-nixpkgs": [ + "ros-overlay", + "nixpkgs" + ], + "ros-overlay": "ros-overlay" } }, - "ros-flake": { + "ros-overlay": { "inputs": { "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1711215320, - "narHash": "sha256-dIjE3NR/sTED8uOLUzqSgj+OaRDQuZK6d9U1EAWamx4=", + "lastModified": 1715462692, + "narHash": "sha256-ClDP5aXC46y4wyHhEETWHitqIoNLDrt6uRX2HpZtmd0=", "owner": "lopsided98", "repo": "nix-ros-overlay", - "rev": "1b9585ae8f529b2b392203f2dda6fb96311621a9", + "rev": "f1c32375c27e59a2e8107d52357a5ee44b3c4413", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3e0ed9c..d3a0835 100644 --- a/flake.nix +++ b/flake.nix @@ -2,247 +2,51 @@ description = "Robossembler Development Environments on Nix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=master"; - flake-utils.follows = "ros-flake/flake-utils"; - ros-flake.url = "github:lopsided98/nix-ros-overlay?ref=develop"; - gazebo = { + flake-utils.follows = "ros-overlay/flake-utils"; + ros-overlay.url = "github:lopsided98/nix-ros-overlay?ref=develop"; + ros-nixpkgs.follows = "ros-overlay/nixpkgs"; + gazebo-overlay = { url = "github:movefasta/gazebo-sim-overlay"; - inputs.flake-utils.follows = "ros-flake/flake-utils"; - inputs.nixpkgs.follows = "ros-flake/nixpkgs"; + inputs.flake-utils.follows = "ros-overlay/flake-utils"; + inputs.nixpkgs.follows = "ros-overlay/nixpkgs"; # Transitive inputs "not in registry" https://github.com/NixOS/nix/issues/5790 - # inputs.nixgl.inputs.nixpkgs.follows = "ros-flake/nixpkgs"; - # inputs.nixgl.inputs.flake-utils.follows = "ros-flake/flake-utils"; + # inputs.nixgl.inputs.nixpkgs.follows = "ros-overlay/nixpkgs"; + # inputs.nixgl.inputs.flake-utils.follows = "ros-overlay/flake-utils"; }; }; - outputs = { self, nixpkgs, ros-flake, gazebo, flake-utils }: + outputs = { self, nixpkgs, ros-overlay, ros-nixpkgs, gazebo-overlay, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let - # pkgs = nixpkgs.legacyPackages.${system}.extend overlay; - ros = ros-flake.legacyPackages.${system}; - - # single source for Robossembler Framework packages - rbsFrameworkSrc = pkgs.fetchgit { - url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; - rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; - }; - - pkgs = import nixpkgs { inherit system; overlays = [ overlay gazebo.overlays.default ]; }; - - overlay = final: prev: { - # -- PLACEHOLDER for overlay - # freecad = prev.freecad.overrideAttrs - # (old: { cmakeFlags = old.cmakeFlags ++ [ "-DBUILD_GUI=OFF" ]; }); - # cmakeFlag -BUILD_GUI=OFF for build without gui - pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ - ( - python-final: python-prev: { - iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: { - version = "unstable"; - src = pkgs.fetchFromGitHub { - owner = "facebookresearch"; - repo = "iopath"; - rev = "9dcb63a46447556460fdb65c21aa6d094a7a788c"; - hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E="; - }; - }); - } - ) + pkgs = import nixpkgs { inherit system; overlays = [ + (import ./overlay.nix) + gazebo-overlay.overlays.default ]; }; - - # overrided packages and attributes for nix-ros-overlay - humble-overrided = ros.humble.overrideScope (final: prev: { - # remove after update github:lopsided98/nixpkgs/nix-ros for https://github.com/NixOS/nixpkgs/pull/224099 - behaviortree-cpp-v3 = prev.behaviortree-cpp-v3.overrideAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.zeromq ]; - }); - moveit-core = prev.moveit-core.overrideAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.tf2-kdl ]; - }); - moveit-kinematics = prev.moveit-kinematics.overrideAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.moveit-ros-planning ]; - }); - }); - - # robossembler custom packages; defined here for share between devShells and packages - cg_preferences = pkgs.fetchgit { - url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git"; - sha256 = "sha256-/mNNjvrhIxSZVv1/LSJ7+c/dXH3E0Orh5Zr0oVPLquY="; - }; - rs_logo = pkgs.fetchgit { - url = "https://gitlab.com/robossembler/logo.git"; - rev = "0a0235cd154a59b711e87456206ccd7ba69a7e4e"; - sha256 = "sha256-/QsgKdtDHNymsTEmhIzSrOKNUqqkXl8coy+5LwIEkas="; - fetchLFS = true; - }; - blender' = pkgs.blender.override { - cudaSupport = true; - spaceNavSupport = false; - waylandSupport = false; - }; - blender = blender'.overrideAttrs (old: { - optix = pkgs.fetchzip { - # url taken from the archlinux blender PKGBUILD - url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip"; - sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY="; - }; - patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ]; - buildInputs = old.buildInputs ++ [ pkgs.imath pkgs.git ]; - postPatch = old.postPatch + '' - cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/ - cp ${cg_preferences}/share/startup.blend release/datafiles/ - cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png - ''; - env.NIX_CFLAGS_COMPILE = old.env.NIX_CFLAGS_COMPILE + " -I${pkgs.imath}/include/Imath"; - postInstall = old.postInstall + '' - cp -r ${cg_preferences}/cg_preferences $out/share/blender/${ - pkgs.lib.versions.majorMinor pkgs.blender.version - }/scripts/addons/ - ''; - }); - bpy = blender.overrideAttrs (old: { - pname = "bpy"; - src = pkgs.fetchurl { - url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz"; - hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; - }; - cmakeFlags = old.cmakeFlags ++ [ - "-DWITH_PYTHON_INSTALL=OFF" - "-DWITH_AUDASPACE=OFF" - "-DWITH_PYTHON_MODULE=ON" - "-DWITH_MEM_JEMALLOC=OFF" - "-DWITH_INSTALL_PORTABLE=ON" - ]; - postInstall = '' - mkdir -p $out/nix-support - mkdir -p $out/lib/python${pkgs.python3.pythonVersion}/site-packages - ln -s $out/bpy $out/lib/python${pkgs.python3.pythonVersion}/site-packages/bpy - echo ${pkgs.python3} >> $out/nix-support/propagated-build-inputs - ''; - }); - bpy-wheel = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy-wheel { }; - pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; - pytorch3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pytorch3d { }; - mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { }; - fstl = pkgs.libsForQt5.callPackage ./pkgs/misc/fstl { }; - open3d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/open3d { }; - unified-planning = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/unified-planning { }; - blenderproc = pkgs.python3Packages.callPackage ./blenderproc.nix { }; - test-script = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/test-script { }; - webdataset = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/webdataset { }; - ansitable = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/ansitable { }; - megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { inherit webdataset; }; - spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { inherit ansitable; }; - rcg-pipeline = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/rcg-pipeline { bpy = bpy-lib; inherit rbsFrameworkSrc; }; - rbs-workbench = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/freecad.robossembler { inherit freecad-lib; inherit rbsFrameworkSrc; }; - freecad-lib = pkgs.python3Packages.toPythonModule (pkgs.callPackage ./pkgs/misc/freecad-lib { }); - bpy-lib = pkgs.python3Packages.toPythonModule bpy; - cad-gen = - let - cad_export_script = pkgs.writers.writePython3 "cad_export_script.py" - { libraries = [ rbs-workbench ]; } - '' - import FreeCAD as App - import freecad.robossembler.utils.freecad_exporters as rbs - import sys - - path = sys.argv[4] - print(path) - doc = App.openDocument(path) - rbs.publish_project_database(doc) - App.closeDocument(doc.Name) - ''; - in - pkgs.writeShellScriptBin "cad-gen" - '' - export PYTHONPATH="${rbs-workbench}/${pkgs.python3.sitePackages}" - ${pkgs.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1 - ''; - cg-gen = pkgs.writers.writePython3Bin "cg-gen" - { libraries = [ rcg-pipeline ]; } - '' - from rcg_pipeline import rcg_full_pipeline - import sys - rcg_full_pipeline(sys.argv[1]) - ''; + ros = import ros-nixpkgs { inherit system; overlays = [ + ros-overlay.overlays.default + (import ./ros) + ];}; in { - inherit pkgs; rlib = import ./. { + inherit pkgs; + inherit (pkgs) lib mayo rbs-workbench cad-gen cg-gen; inherit (pkgs.stdenv) mkDerivation; - inherit (pkgs) lib; - inherit mayo; inherit (pkgs.libsForQt5) wrapQtAppsHook; }; packages = { - inherit unified-planning test-script cad-gen cg-gen blender bpy; + inherit (pkgs) cad-gen cg-gen blender; }; - devShells.ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; + inherit ros pkgs; - devShells.gazebo = gazebo.devShells.${system}.default; - - devShells.ros = - pkgs.mkShell { - buildInputs = (with humble-overrided; [ - ros2run - rmw-fastrtps-dynamic-cpp - urdf - ament-pep257 - ament-lint-auto - xacro - ament-cmake - rclcpp-action - tf2 - action-msgs - ament-copyright - pythonPackages.pytest - rosidl-default-generators - behaviortree-cpp-v3 - geometry-msgs - rosidl-default-runtime - rclpy - std-msgs - ament-lint-common - ament-flake8 - tf2-ros - rclcpp - moveit-core - moveit-msgs - moveit-ros-planning - moveit-ros-planning-interface - gazebo-ros2-control - plansys2-bringup - image-transport - cv-bridge - example-interfaces - ]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat gazebo_sim ]); - RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; - }; - - devShells.all = pkgs.mkShell { - packages = [ blender fstl mayo ]; - }; - - devShells.perception = - let - rbs-packages = p: with p; [ - torch - torchvision - torchaudio - detectron2 - ]; - in - pkgs.mkShell { - packages = [ (pkgs.python3.withPackages rbs-packages) ]; - }; - - devShells.default = + devShells = { + default = let my-python-packages = p: with p; [ unified-planning @@ -251,22 +55,46 @@ spatialmath rcg-pipeline rbs-workbench - ledger ]; in pkgs.mkShell { - packages = with pkgs; [ - freecad - mayo - bashInteractive - ] ++ [ (pkgs.python3.withPackages my-python-packages) ]; - buildInputs = [ ]; - - # Run when the shell is started up - shellHook = '' - ${pkgs.python3}/bin/python --version - ''; + packages = (with pkgs; [ freecad mayo ]) ++ [ (pkgs.python3.withPackages my-python-packages) ]; }; + + ros = pkgs.mkShell { + name = "ROS environment"; + packages = [ + ros.colcon + (with ros.rosPackages.humble; buildEnv { + paths = [ + ros-core + rmw-fastrtps-dynamic-cpp + ]; + }) + ]; + # ROS 2 middleware variants, for Cyclone DDS replace with "rmw_cyclonedds_cpp" and add rmw-cyclonedds-cpp to paths + RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; + }; + + all = pkgs.mkShell { packages = with pkgs; [ fstl mayo cad-gen cg-gen ]; }; + + ci = pkgs.mkShell { buildInputs = [ pkgs.jq ]; }; + + gazebo = gazebo-overlay.devShells.${system}.default; + + perception = + let + perception-packages = p: with p; [ + torch + torchvision + torchaudio + detectron2 + ]; + in + pkgs.mkShell { + packages = [ (pkgs.python3.withPackages perception-packages) ]; + }; + }; } ); diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..930163f --- /dev/null +++ b/overlay.nix @@ -0,0 +1,5 @@ +final: prev: with prev.lib; +foldr composeExtensions (_: _: {}) [ + (import ./pkgs) + (import ./ros) +] final prev \ No newline at end of file diff --git a/pkgs/development/python-modules/ansitable/default.nix b/pkgs/ansitable/default.nix similarity index 100% rename from pkgs/development/python-modules/ansitable/default.nix rename to pkgs/ansitable/default.nix diff --git a/pkgs/blender/default.nix b/pkgs/blender/default.nix new file mode 100644 index 0000000..842757e --- /dev/null +++ b/pkgs/blender/default.nix @@ -0,0 +1,34 @@ +{ fetchgit, fetchzip, blender, imath, git, lib, ... }: +let + cg_preferences = fetchgit { + url = "https://gitflic.ru/project/brothermechanic/cg_preferences.git"; + sha256 = "sha256-FkF1c5MhqtG2COIpSBdoJ1aE0r8/ABtmqFLqNkF0zT0="; + }; + + rs_logo = fetchgit { + url = "https://gitlab.com/robossembler/logo.git"; + rev = "0a0235cd154a59b711e87456206ccd7ba69a7e4e"; + sha256 = "sha256-/QsgKdtDHNymsTEmhIzSrOKNUqqkXl8coy+5LwIEkas="; + fetchLFS = true; + }; +in +blender.overrideAttrs (old: { + optix = fetchzip { + # url taken from the archlinux blender PKGBUILD + url = "https://developer.download.nvidia.com/redist/optix/v7.4/OptiX-7.4.0-Include.zip"; + sha256 = "sha256-ca08XetwaUYC9foeP5bff9kcDfuFgEzopvjspn2s8RY="; + }; + patches = old.patches ++ [ "${cg_preferences}/patches/cg-defaults.patch" ]; + buildInputs = old.buildInputs ++ [ imath git ]; + postPatch = old.postPatch + '' + cp ${cg_preferences}/share/00_cg_preferences_service.py scripts/startup/ + cp ${cg_preferences}/share/startup.blend release/datafiles/ + cp ${rs_logo}/raster/robossembler_1024x512_roboty-rossii.png release/datafiles/splash.png + ''; + env.NIX_CFLAGS_COMPILE = old.env.NIX_CFLAGS_COMPILE + " -I${imath}/include/Imath"; + postInstall = old.postInstall + '' + cp -r ${cg_preferences}/cg_preferences $out/share/blender/${ + lib.versions.majorMinor blender.version + }/scripts/addons/ + ''; + }) \ No newline at end of file diff --git a/pkgs/misc/bpy-lib/default.nix b/pkgs/bpy-lib/default.nix similarity index 100% rename from pkgs/misc/bpy-lib/default.nix rename to pkgs/bpy-lib/default.nix diff --git a/pkgs/development/python-modules/bpy-wheel/default.nix b/pkgs/bpy-wheel/default.nix similarity index 100% rename from pkgs/development/python-modules/bpy-wheel/default.nix rename to pkgs/bpy-wheel/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..b4319af --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,111 @@ +self: super: with self.lib; let + + # single source for Robossembler Framework packages + + rbsFrameworkSrc = self.fetchgit { + url = "https://gitlab.com/robossembler/framework"; + hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; + rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; + }; + + bpy = self.blender.overrideAttrs (old: { + pname = "bpy"; + src = self.fetchurl { + url = "https://download.blender.org/source/${old.pname}-${old.version}.tar.xz"; + hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; + }; + cmakeFlags = old.cmakeFlags ++ [ + "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_AUDASPACE=OFF" + "-DWITH_PYTHON_MODULE=ON" + "-DWITH_MEM_JEMALLOC=OFF" + "-DWITH_INSTALL_PORTABLE=ON" + ]; + postInstall = '' + mkdir -p $out/nix-support + mkdir -p $out/lib/python${self.python3.pythonVersion}/site-packages + ln -s $out/bpy $out/lib/python${self.python3.pythonVersion}/site-packages/bpy + echo ${self.python3} >> $out/nix-support/propagated-build-inputs + ''; + }); + +in { + + # Robossembler custom packages; defined here for share between devShells and packages + + # General packages + + mayo = self.libsForQt5.callPackage ./mayo { }; + fstl = self.libsForQt5.callPackage ./fstl { }; + blender = self.callPackage ./blender { blender = super.blender.override { + cudaSupport = true; + spaceNavSupport = false; + waylandSupport = false; + }; + }; + + # Python packages + + + + pythonPackagesExtensions = super.pythonPackagesExtensions ++ [ + ( + python-final: python-prev: { + iopath = python-prev.iopath.overridePythonAttrs (oldAttrs: { + version = "unstable"; + src = self.fetchFromGitHub { + owner = "facebookresearch"; + repo = "iopath"; + rev = "9dcb63a46447556460fdb65c21aa6d094a7a788c"; + hash = "sha256-X1LTOfbIAMy6gToNYS0JpeJpHi0jHPsEjrnCq2c9U0E="; + }; + }); + unified-planning = self.python3Packages.callPackage ./unified-planning { }; + bpy-wheel = self.python3Packages.callPackage ./bpy-wheel { }; + pysdf = self.python3Packages.callPackage ./pysdf { }; + pytorch3d = self.python3Packages.callPackage ./pytorch3d { }; + blenderproc = self.python3Packages.callPackage ./blenderproc.nix { }; + test-script = self.python3Packages.callPackage ./test-script { }; + webdataset = self.python3Packages.callPackage ./webdataset { }; + ansitable = self.python3Packages.callPackage ./ansitable { }; + megapose6d = self.python3Packages.callPackage ./megapose6d { inherit (python-final) webdataset; }; + spatialmath = self.python3Packages.callPackage ./spatialmath { inherit (python-final) ansitable; }; + rcg-pipeline = self.python3Packages.callPackage ./rcg-pipeline { inherit (python-final) bpy-lib; inherit rbsFrameworkSrc; }; + rbs-workbench = self.python3Packages.callPackage ./freecad.robossembler { inherit (python-final) freecad-lib; inherit rbsFrameworkSrc; }; + freecad-lib = self.python3Packages.toPythonModule (self.callPackage ./freecad-lib { }); + bpy-lib = self.python3Packages.toPythonModule bpy; + } + ) + ]; + + # Assets Generators + cad-gen = + let + cad_export_script = self.writers.writePython3 "cad_export_script.py" + { libraries = [ self.python3Packages.rbs-workbench ]; } + '' + import FreeCAD as App + import freecad.robossembler.utils.freecad_exporters as rbs + import sys + + path = sys.argv[4] + print(path) + doc = App.openDocument(path) + rbs.publish_project_database(doc) + App.closeDocument(doc.Name) + ''; + in + self.writeShellScriptBin "cad-gen" + '' + export PYTHONPATH="${self.python3Packages.rbs-workbench}/${self.python3.sitePackages}" + ${self.freecad}/bin/freecadcmd ${cad_export_script} -- --pass $1 + ''; + + cg-gen = self.writers.writePython3Bin "cg-gen" + { libraries = [ self.python3Packages.rcg-pipeline ]; } + '' + from rcg_pipeline import rcg_full_pipeline + import sys + rcg_full_pipeline(sys.argv[1]) + ''; +} diff --git a/pkgs/misc/freecad-lib/default.nix b/pkgs/freecad-lib/default.nix similarity index 100% rename from pkgs/misc/freecad-lib/default.nix rename to pkgs/freecad-lib/default.nix diff --git a/pkgs/development/python-modules/freecad.robossembler/default.nix b/pkgs/freecad.robossembler/default.nix similarity index 100% rename from pkgs/development/python-modules/freecad.robossembler/default.nix rename to pkgs/freecad.robossembler/default.nix diff --git a/pkgs/misc/fstl/default.nix b/pkgs/fstl/default.nix similarity index 100% rename from pkgs/misc/fstl/default.nix rename to pkgs/fstl/default.nix diff --git a/pkgs/misc/mayo/default.nix b/pkgs/mayo/default.nix similarity index 100% rename from pkgs/misc/mayo/default.nix rename to pkgs/mayo/default.nix diff --git a/pkgs/development/python-modules/megapose6d/default.nix b/pkgs/megapose6d/default.nix similarity index 100% rename from pkgs/development/python-modules/megapose6d/default.nix rename to pkgs/megapose6d/default.nix diff --git a/pkgs/development/python-modules/open3d/default.nix b/pkgs/open3d/default.nix similarity index 100% rename from pkgs/development/python-modules/open3d/default.nix rename to pkgs/open3d/default.nix diff --git a/pkgs/development/python-modules/pysdf/default.nix b/pkgs/pysdf/default.nix similarity index 100% rename from pkgs/development/python-modules/pysdf/default.nix rename to pkgs/pysdf/default.nix diff --git a/pkgs/development/python-modules/pytorch3d/default.nix b/pkgs/pytorch3d/default.nix similarity index 100% rename from pkgs/development/python-modules/pytorch3d/default.nix rename to pkgs/pytorch3d/default.nix diff --git a/pkgs/development/python-modules/rcg-pipeline/default.nix b/pkgs/rcg-pipeline/default.nix similarity index 97% rename from pkgs/development/python-modules/rcg-pipeline/default.nix rename to pkgs/rcg-pipeline/default.nix index 01efd32..cd4ee6b 100644 --- a/pkgs/development/python-modules/rcg-pipeline/default.nix +++ b/pkgs/rcg-pipeline/default.nix @@ -8,7 +8,7 @@ , cudaSupport ? config.cudaSupport , numpy , setuptools -, bpy +, bpy-lib , rbsFrameworkSrc , ... }: @@ -27,7 +27,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ numpy - bpy + bpy-lib ]; # TODO - see later, pyproject.toml duntime deps check doesnt work diff --git a/pkgs/development/python-modules/spatialmath/default.nix b/pkgs/spatialmath/default.nix similarity index 100% rename from pkgs/development/python-modules/spatialmath/default.nix rename to pkgs/spatialmath/default.nix diff --git a/pkgs/development/python-modules/test-script/default.nix b/pkgs/test-script/default.nix similarity index 100% rename from pkgs/development/python-modules/test-script/default.nix rename to pkgs/test-script/default.nix diff --git a/pkgs/development/python-modules/unified-planning/default.nix b/pkgs/unified-planning/default.nix similarity index 100% rename from pkgs/development/python-modules/unified-planning/default.nix rename to pkgs/unified-planning/default.nix diff --git a/pkgs/development/python-modules/webdataset/default.nix b/pkgs/webdataset/default.nix similarity index 100% rename from pkgs/development/python-modules/webdataset/default.nix rename to pkgs/webdataset/default.nix diff --git a/ros/default.nix b/ros/default.nix new file mode 100644 index 0000000..b1c0e06 --- /dev/null +++ b/ros/default.nix @@ -0,0 +1,17 @@ +self: super: +{ + humble = super.rosPackages.humble.overrideScope ( + final: prev: { + # remove after update github:lopsided98/nixpkgs/nix-ros for https://github.com/NixOS/nixpkgs/pull/224099 + behaviortree-cpp-v3 = prev.behaviortree-cpp-v3.overrideAttrs (old: { + propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.zeromq self.pkg-config ]; + }); + moveit-core = prev.moveit-core.overrideAttrs (old: { + propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.tf2-kdl ]; + }); + moveit-kinematics = prev.moveit-kinematics.overrideAttrs (old: { + propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.moveit-ros-planning ]; + }); + } + ); +} From 9c9356f385c96bb59c840a99dd06c0f7b211665e Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Tue, 10 Dec 2024 14:14:34 +0000 Subject: [PATCH 23/25] Unfree allow blender --- flake.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index d3a0835..0a3803c 100644 --- a/flake.nix +++ b/flake.nix @@ -20,15 +20,19 @@ flake-utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs { inherit system; overlays = [ - (import ./overlay.nix) - gazebo-overlay.overlays.default + pkgs = import nixpkgs { inherit system; + overlays = [ + (import ./overlay.nix) + gazebo-overlay.overlays.default + ]; + config.allowUnfree = true; # for cuda + }; + ros = import ros-nixpkgs { inherit system; + overlays = [ + ros-overlay.overlays.default + (import ./ros) ]; }; - ros = import ros-nixpkgs { inherit system; overlays = [ - ros-overlay.overlays.default - (import ./ros) - ];}; in { From fa6d03b6870ad7fb9ff72823bd210d3ec03f9ee7 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Tue, 10 Dec 2024 18:02:52 +0300 Subject: [PATCH 24/25] update src for robossembler framework with submodules --- pkgs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index b4319af..fd7e945 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -4,8 +4,8 @@ self: super: with self.lib; let rbsFrameworkSrc = self.fetchgit { url = "https://gitlab.com/robossembler/framework"; - hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; - rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; + hash = "sha256-q1032Lu2xnMWZkr+T0rLhbpdmceDHygHC6BN3AKbFVk="; + rev = "69b8512d6b5dafe0571b5d73a910a26bbc6a84a5"; }; bpy = self.blender.overrideAttrs (old: { From 63811823bddb2906008dd5e368cfd5caac1c11a3 Mon Sep 17 00:00:00 2001 From: Igor Brylev Date: Thu, 12 Dec 2024 18:59:29 +0300 Subject: [PATCH 25/25] add pddl-spec-gen dataset-gen as packages --- flake.nix | 2 +- pkgs/default.nix | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 0a3803c..451a443 100644 --- a/flake.nix +++ b/flake.nix @@ -44,7 +44,7 @@ }; packages = { - inherit (pkgs) cad-gen cg-gen blender; + inherit (pkgs) cad-gen cg-gen blender dataset-gen pddl-spec-gen; }; inherit ros pkgs; diff --git a/pkgs/default.nix b/pkgs/default.nix index b4319af..a22155a 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,6 +7,12 @@ self: super: with self.lib; let hash = "sha256-K6vnCQn129TWiMEKe81eBx/1H6PaIriCnkHGRwL8fg0="; rev = "e8bb59124d56c5aee0180b4c7d5c7bfeec9cb1ea"; }; + + pddlSpecGeneratorSrc = self.fetchgit { + url = "https://gitlab.com/robossembler/pddl-spec-generator"; + hash = "sha256-g/yaaIHRJriPwvVr2pVytQZmJG/BYvsg4q64yEps0T8="; + rev = "61dcd1553365436f13107f395d1ee7e7b012c3e6"; + }; bpy = self.blender.overrideAttrs (old: { pname = "bpy"; @@ -108,4 +114,8 @@ in { import sys rcg_full_pipeline(sys.argv[1]) ''; + + pddl-spec-gen = pddlSpecGeneratorSrc; + dataset-gen = rbsFrameworkSrc; + }