Merge branch '8-rbs-framework-env' into 'master'

Создать окружение для Robossembler Framework

Closes #8

See merge request robossembler/nix-robossembler-overlay!2
This commit is contained in:
Igor Brylyov 2023-09-03 20:35:08 +00:00
commit c57cd0e0b5
No known key found for this signature in database
9 changed files with 268 additions and 30 deletions

5
.envrc Normal file
View file

@ -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

4
.gitignore vendored
View file

@ -1 +1,3 @@
result
result
*-profile*
.direnv

30
flake.lock generated
View file

@ -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": {

View file

@ -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="
];
};
}

View file

@ -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; [ ];
};
}

View file

@ -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
];
}

View file

@ -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; [ ];
};
}

View file

@ -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()
''

View file

@ -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";