rusty_mujoco 0.4.0

Rust bindings for the MuJoCo physics simulator
Documentation
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    nixpkgs-pin-mujoco-3_10_0.url = "github:nixos/nixpkgs/775bdd0467f3de2fb5017830d00fa1f573b2ecda";
    flake-parts.url = "github:hercules-ci/flake-parts";
    systems.url = "github:nix-systems/default";
    rust-overlay = {
      url = "github:oxalica/rust-overlay";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs@{
    flake-parts,
    systems,
    ...
  }: flake-parts.lib.mkFlake { inherit inputs; } {
    systems = import systems;
    perSystem = {
      system,
      pkgs,
      pkgs-pin-mujoco-3_10_0,
      ...
    }: {
      _module.args = {
        pkgs = import inputs.nixpkgs {
          inherit system;
          overlays = [ (inputs.rust-overlay.overlays.default) ];
        };
        pkgs-pin-mujoco-3_10_0 = import inputs.nixpkgs-pin-mujoco-3_10_0 {
          inherit system;
        };
      };
      devShells.default =
        let
          rustToolchain = pkgs.rust-bin.stable.latest.default.override {
            extensions = [ "rust-src" ];
          };
          mujoco-3_10_0 = pkgs-pin-mujoco-3_10_0.mujoco;
        in
        pkgs.mkShell {
          RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library";
          RUSTFLAGS = pkgs.lib.optionalString pkgs.stdenv.isLinux "-C link-arg=-fuse-ld=bfd";
          MUJOCO_LIB = "${mujoco-3_10_0}/lib";
          packages = [
            rustToolchain
          ] ++ (with pkgs-pin-mujoco-3_10_0; [
            pkg-config
            glfw3
          ]) ++ pkgs.lib.optionals pkgs.stdenv.isLinux (with pkgs-pin-mujoco-3_10_0; [
            libx11
            wayland
          ]);
        };
    };
  };
}