40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   description = "A Nix-flake-based Rust development environment";
 | |
| 
 | |
|   inputs = {
 | |
|     nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";
 | |
|     rust-overlay = {
 | |
|       url = "github:oxalica/rust-overlay";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   outputs = { self, nixpkgs, rust-overlay }:
 | |
|     let
 | |
|       overlays = [
 | |
|         rust-overlay.overlays.default
 | |
|         (final: prev: {
 | |
|           rustToolchain = prev.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
 | |
|         })
 | |
|       ];
 | |
|       supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
 | |
|       forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
 | |
|         pkgs = import nixpkgs { inherit overlays system; };
 | |
|       });
 | |
|     in
 | |
|     {
 | |
|       devShells = forEachSupportedSystem ({ pkgs }: {
 | |
|         default = pkgs.mkShell {
 | |
|           packages = with pkgs; [
 | |
|             rustToolchain
 | |
|             openssl
 | |
|             pkg-config
 | |
|             cargo-deny
 | |
|             cargo-edit
 | |
|             cargo-watch
 | |
|             rust-analyzer
 | |
|           ];
 | |
|         };
 | |
|       });
 | |
|     };
 | |
| }
 |