{ inputs = { flake-utils.url = "github:numtide/flake-utils"; mozilla = { url = "github:mozilla/nixpkgs-mozilla"; flake = false; }; naersk.url = "github:nmattia/naersk"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { self, flake-utils, mozilla, naersk, nixpkgs }: flake-utils.lib.eachDefaultSystem ( system: let overlay = final: prev: let # rustChannel = final.rustChannelOf { # channel = "stable"; # date = "2021-09-09"; # sha256 = "sha256-HNIlEerJvk6sBfd8zugzwSgSiHcQH8ZbqWQn9BGfmpo="; # }; rustChannel = final.rustChannelOf { channel = "nightly"; date = "2021-10-25"; sha256 = "sha256-/zS2GztCeH6kc3ZjhBRvT7Pbnea5JvGBuWdZmagh788="; }; rust = rustChannel.rust.override { extensions = [ "rust-src" ]; }; in { rustc = rust; cargo = rust; }; pkgs = import nixpkgs { inherit system; overlays = [ (import "${mozilla}/rust-overlay.nix") overlay ]; }; naerskLib = pkgs.callPackage "${naersk}/default.nix" {}; persea = naerskLib.buildPackage { pname = "persea"; src = ./.; }; in { defaultPackage = persea; devShell = pkgs.mkShell { buildInputs = with pkgs; [ cargo cargo-edit rust-analyzer rustfmt pkg-config openssl ]; }; } ); }