diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9003e49 --- /dev/null +++ b/flake.lock @@ -0,0 +1,101 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nix-ros-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "rosdistro": "rosdistro" + }, + "locked": { + "lastModified": 1785606873, + "narHash": "sha256-B4+EVJ+D1bKbIzQxdbOJuU/l7y9tJg1dHNAUyO6MQyg=", + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "2004728f9f450421c9d44b62d6c707a5834139bb", + "type": "github" + }, + "original": { + "owner": "lopsided98", + "ref": "master", + "repo": "nix-ros-overlay", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1782723713, + "narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nix-ros-overlay": "nix-ros-overlay", + "nixpkgs": [ + "nix-ros-overlay", + "nixpkgs" + ] + } + }, + "rosdistro": { + "flake": false, + "locked": { + "lastModified": 1785506537, + "narHash": "sha256-F/E9AWF3V2coFM0tz8Rpgjs7KZELZ617OUrfiF5Tb3I=", + "owner": "ros", + "repo": "rosdistro", + "rev": "16a90886be745b6ec535942294969c2228a8c59a", + "type": "github" + }, + "original": { + "owner": "ros", + "repo": "rosdistro", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..61d30be --- /dev/null +++ b/flake.nix @@ -0,0 +1,148 @@ +{ + inputs = { + nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/master"; + nixpkgs.follows = "nix-ros-overlay/nixpkgs"; + }; + outputs = { self, nix-ros-overlay, nixpkgs }: + nix-ros-overlay.inputs.flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + nix-ros-overlay.overlays.default + ]; + }; + + + + python-vcs = pkgs.python3Packages.buildPythonPackage rec { + pname = "python-vcs2l"; + version = "1.1.7"; + pyproject = true; + + src = pkgs.python3Packages.fetchPypi { + inherit version; + pname = "vcs2l"; + hash = "sha256-HYbmhfngHdonG4nfGyvULKVVX1wNy+9cxyfUQ/JXOM0="; + }; + + build-system = [ pkgs.python3Packages.setuptools ]; + dependencies = [ pkgs.python313Packages.pyyaml ]; + }; + + python-rosdistro = pkgs.python3Packages.buildPythonPackage rec { + pname = "python-rosdistro"; + version = "1.0.1"; + pyproject = true; + + src = pkgs.python3Packages.fetchPypi { + inherit version; + pname = "rosdistro"; + hash = "sha256-J/iLS/CteekF6R2zdnS586JdEnrm5HuqvR4YBE1gwmw="; + }; + + build-system = [ pkgs.python3Packages.setuptools ]; + dependencies = [ pkgs.python313Packages.pyyaml + pkgs.python313Packages.catkin-pkg + pkgs.python313Packages.rospkg + ]; + }; + + + python-rosdep = pkgs.python3Packages.buildPythonPackage rec { + pname = "python-rosdep"; + version = "0.26.0"; + pyproject = true; + + src = pkgs.python3Packages.fetchPypi { + inherit version; + pname = "rosdep"; + hash = "sha256-xHQwAwWLwO7Udgf0Zh9dGnxQWKgwuMs6BAPu+gndba0="; + }; + + build-system = [ pkgs.python3Packages.setuptools ]; + dependencies = [ pkgs.python313Packages.pyyaml + pkgs.python313Packages.distutils + pkgs.python313Packages.catkin-pkg + pkgs.python313Packages.rospkg + python-rosdistro + ]; + }; + + in + { + devShells.default = pkgs.mkShell { + name = "Lucy ROS dev shell"; + + packages = [ + python-vcs + python-rosdep + + pkgs.llvmPackages_20.clang-tools + pkgs.python313Packages.black + + pkgs.colcon + pkgs.cmake + pkgs.spdlog + pkgs.fmt + pkgs.doxygen + + (with pkgs.rosPackages.jazzy; buildEnv { + paths = [ + desktop + xacro + ros-gz-bridge + + rqt + rqt-common-plugins + + # Simulation + image-transport + compressed-image-transport + ros-gz-sim + gz-sim-vendor + gz-cmake-vendor + gz-ros2-control + + ros-gz-interfaces + simulation-interfaces + + ros2-control + controller-manager + ros2-controllers + hardware-interface + + micro-ros-msgs + fastcdr + realsense2-camera + rosbridge-server + + joint-trajectory-controller + joint-state-broadcaster + joint-state-publisher + joint-state-publisher-gui + + python-cmake-module + + ament-cmake + ament-cmake-core + ament-cmake-python + ]; + }) + ]; + + shellHook = '' + echo -e "" + echo -e "🛡️ \033[1;36mLucy Development Environment\033[1;0m" + echo -e "----------------------------" + echo -e "ROS2: $ROS_DISTRO" + echo -e "Système: ${system}" + echo -e "----------------------------" + ''; + }; + }); + nixConfig = { + extra-substituters = [ "https://ros.cachix.org" ]; + extra-trusted-public-keys = [ "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" ]; + }; +}