runtime/flake.nix

104 lines
3.3 KiB
Nix

{
inputs = {
nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/develop";
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: {
rosPackages = applyDistroOverlay (import ./overlay.nix) super.rosPackages;
};
pythonOverlay = self: super: {
pythonPackagesExtensions = super.pythonPackagesExtensions ++ [
(
python-final: python-prev: {
rbs-assets-library = self.python3Packages.callPackage ./nix/repos/rbs-assets-library.nix { };
}
)
];
};
pkgs = import nixpkgs {
inherit system;
overlays = [
nix-ros-overlay.overlays.default
rosDistroOverlays
pythonOverlay
];
config.permittedInsecurePackages = [
"freeimage-3.18.0-unstable-2024-04-18"
];
};
zsh-autocompletions = pkgs.runCommand "ros-autocompletions" {} ''
for dir in {bash-completion/completions,zsh/site-functions}; do
mkdir -p $out/share/$dir
for program in {ros2,colcon,rosidl}; do
${pkgs.python3.pkgs.argcomplete}/bin/register-python-argcomplete $program > $out/share/$dir/_$program
done
done
'';
use_zsh = true;
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 = "Robossembler ROS2";
packages =
[
pkgs.colcon
# ... other non-ROS packages
(with pkgs.rosPackages.${rosDistro};
buildEnv {
paths = [
ros-core
rbs-bringup
# Include simulation runtime
rbs-runtime
# robot package
rbs-arm
];
})
]
++ (
if use_zsh
then [zsh-autocompletions pkgs.zsh]
else []
);
shellHook = ''
${
if use_zsh
then ''
echo "Swithching to ZSH shell..."
export SHELL=$(which zsh)
exec zsh
''
else ''''
}
nix store gc
'';
};
});
nixConfig = {
extra-substituters = ["https://ros.cachix.org" "https://robossembler.cachix.org" "https://cuda-maintainers.cachix.org"];
extra-trusted-public-keys = [
"ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo="
"robossembler.cachix.org-1:56jBJHroRQSGpZFkW8XMquuzQTjAF/XTo6MogmBM7SQ="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
];
};
}