parent
85e80f9d4c
commit
cc5400bc8e
@ -0,0 +1,17 @@ |
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
this software and associated documentation files (the "Software"), to deal in |
||||
the Software without restriction, including without limitation the rights to |
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
||||
of the Software, and to permit persons to whom the Software is furnished to do |
||||
so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
@ -0,0 +1,91 @@ |
||||
# rust-overlay |
||||
|
||||
*Pure and reproducible* overlay for binary distributed rust toolchains. |
||||
A better replacement for github:mozilla/nixpkgs-mozilla |
||||
|
||||
Hashes of toolchain components are pre-fetched (and compressed) in `manifests` directory. |
||||
So there's no need to have network access during nix evaluation (but nixpkgs-mozilla does). |
||||
|
||||
Since the evaluation is now *pure*, it also means this can work well with [Nix Flakes](https://nixos.wiki/wiki/Flakes). |
||||
|
||||
- [ ] Auto-updating is TODO. |
||||
- Current oldest supported version is stable 1.29.0 and nightly 2018-09-13 |
||||
(which is randomly chosen). |
||||
|
||||
## Use as classical nix overlay |
||||
|
||||
The installaction and usage are exactly the same as nixpkgs-mozilla. |
||||
You can follow https://github.com/mozilla/nixpkgs-mozilla#rust-overlay and just replace the url to |
||||
https://github.com/oxalica/rust-overlay |
||||
|
||||
You can put the code below into your `~/.config/nixpkgs/overlays.nix`. |
||||
```nix |
||||
[ (import (builtins.fetchTarball https://github.com/oxalica/rust-overlay/archive/master.tar.gz)) ] |
||||
``` |
||||
|
||||
Or install it into `nix-channel`: |
||||
```shell |
||||
$ nix-channel --add https://github.com/oxalica/rust-overlay/archive/master.tar.gz rust-overlay |
||||
``` |
||||
And then feel free to use it anywhere like |
||||
`import <nixpkgs> { overlays = [ (import <rust-overlay>) ] }` in your nix shell environment |
||||
|
||||
## Use with Nix Flakes |
||||
|
||||
This repository already has flake support. So you can simply use it as input. |
||||
Here's an example of using it in nixos configuration. |
||||
|
||||
```nix |
||||
{ |
||||
description = "My configuration"; |
||||
|
||||
inputs = { |
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; |
||||
rust-overlay.url = "github:oxalica/rust-overlay"; |
||||
}; |
||||
|
||||
outputs = { nixpkgs, rust-overlay, ... }: { |
||||
nixosConfigurations = { |
||||
hostname = nixpkgs.lib.nixosSystem { |
||||
system = "x86_64-linux"; |
||||
modules = [ |
||||
./configuration.nix # Your system configuration. |
||||
({ pkgs, ... }: { |
||||
nixpkgs.overlays = [ rust-overlay.overlay ]; |
||||
environment.systemPackages = [ pkgs.latest.rustChannels.stable.rust ]; |
||||
}) |
||||
]; |
||||
}; |
||||
}; |
||||
}; |
||||
} |
||||
``` |
||||
|
||||
## Interface |
||||
|
||||
The overlay re-use many codes from nixpkgs/mozilla and the interface is **almost the same**. |
||||
It provides `latest.rustChannels.{stable,nightly}.<toolchain-component>` and `rustChannelOf`. |
||||
|
||||
To use the latest stable or nightly rust toolchain, the easiest way is just to install |
||||
`latest.rustChannels.{stable,nightly}.rust`, which combines `rustc`, `cargo`, `rustfmt` and |
||||
all other default components. |
||||
|
||||
You can also pin to specific nightly toolchain using `rustChannelOf`: |
||||
```nix |
||||
(nixpkgs.rustChannelOf { date = "2020-01-01"; channel = "nightly"; }).rust |
||||
``` |
||||
|
||||
Customize an toolchain. |
||||
```nix |
||||
nixpkgs.latest.rustChannels.stable.rust.override { |
||||
extensions = [ |
||||
"rust-src" |
||||
]; |
||||
targets = [ |
||||
"x86_64-unknown-linux-musl" |
||||
"arm-unknown-linux-gnueabihf" |
||||
]; |
||||
} |
||||
``` |
||||
|
||||
For more details, see `./rust-overlay.nix` or README of https://github.com/mozilla/nixpkgs-mozilla. |
Loading…
Reference in new issue