{ 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 { }; megapose6d = pkgs.python3Packages.callPackage ./pkgs/development/python-modules/megapose6d { webdataset = webdataset; }; 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 ]) ++ [ megapose6d ]; 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 = let my-python-packages = p: with p; [ unified-planning ]; in pkgs.mkShell { packages = [ (pkgs.python3.withPackages my-python-packages) ]; }; } ); }