runtime/flake.nix
2024-12-01 16:01:31 +03:00

107 lines
3.5 KiB
Nix

{
inputs = {
nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/develop";
# nix-ros-overlay.url = "/home/movefasta/Documents/robossembler/nix-ros-overlay";
nixpkgs.follows = "nix-ros-overlay/nixpkgs"; # IMPORTANT!!!
};
outputs = { self, nix-ros-overlay, nixpkgs }:
nix-ros-overlay.inputs.flake-utils.lib.eachDefaultSystem (system:
let
applyDistroOverlay =
rosOverlay: rosPackages:
rosPackages
// builtins.mapAttrs (
rosDistro: rosPkgs: if rosPkgs ? overrideScope then rosPkgs.overrideScope rosOverlay else rosPkgs
) rosPackages;
rosDistroOverlays = self: super: {
# Apply the overlay to multiple ROS distributions
rosPackages = applyDistroOverlay (import ./overlay.nix) super.rosPackages;
};
pkgs = import nixpkgs {
inherit system;
overlays = [
nix-ros-overlay.overlays.default
rosDistroOverlays
];
config.permittedInsecurePackages = [
"freeimage-unstable-2021-11-01"
];
};
rosDistro = "jazzy";
in {
legacyPackages = pkgs.rosPackages;
packages = builtins.intersectAttrs (import ./overlay.nix null null) pkgs.rosPackages.${rosDistro};
checks = builtins.intersectAttrs (import ./overlay.nix null null) pkgs.rosPackages.${rosDistro};
devShells.default = pkgs.mkShell {
name = "Example project";
shellHook = ''
unset QT_QPA_PLATFORM
'';
packages = [
pkgs.colcon
(pkgs.python3.withPackages (p: with p; [ dacite scipy ]))
# ... other non-ROS packages
(with pkgs.rosPackages.${rosDistro}; buildEnv {
paths = [
ros-core
behaviortree-ros2
btcpp-ros2-interfaces
btcpp-ros2-samples
dynmsg
dynmsg-msgs
env-manager
env-manager-interfaces
rbs-arm
rbs-bringup
rbs-bt-executor
rbs-gripper
rbs-gym
rbs-perception
rbs-runtime
rbs-simulation
rbs-skill-interfaces
rbs-skill-servers
# rbs-task-planner
rbs-utils
rbs-utils-interfaces
rbss-movetopose
rbss-objectdetection
rbss-poseestimation
robonomics
robot-builder
rviz2
# ... other ROS packages
] ++ [
ament-cmake-core
python-cmake-module
gz-cmake-vendor
gz-common-vendor
gz-dartsim-vendor
gz-fuel-tools-vendor
gz-gui-vendor
gz-launch-vendor
gz-math-vendor
gz-msgs-vendor
gz-ogre-next-vendor
gz-physics-vendor
gz-plugin-vendor
gz-rendering-vendor
gz-sensors-vendor
gz-sim-vendor
gz-tools-vendor
gz-transport-vendor
gz-utils-vendor
];
})
];
};
});
nixConfig = {
extra-substituters = [ "https://ros.cachix.org" ];
extra-trusted-public-keys = [ "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" ];
};
}