{ description = "Robossembler Development Environments on Nix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=master"; flake-utils.url = "github:numtide/flake-utils"; ros-flake.url = "github:lopsided98/nix-ros-overlay?ref=staging"; }; outputs = { self, nixpkgs, ros-flake, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; ros = ros-flake.legacyPackages.${system}; # 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 blender = pkgs.callPackage ./pkgs/misc/blender { }; 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 { }; unified-planning = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/unified-planning { }; blenderproc = pkgs.python3Packages.callPackage ./blenderproc.nix { }; 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 { inherit pkgs; rlib = import ./. { inherit (pkgs.stdenv) mkDerivation; inherit (pkgs) lib; inherit mayo; inherit (pkgs.libsForQt5) wrapQtAppsHook; }; packages = { inherit mayo blender bpy pysdf fstl darknet unified-planning slic3r megapose6d; gazebo = ros.humble.gazebo; }; 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 ]); RMW_IMPLEMENTATION = "rmw_fastrtps_dynamic_cpp"; }; devShells.all = pkgs.mkShell { packages = [ mayo blender bpy pysdf fstl darknet slic3r ]; }; devShells.rbs-framework = let my-python-packages = p: with p; [ bpy pysdf unified-planning pybullet scipy spatialmath ]; in pkgs.mkShell { 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=" ]; }; }