tellem 0.2.0

Another telnet implementation
Documentation
{
  description = "A Rust project using naersk";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";

    # Note: fenix packages are cached via cachix:
    #       cachix use nix-community
    fenix = {
      url = "github:nix-community/fenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    naersk = {
      url = "github:nix-community/naersk";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, naersk, flake-utils, fenix }:
    let
      # If you have a workspace and your binary isn't at the root of the
      # repository, you may need to modify this path.
      cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
      name = cargoToml.package.name;
    in
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = import nixpkgs {
          inherit system;
          overlays = [
            fenix.overlays.default
          ];
        };
        components = [
          "cargo"
          "rustc"
        ];
        dev-components = components ++ [
          "clippy"
          "rustfmt"
          "rust-src"
        ];
        toolchain = pkgs.fenix.complete.withComponents components;
        dev-toolchain = pkgs.fenix.complete.withComponents dev-components;
        naersk-lib = naersk.lib.${system}.override {
          cargo = toolchain;
          rustc = toolchain;
        };
        fix-n-fmt = pkgs.writeShellScriptBin "fix-n-fmt" ''
          set -euf -o pipefail
          ${dev-toolchain}/bin/cargo clippy --fix --allow-staged --allow-dirty --all-targets --all-features
          ${dev-toolchain}/bin/cargo fmt
        '';
        cargo-udeps = pkgs.writeShellScriptBin "cargo-udeps" ''
          set -euf -o pipefail
          PATH=${pkgs.cargo-udeps}/bin:$PATH
          CARGO_TARGET_DIR=$(git rev-parse --show-toplevel)/target/udeps cargo-udeps "$@"
        '';
        defaultPackage = naersk-lib.buildPackage {
          pname = name;
          root = ./.;
        };
      in
      rec {
        inherit defaultPackage;

        packages = builtins.listToAttrs [{ inherit name; value = defaultPackage; }];

        # Update the `program` to match your binary's name.
        defaultApp = {
          type = "app";
          program = "${defaultPackage}/bin/hello";
        };

        devShell = pkgs.mkShell {
          inputsFrom = [
            defaultPackage
          ];
          buildInputs = with pkgs; [
            dev-toolchain
            rust-analyzer
            clang
            lld
            fix-n-fmt
            cargo-udeps
          ];
          RUST_SRC_PATH = "${dev-toolchain}/lib/rustlib/src/rust/library";
        };
      }
    );
}