nixpkgs/doc/languages-frameworks/rust.md

89 lines
2.7 KiB
Markdown
Raw Normal View History

2017-03-20 13:41:37 -06:00
---
title: Rust
author: Matthias Beyer
date: 2017-03-05
---
# User's Guide to the Rust Infrastructure
To install the rust compiler and cargo put
```
rust
2017-03-20 13:41:37 -06:00
```
into the `environment.systemPackages` or bring them into
scope with `nix-shell -p rust`.
2017-03-20 13:41:37 -06:00
For daily builds (beta and nightly) use either rustup from
nixpkgs or use the [Rust nightlies
overlay](#using-the-rust-nightlies-overlay).
2017-03-20 13:41:37 -06:00
## Packaging Rust applications
Rust applications are packaged by using the `buildRustPackage` helper from `rustPlatform`:
```
2017-11-17 00:26:51 -07:00
rustPlatform.buildRustPackage rec {
2017-03-20 13:41:37 -06:00
name = "ripgrep-${version}";
version = "0.4.0";
src = fetchFromGitHub {
owner = "BurntSushi";
repo = "ripgrep";
rev = "${version}";
sha256 = "0y5d1n6hkw85jb3rblcxqas2fp82h3nghssa4xqrhqnz25l799pj";
};
cargoSha256 = "0q68qyl2h6i0qsz82z840myxlnjay8p1w5z7hfyr8fqp7wgwa9cx";
2017-03-20 13:41:37 -06:00
meta = with stdenv.lib; {
2017-11-17 00:26:51 -07:00
description = "A fast line-oriented regex search tool, similar to ag and ack";
2017-03-20 13:41:37 -06:00
homepage = https://github.com/BurntSushi/ripgrep;
2017-11-17 00:26:51 -07:00
license = licenses.unlicense;
2017-03-20 13:41:37 -06:00
maintainers = [ maintainers.tailhook ];
platforms = platforms.all;
};
}
```
`buildRustPackage` requires a `cargoSha256` attribute which is computed over
2017-03-20 13:41:37 -06:00
all crate sources of this package. Currently it is obtained by inserting a
fake checksum into the expression and building the package once. The correct
checksum can be then take from the failed build.
To install crates with nix there is also an experimental project called
[nixcrates](https://github.com/fractalide/nixcrates).
## Using the Rust nightlies overlay
Mozilla provides an overlay for nixpkgs to bring a nightly version of Rust into scope.
This overlay can _also_ be used to install recent unstable or stable versions
of Rust, if desired.
To use this overlay, clone
[nixpkgs-mozilla](https://github.com/mozilla/nixpkgs-mozilla),
and create a symbolic link to the file
[rust-overlay.nix](https://github.com/mozilla/nixpkgs-mozilla/blob/master/rust-overlay.nix)
in the `~/.config/nixpkgs/overlays` directory.
$ git clone https://github.com/mozilla/nixpkgs-mozilla.git
2017-03-20 13:59:43 -06:00
$ mkdir -p ~/.config/nixpkgs/overlays
2017-03-20 13:41:37 -06:00
$ ln -s $(pwd)/nixpkgs-mozilla/rust-overlay.nix ~/.config/nixpkgs/overlays/rust-overlay.nix
The latest version can be installed with the following command:
$ nix-env -Ai nixos.latest.rustChannels.stable.rust
2017-03-20 13:41:37 -06:00
Or using the attribute with nix-shell:
$ nix-shell -p nixos.latest.rustChannels.stable.rust
2017-03-20 13:41:37 -06:00
To install the beta or nightly channel, "stable" should be substituted by
"nightly" or "beta", or
use the function provided by this overlay to pull a version based on a
build date.
The overlay automatically updates itself as it uses the same source as
[rustup](https://www.rustup.rs/).