{ inputs = { naersk.url = "github:nix-community/naersk/master"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = { self, nixpkgs, utils, naersk, rust-overlay }: utils.lib.eachDefaultSystem (system: let overlays = [ rust-overlay.overlays.default ]; pkgs = import nixpkgs { inherit system overlays; }; rust_pkgs = (pkgs.rust-bin.selectLatestNightlyWith ( toolchain: toolchain.default.override { extensions = [ "rust-src" "rust-analyzer" "rust-docs" "clippy" "miri" ]; } )); naersk-lib = pkgs.callPackage naersk { }; in { defaultPackage = naersk-lib.buildPackage ./.; devShell = with pkgs; mkShell { buildInputs = [ rust_pkgs # rust's compiler is quite powerful enough to the point where # a REPL is not really necessary. # Rely on the compiler and bacon 99% of the time # only use REPL if you need to explore/prototype # In that case, might as well put the code into sandbox pkgs.evcxr pkgs.bacon ]; shellHook = '' # nix flake update # is this even needed? ''; }; }); }