ROS overlay for the Nix package manager
Find a file
2019-12-08 12:08:42 -05:00
.github Reenable logs for successful builds. 2019-12-08 00:53:58 -05:00
build-env buildEnv: automatically run setup hooks of packages in environment 2019-05-12 19:35:48 -04:00
build-ros-package build-ros-package: adapt to changes to buildPythonPackage 2019-09-28 15:46:34 -04:00
catkin-pkg catkin-pkg: 0.4.13 -> 0.4.14 2019-11-07 17:46:59 -05:00
catkin-setup-hook catkin: fix hooks that use unbound variables 2019-12-01 22:48:23 -05:00
colcon Initial ROS 2 support. 2019-09-05 22:47:17 -04:00
crystal regenerate all distros, Thu Nov 7 19:19:39 2019 2019-11-07 19:19:39 -05:00
dashing Fix patchVendorUrl. 2019-12-08 00:00:12 -05:00
empy Basic ROS deps. 2019-03-11 22:15:02 -04:00
examples Cleanup example more. 2019-05-12 20:27:24 -04:00
kinetic regenerate all distros, Thu Nov 7 19:19:39 2019 2019-11-07 19:19:39 -05:00
lib Improve patchBoostPython 2019-12-08 12:08:42 -05:00
lunar regenerate ros-lunar, Fri Aug 30 00:11:06 2019 2019-08-30 00:11:06 -04:00
melodic regenerate all distros, Thu Nov 7 19:19:39 2019 2019-11-07 19:19:39 -05:00
openni2 openni2: use stable URL and add meta 2019-08-30 00:33:05 -04:00
opensplice Initial ROS 2 support. 2019-09-05 22:47:17 -04:00
rosdep rosdep: 0.15.2 -> 0.17.1 2019-11-07 17:47:00 -05:00
rosdistro rosdistro: 0.7.4 -> 0.7.5 2019-11-07 17:46:59 -05:00
rosinstall pythonPackages.rosinstall: add maintainer 2019-08-30 00:38:19 -04:00
rosinstall-generator pythonPackages.rosinstall-generator: 0.1.17 -> 0.1.18 2019-11-07 18:00:48 -05:00
rospkg pythonPackages.rospkg: fix unquoted URL 2019-08-30 00:43:08 -04:00
vcstools pythonPackages.vcstools: 0.1.40 -> 0.1.42 2019-08-30 00:44:11 -04:00
wstool pythonPackages.wstool: fix meta 2019-08-30 00:45:59 -04:00
.gitignore Fix rviz. 2019-04-06 16:26:04 -04:00
ament-cmake-core-setup-hook.sh ament: fix unbound variable error 2019-12-03 17:43:09 -05:00
base.nix Initial ROS 2 support. 2019-09-05 22:47:17 -04:00
default.nix Allow more arguments to default.nix 2019-04-27 01:28:37 -04:00
distro-overlay.nix Improve patchBoostPython 2019-12-08 12:08:42 -05:00
distros.nix Refactor functions into lib attrset. 2019-12-06 17:19:28 -05:00
gazebo-ros-setup-hook.sh Fix Gazebo plugin loading. 2019-05-12 19:09:30 -04:00
overlay.nix Refactor functions into lib attrset. 2019-12-06 17:19:28 -05:00
README.md Use new Hydra public key. 2019-11-25 10:55:42 -05:00
release.nix Add GitHub action. 2019-12-07 17:07:25 -05:00

ROS overlay for the Nix package manager

Easily install the Robot Operating System (ROS) on any Linux distribution

Want to use ROS, but don't want to run Ubuntu? This project uses the power of Nix make to it possible to develop and run ROS packages in the same way on any Linux machine.

Nix is a distro agnostic package manager that uses a purely functional programming language to reliably and reproducibly build software. These qualities have the potential to make it one of the easiest ways to run ROS on any machine, no matter the operating system.

This overlay is still experimental, so you may encounter some issues. Feel free to file a bug.

Setup

  1. Install Nix: https://nixos.org/nix/download.html
  2. (Optional) configure Nix to use my ROS binary cache
  3. Try one of the examples

Examples

Turtlebot 3 simulation in Gazebo:

nix-shell \
  -I nixpkgs=https://github.com/lopsided98/nixpkgs/archive/nix-ros.tar.gz \
  -I nix-ros-overlay=https://github.com/lopsided98/nix-ros-overlay/archive/master.tar.gz \
  --option extra-substituters 'https://hydra.benwolsieffer.com/' \
  --option trusted-public-keys 'nix-cache.benwolsieffer.com-1:fv34TjwD6LKli0BqclR4wRjj21WUry4eaXuaStzvpeI= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=' '<nix-ros-overlay/examples/turtlebot3-gazebo.nix>'
export TURTLEBOT3_MODEL=burger
# If not on NixOS, nixGL (https://github.com/guibou/nixGL) is needed for OpenGL support
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# Spawn a new nix-shell in a new terminal and then:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Current status

What works:

  1. More than 1700 packages successfully built for ROS Kinetic
  2. Fully functional ROS development environment using nix-shell
  3. Automated generation of Nix package definitions using standard ROS tools (superflore)

What still needs to be done:

  1. Automatically update packages on a regular basis
  2. Upstream changes to nixpkgs and ROS tools
  3. Test on more Linux distributions
  4. aarch64 binary cache
  5. macOS support

Configure Binary Cache

Prebuilt ROS packages are hosted on my Hydra build server. Nix can be configured to download packages from this server, which eliminates the need to build the packages from source.

Warning: Adding this binary cache requires you to trust that my build server will not tamper with the prebuilt packages. Also, note that this server also builds packages for all my NixOS systems, so it is possible that some non-ROS related packages will be downloaded from it as well.

To use this binary cache, set the following options in nix.conf:

substituters = https://cache.nixos.org/ https://hydra.benwolsieffer.com/
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.benwolsieffer.com-1:ppeFHW/O9KtZTQkB7vzpfIOEd4wM0+JZ4SosfqosmOQ=