# Keep sorted
{ buildPlatform
, default
, engage
, inputs
, jq
, lychee
, markdownlint-cli
, mdbook
, mkShell
, toolchain
}:

mkShell {
  env = default.env // {
    # Rust Analyzer needs to be able to find the path to default crate
    # sources, and it can read this environment variable to do so. The
    # `rust-src` component is required in order for this to work.
    RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
  };

  # Development tools
  nativeBuildInputs = [
    # Always use nightly rustfmt because most of its options are unstable
    #
    # This needs to come before `toolchain` in this list, otherwise
    # `$PATH` will have stable rustfmt instead.
    inputs.fenix.packages.${buildPlatform.system}.latest.rustfmt

    # Keep sorted
    engage
    jq
    lychee
    markdownlint-cli
    mdbook
    toolchain
  ]
  ++
  default.nativeBuildInputs
  ++
  default.propagatedBuildInputs
  ++
  default.buildInputs;
}
