/ rust-toolchain / flake.nix
flake.nix
 1  {
 2    description = "A Nix-flake-based Rust development environment";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:NixOS/nixpkgs/release-22.11";
 6      flake-utils.url = "github:numtide/flake-utils";
 7      rust-overlay.url = "github:oxalica/rust-overlay";
 8    };
 9  
10    outputs =
11      { self
12      , nixpkgs
13      , flake-utils
14      , rust-overlay
15      }:
16  
17      flake-utils.lib.eachDefaultSystem (system:
18      let
19        overlays = [
20          (import rust-overlay)
21          (self: super: {
22            rustToolchain = super.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
23          })
24        ];
25  
26        pkgs = import nixpkgs { inherit system overlays; };
27      in
28      {
29        devShells.default = pkgs.mkShell {
30          packages = with pkgs; [
31            rustToolchain
32            openssl
33            pkg-config
34            cargo-deny
35            cargo-edit
36            cargo-watch
37            rust-analyzer
38          ];
39  
40          shellHook = ''
41            ${pkgs.rustToolchain}/bin/cargo --version
42          '';
43        };
44      });
45  }