diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..6d1d0a1 --- /dev/null +++ b/.envrc @@ -0,0 +1,5 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.3.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.3.0/direnvrc" "sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=" +fi +use flake + diff --git a/.gitignore b/.gitignore index e2f5dd2..deb5a3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -result \ No newline at end of file +result +*-profile* +.direnv diff --git a/flake.lock b/flake.lock index 5c7588a..85a3495 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -23,11 +23,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -38,11 +38,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1685043182, - "narHash": "sha256-eL1j47UUPVRI8itz/4EUah9cVtZtuII6m/jSE+mBn7A=", + "lastModified": 1690924695, + "narHash": "sha256-1yshNzds/qJztMoJk0Sa2xhKwSLaOAuepR6ABWbrgRU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ba5d0dc56bddf881ca7bb62266351a9692a8d157", + "rev": "7282565b1ca9ba7b293b899411e70167f4a7c1ff", "type": "github" }, "original": { @@ -54,11 +54,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1681059042, - "narHash": "sha256-f6HH1U/+YbM7vjnOOydPJt/Ia7Rn+ApCOryFNb3eGbk=", + "lastModified": 1687112859, + "narHash": "sha256-oJhMiKnJeb47gTxyyIgAJf+aWC4IbVmG3wgL3ZVJ0Eg=", "owner": "lopsided98", "repo": "nixpkgs", - "rev": "28aa66a5d7d196573aed06968b2e37ab98875511", + "rev": "f68a0d0fd7539d93c7454989f71fd1c824f3b46f", "type": "github" }, "original": { @@ -81,11 +81,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1684512309, - "narHash": "sha256-tIfBfgVqYWJycuTMo03NH4TS29f9FGCfz1ubYKJyD2s=", + "lastModified": 1690347395, + "narHash": "sha256-FUAvjcpVyDMZ2zCqUrpGlLtRZlF3PqW2alpyi82bMa8=", "owner": "lopsided98", "repo": "nix-ros-overlay", - "rev": "24dbaec76c6e9caf2a22ffd63ffd8b15667bd7e5", + "rev": "3205dadcff4e1fbc779ce3962bafcf3e9f3e931b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e929e5e..b79c81b 100644 --- a/flake.nix +++ b/flake.nix @@ -10,9 +10,16 @@ flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = nixpkgs.legacyPackages.${system}.extend overlay; ros = ros-flake.legacyPackages.${system}; + 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 + }; + # 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 @@ -28,17 +35,21 @@ }); # robossembler custom packages; defined here for share between devShells and packages - blender = pkgs.callPackage ./pkgs/misc/blender { }; + blender = pkgs.callPackage ./pkgs/misc/blender + { inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa CoreGraphics ForceFeedback OpenAL OpenGL; }; bpy = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/bpy { }; pysdf = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/pysdf { }; mayo = pkgs.libsForQt5.callPackage ./pkgs/misc/mayo { }; darknet = pkgs.callPackage ./pkgs/misc/darknet { }; fstl = pkgs.libsForQt5.callPackage ./pkgs/misc/fstl { }; - open3d = pkgs.callPackage ./open3d.nix { }; + 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 { webdataset = webdataset; }; + spatialmath = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/spatialmath { ansitable = ansitable; }; slic3r = pkgs.callPackage ./pkgs/misc/slic3r { }; in { @@ -52,7 +63,7 @@ }; packages = { - inherit mayo blender bpy pysdf fstl darknet unified-planning slic3r megapose6d; + inherit mayo blender bpy pysdf fstl darknet unified-planning slic3r megapose6d test-script; gazebo = ros.humble.gazebo; }; @@ -90,21 +101,42 @@ image-transport cv-bridge example-interfaces - ]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat ]) ++ [ megapose6d ]; + ]) ++ (with pkgs; [ nlohmann_json glog lua5_3_compat ]); RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; }; devShells.all = pkgs.mkShell { packages = [ mayo blender bpy pysdf fstl darknet slic3r ]; }; - devShells.bpy = pkgs.mkShell { packages = [ bpy pysdf pkgs.freecad blender ]; }; - devShells.up = + + devShells.default = let - my-python-packages = p: with p; [ unified-planning ]; - in + my-python-packages = p: with p; [ + bpy + pysdf + unified-planning + pybullet + scipy + spatialmath + ]; + in pkgs.mkShell { - packages = [ (pkgs.python3.withPackages my-python-packages) ]; + packages = [ (pkgs.python3.withPackages my-python-packages) pkgs.freecad mayo ]; + buildInputs = [ ]; + + # Run when the shell is started up + shellHook = '' + ${pkgs.python3}/bin/python --version + ''; }; } ); + + nixConfig = { + extra-substituters = [ "https://ros.cachix.org" "https://robossembler.cachix.org" ]; + extra-trusted-public-keys = [ + "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" + "robossembler.cachix.org-1:56jBJHroRQSGpZFkW8XMquuzQTjAF/XTo6MogmBM7SQ=" + ]; + }; } diff --git a/pkgs/development/python-modules/ansitable/default.nix b/pkgs/development/python-modules/ansitable/default.nix new file mode 100644 index 0000000..86e78a4 --- /dev/null +++ b/pkgs/development/python-modules/ansitable/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, colored +, numpy +}: + +buildPythonPackage rec { + pname = "ansitable"; + version = "0.9.7"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = "petercorke"; + repo = "ansitable"; + rev = version; + hash = "sha256-LRSdnHLcmQfwSpxnd3JjaLzpECWWnzi8aWLanu9qRUI="; + }; + + propagatedBuildInputs = [ + colored + numpy + ]; + + pythonImportsCheck = [ "ansitable" ]; + + meta = with lib; { + description = "Quick, easy and pretty display of tabular data or matrices, with optional ANSI color and borders"; + homepage = "https://github.com/petercorke/ansitable"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/development/python-modules/open3d/default.nix b/pkgs/development/python-modules/open3d/default.nix new file mode 100644 index 0000000..15aa342 --- /dev/null +++ b/pkgs/development/python-modules/open3d/default.nix @@ -0,0 +1,71 @@ +{ stdenv, lib, buildPythonPackage, fetchPypi, scipy, scikitlearn, numpy +, matplotlib, ipywidgets, plyfile, pandas, pyyaml, tqdm, tree, unzip, zip +, autoPatchelfHook, pytorchWithCuda, libtensorflow-bin, libusb, cudaPackages +, libGL }: + +let + addict = buildPythonPackage { + pname = "addict"; + version = "2.4.0"; + + src = fetchPypi { + pname = "addict"; + version = "2.4.0"; + sha256 = "1574sicy5ydx9pvva3lbx8qp56z9jbdwbj26aqgjhyh61q723cmk"; + }; + }; + +in buildPythonPackage { + pname = "open3d"; + version = "0.12.0"; + format = "wheel"; + + src = fetchPypi { + pname = "open3d"; + version = "0.12.0"; + format = "wheel"; + python = "cp37"; + abi = "cp37m"; + platform = "manylinux2014_x86_64"; + sha256 = "11ysnk2wni4ffg5gipi5yx0i7qa2p11rfaqgwzlp6f1z4fgfsiac"; + }; + + # sklearn dependency does not exist ofc... Why can't people + # package their shit normally. This tilts me so much. + patchPhase = '' + ${unzip}/bin/unzip ./dist/open3d-0.12.0-cp37-cp37m-manylinux2014_x86_64.whl -d tmp + rm ./dist/open3d-0.12.0-cp37-cp37m-manylinux2014_x86_64.whl + sed -i 's/sklearn/scikit-learn/g' tmp/open3d-0.12.0.dist-info/METADATA + cd tmp + ${zip}/bin/zip -0 -r ../dist/open3d-0.12.0-cp37-cp37m-manylinux2014_x86_64.whl ./* + cd ../ + ''; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + buildInputs = [ + # so deps + stdenv.cc.cc.lib + libusb.out + pytorchWithCuda + libtensorflow-bin + cudaPackages.cudatoolkit_10_1.lib + libGL + ]; + + propagatedBuildInputs = [ + # py deps + ipywidgets + tqdm + pyyaml + pandas + plyfile + scipy + scikitlearn + numpy + addict + matplotlib + ]; +} \ No newline at end of file diff --git a/pkgs/development/python-modules/spatialmath/default.nix b/pkgs/development/python-modules/spatialmath/default.nix new file mode 100644 index 0000000..9d4101a --- /dev/null +++ b/pkgs/development/python-modules/spatialmath/default.nix @@ -0,0 +1,71 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, ansitable +, matplotlib +, numpy +, scipy +, typing-extensions +, coverage +, flake8 +, pytest +, pytest-timeout +, pytest-xvfb +, sympy +, sphinx +, sphinx-autodoc-typehints +, sphinx-rtd-theme +, sphinxcontrib-jsmath +}: + +buildPythonPackage rec { + pname = "spatialmath"; + version = "unstable-2023-06-07"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "petercorke"; + repo = "spatialmath-python"; + rev = "0a7761dcd563e91eb55e75d8f0b2a93198762315"; + hash = "sha256-kawe9yHX7T+Bvy7BfuKbotEjlnpynQAooBsynGJSfjo="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + ansitable + matplotlib + numpy + scipy + typing-extensions + ]; + + passthru.optional-dependencies = { + dev = [ + coverage + flake8 + pytest + pytest-timeout + pytest-xvfb + sympy + ]; + docs = [ + sphinx + sphinx-autodoc-typehints + sphinx-rtd-theme + sphinxcontrib-jsmath + ]; + }; + + pythonImportsCheck = [ "spatialmath" ]; + + meta = with lib; { + description = "Create, manipulate and convert representations of position and orientation in 2D or 3D using Python"; + homepage = "https://github.com/petercorke/spatialmath-python"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/development/python-modules/test-script/default.nix b/pkgs/development/python-modules/test-script/default.nix new file mode 100644 index 0000000..837bdb6 --- /dev/null +++ b/pkgs/development/python-modules/test-script/default.nix @@ -0,0 +1,25 @@ +{ writers, python3Packages }: +writers.writePython3Bin "test-script" { libraries = []; } '' +import sys +import os + + +def my_function(): + arg = sys.argv[1] + number = int(arg) + if (number == 1): + os.makedirs('13') + if (number == 2): + raise Exception("error") + if (number == 3): + print(200) + print(200) + print(200) + print(200) + print(200) + print(200) + + +if __name__ == '__main__': + my_function() +'' \ No newline at end of file diff --git a/pkgs/development/python-modules/unified-planning/default.nix b/pkgs/development/python-modules/unified-planning/default.nix index aa7b822..bfff4d7 100644 --- a/pkgs/development/python-modules/unified-planning/default.nix +++ b/pkgs/development/python-modules/unified-planning/default.nix @@ -1,7 +1,6 @@ { lib , python3 , fetchFromGitHub -, fetchPypi , clingo }: let @@ -10,9 +9,9 @@ let antlr472-python3-runtime = buildPythonPackage rec { pname = "antlr4-python3-runtime"; version = "v4.7.2"; - src = fetchPypi { - inherit pname version; - hash = "sha256-Fozc7I+5FS6EqHym/SYbPVTI9jWPQqs7gTsUpxk7tQs="; + src = builtins.fetchTarball { + url = "https://files.pythonhosted.org/packages/29/14/8ac135ec7cc9db3f768e2d032776718c6b23f74e63543f0974b4873500b2/antlr4-python3-runtime-4.7.2.tar.gz"; + sha256 = "0m7axw4fys10da5bwpz39nkdji15z8jka3w11m5dx0ym0lag0qvh"; }; meta = with lib; { description = "Runtime for ANTLR";