eza 0.10.1

A modern replacement for ls
{
  inputs = {

    flake-utils.url = "github:numtide/flake-utils";

    naersk.url = "github:nix-community/naersk";

    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

    treefmt-nix.url = "github:numtide/treefmt-nix";

    rust-overlay.url = "github:oxalica/rust-overlay";

  };

  outputs = {
      self
    , flake-utils
    , naersk
    , nixpkgs
    , treefmt-nix
    , rust-overlay
  }:
    flake-utils.lib.eachDefaultSystem (

      system: let

        overlays = [(import rust-overlay)];

        pkgs = (import nixpkgs) {

          inherit system overlays;

        };

        toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;

        naersk' = pkgs.callPackage naersk {

          cargo = toolchain;

          rustc = toolchain;

        };

        treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;

      in {

        # For `nix fmt`

        formatter = treefmtEval.config.build.wrapper;


        # packages.default = naersk'.buildPackage {

        #   src = ./.;

        # };
        packages = {
          # For `nix build` & `nix run`:
          default = naersk'.buildPackage {
            src = ./.;
          };
          # Run `nix build .#check` to check code
          check = naersk'.buildPackage {
            src = ./.;
            mode = "check";
          };
          # Run `nix build .#test` to run tests
          test = naersk'.buildPackage {
            src = ./.;
            mode = "test";
          };
          # Run `nix build .#clippy` to lint code
          clippy = naersk'.buildPackage {
            src = ./.;
            mode = "clippy";
          };
        };

        # For `nix develop`:

        devShells.default = pkgs.mkShell {

          nativeBuildInputs = with pkgs; [toolchain];

        };

        # for `nix flake check`

        checks = {

          formatting = treefmtEval.config.build.check self;

        };

      }

    );

}