{ inputs = { naersk.url = "github:nix-community/naersk/master"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, rust-overlay, utils, naersk }: utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; naersk-lib = pkgs.callPackage naersk {}; in { packages = { default = naersk-lib.buildPackage { src = ./.; doCheck = true; mode = "test"; }; doc = naersk-lib.buildPackage { src = ./.; doDoc = true; mode = "test"; cargoDocOptions = x: x ++ ["--no-deps"]; }; unix = naersk-lib.buildPackage { src = ./.; doCheck = true; cargoBuildOptions = x: x ++ ["--no-default-features" "--features" "unix"]; cargoTestOptions = x: x ++ ["--no-default-features" "--features" "unix"]; mode = "test"; }; tcp = naersk-lib.buildPackage { src = ./.; doCheck = true; cargoBuildOptions = x: x ++ ["--no-default-features" "--features" "tcp"]; cargoTestOptions = x: x ++ ["--no-default-features" "--features" "tcp"]; mode = "test"; }; clippy_unix = naersk-lib.buildPackage { src = ./.; cargoBuildOptions = x: x ++ ["--no-default-features" "--features" "unix"]; cargoTestOptions = x: x ++ ["--no-default-features" "--features" "unix"]; mode = "clippy"; }; clippy_tcp = naersk-lib.buildPackage { src = ./.; cargoBuildOptions = x: x ++ ["--no-default-features" "--features" "tcp"]; cargoTestOptions = x: x ++ ["--no-default-features" "--features" "tcp"]; mode = "clippy"; }; }; devShell = with pkgs; mkShell { nativeBuildInputs = with pkgs; [rustc cargo rustfmt pre-commit clippy cargo-expand]; RUST_LOG = "debug"; }; }); }