diff --git a/nix/nixpkgs.nix b/nix/nixpkgs.nix new file mode 100644 index 00000000..68090c5b --- /dev/null +++ b/nix/nixpkgs.nix @@ -0,0 +1,6 @@ +let + sources = import ./sources.nix { }; + rust-overlay = import sources.rust-overlay; +in +import sources.nixpkgs { overlays = [ rust-overlay ]; } + diff --git a/nix/rust-toolchain.nix b/nix/rust-toolchain.nix new file mode 100644 index 00000000..b3acb0c3 --- /dev/null +++ b/nix/rust-toolchain.nix @@ -0,0 +1,10 @@ +# Returns the Rust toolchain for Nix compliant to the rust-toolchain.toml file +# but without rustup. + +{ + # Comes from rust-overlay + rust-bin +}: + +# Includes rustc, cargo, rustfmt, etc +rust-bin.fromRustupToolchainFile ../rust-toolchain.toml diff --git a/nix/sources.json b/nix/sources.json index 6726f83e..13fa0279 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -1,14 +1,26 @@ { - "nixpkgs": { - "branch": "nixos-23.05", - "description": "Nix Packages collection", - "homepage": null, - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6b0edc9c690c1d8a729f055e0d73439045cfda55", - "sha256": "1fdsnmkcz1h5wffjci29af4jrd68pzdvrhbs083niwqfd6ssm633", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/6b0edc9c690c1d8a729f055e0d73439045cfda55.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - } + "nixpkgs": { + "branch": "nixos-23.05", + "description": "Nix Packages collection", + "homepage": null, + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6b0edc9c690c1d8a729f055e0d73439045cfda55", + "sha256": "1fdsnmkcz1h5wffjci29af4jrd68pzdvrhbs083niwqfd6ssm633", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/6b0edc9c690c1d8a729f055e0d73439045cfda55.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, + "rust-overlay": { + "branch": "master", + "description": "Pure and reproducible nix overlay of binary distributed rust toolchains", + "homepage": "", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "e485313fc485700a9f1f9b8b272ddc0621d08357", + "sha256": "1v1gq022rnni6mm42pxmw6c5yy9il4jb2l92irh154ax616x2rzd", + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/e485313fc485700a9f1f9b8b272ddc0621d08357.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e756ee7e..268c6ea8 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,5 @@ [toolchain] +channel = "stable" +# cargo, clippy, rustc, rust-docs, rustfmt, rust-std +profile = "default" targets = ["aarch64-unknown-uefi", "i686-unknown-uefi", "x86_64-unknown-uefi"] diff --git a/shell.nix b/shell.nix index 5d94d103..f16ba337 100644 --- a/shell.nix +++ b/shell.nix @@ -2,10 +2,11 @@ # "cargo xtask run|test|clippy". It uses rustup rather than a pinned rust # toolchain. -{ sources ? import ./nix/sources.nix { } -, pkgs ? import sources.nixpkgs { } -}: - +let + sources = import ./nix/sources.nix; + pkgs = import ./nix/nixpkgs.nix; + rustToolchain = pkgs.callPackage ./nix/rust-toolchain.nix {}; +in pkgs.mkShell { nativeBuildInputs = with pkgs; [ # nix related stuff (such as dependency management) @@ -17,7 +18,7 @@ pkgs.mkShell { qemu # Rust toolchain - rustup + rustToolchain # Other yamlfmt