Cannot compare distros due to `hpp-fcl`
I'm unable to compare distros due to the `hpp-fcl` package defined here: https://github.com/lopsided98/nix-ros-overlay/blob/f891b118c8f4ddb2b6f38d6ce1bfe2f8079552ba/distros/distro-overlay.nix#L88
when trying to do so, I get the following error:
```
error:
… while calling the 'derivationStrict' builtin
at «nix-internal»/derivation-internal.nix:37:12:
36|
37| strict = derivationStrict drvAttrs;
| ^
38|
… while evaluating derivation 'Jazzy-ROS-environment'
whose name attribute is located at «github:NixOS/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D»/pkgs/stdenv/generic/make-derivation.nix:544:13
… while evaluating attribute 'nativeBuildInputs' of derivation 'Jazzy-ROS-environment'
at «github:NixOS/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D»/pkgs/stdenv/generic/make-derivation.nix:593:13:
592| depsBuildBuild = elemAt (elemAt dependencies 0) 0;
593| nativeBuildInputs = elemAt (elemAt dependencies 0) 1;
| ^
594| depsBuildTarget = elemAt (elemAt dependencies 0) 2;
(stack trace truncated; use '--show-trace' to show the full, detailed trace)
error: attribute 'hpp-fcl' missing
at «github:lopsided98/nix-ros-overlay/2d52dc94f1eeb1465195d1f909b5a10006c8fafd?narHash=sha256-vYTYv1PoGG/Q6afrKnj7fdT%2Bh2f4b1auOdXmQZTaldU%3D»/distros/distro-overlay.nix:88:49:
87| # but have a better packaging in nixpkgs, so use it instead
88| inherit (self.python3Packages) coal eigenpy hpp-fcl pinocchio crocoddyl ;
| ^
89|
```
my usecase for this is a flake where I'm maintaining environments for multiple ROS distros, where some packages exist only in one distro and not the other, so I have some things which look like this:
```nix
{
inputs = {
nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/master";
nixpkgs.follows = "nix-ros-overlay/nixpkgs"; # IMPORTANT!!!
};
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 ];
};
jazzy = pkgs.rosPackages.jazzy;
humble = pkgs.rosPackages.humble;
in {
devShells =
let
let visualization-packages = distro: [
(with distro; buildEnv {
paths = [
# ...
# battery-state-rviz-overlay only exists on jazzy
(if distro == jazzy then battery-state-rviz-overlay else null)
# ...
];
})
];
in {
humble = pkgs.mkShell {
name = "Humble environment";
packages = with pkgs; [
(with humble; buildEnv {
paths = [
# ...
];
})
]
# ...
++ (visualization-packages humble)
# ..
;
};
default = pkgs.mkShell {
name = "Jazzy environment";
packages = with pkgs; [
(with jazzy; buildEnv {
paths = [
# ...
];
})
]
# ...
++ (visualization-packages jazzy)
# ..
;
};
};
});
nixConfig = {
extra-substituters = [
"https://cache.nixos.org"
"https://ros.cachix.org"
];
extra-trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo="
];
};
}
```
so I'd like to be able to compare the distros.
ideally, I could also compare them in a less "expensive" way, for example if every distro had like a `name` attribute with the distro's codename.
however since I don't have access to that, this is what I'm doing.
关闭于 2026-03-07 8 条评论