Rust Rover
From NixOS Wiki
RustRover with NixOS flakes
JetBrains RustRover is an IDE tailored for Rust development.
On NixOS, rustup is difficult to work with, and in many cases with nix packages are slow to add new versions. For this reason its is easier to work with a flake in order to provide a reproducible toolchain (including rustc
, cargo
, rust-analyzer
, clippy
, rustfmt
, and rust-src
).
This article describes a way to set up rust-rover, such that it works with supported versions of rust.
Prerequisites
- NixOS with flakes enabled
- Basic familiarity with flakes and
nix develop
- A JetBrains account (RustRover requires a license, though free for some users)
Flake setup
The following flake defines a development shell with the Rust toolchain and common system dependencies:
{
description = "Rust Rover environment";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rustToolchain = pkgs.rust-bin.stable."1.88.0".default.override {
extensions = [ "rust-src" "clippy" "rustfmt" ];
};
in {
devShell = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
rustToolchain
];
buildInputs = with pkgs; [
openssl
pkg-config
rust-analyzer
jetbrains.rust-rover
];
shellHook = ''
mkdir -p ~/.rust-rover/toolchain
ln -sfn ${rustToolchain}/lib ~/.rust-rover/toolchain
ln -sfn ${rustToolchain}/bin ~/.rust-rover/toolchain
export RUST_SRC_PATH="$HOME/.rust-rover/toolchain/lib/rustlib/src/rust/library"
'';
};
}
);
}
Explanation
rust-overlay
: Provides reproducible Rust toolchains in NixrustToolchain
: Defines the Rust version and extensions (rust-src
,clippy
,rustfmt
)shellHook
: Creates symlinks into$HOME
so IDEs always see a stable path forcargo
,rustc
, and source libraries, even if the underlying Nix store path changesRUST_SRC_PATH
: Needed by some tools (e.g., rust-analyzer) to find the standard library sources
Using with RustRover
1. Enter the dev shell:
nix develop
2. Launch RustRover from inside the shell:
rust-rover
3. In RustRover:
- Go to Settings → Rust
- Rust rover only supports full paths, so set the toolchain location to:
/home/<username>/.rust-rover/toolchain/bin/
- Then set the standard library path to:
/home/<username>/.rust-rover/toolchain/lib/rustlib/src/rust/library
Notes
- You do not need
rustup
, the overlay provides pinned, reproducible Rust toolchains - Additional dependencies (OpenSSL, libGL, X11, etc.) can be added to
buildInputs
as required by your project - The symlink provides rust rover stable paths it can use.