checkmy 0.1.2

Network diagnostic toolkit
{
  description = "checkmy - Network diagnostic toolkit";

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

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            # Rust toolchain
            rustc
            cargo
            rustfmt
            clippy
            rust-analyzer

            # Build dependencies
            pkg-config

            # Development tools
            cargo-watch
            cargo-edit
          ] ++ lib.optionals stdenv.isDarwin [
            libiconv
          ];

          shellHook = ''
            echo "checkmy Development Environment"
            echo "================================"
            echo "Rust: $(rustc --version)"
            echo "Cargo: $(cargo --version)"
            echo ""
            echo "Commands:"
            echo "  cargo build          - Build debug"
            echo "  cargo build -r       - Build release"
            echo "  cargo test           - Run tests"
            echo "  cargo watch -x run   - Watch mode"
          '';

          env = {
            RUST_BACKTRACE = "1";
          };
        };

        packages.default = pkgs.rustPlatform.buildRustPackage {
          pname = "checkmy";
          version = "0.1.0";
          src = ./.;

          cargoLock = {
            lockFile = ./Cargo.lock;
          };

          nativeBuildInputs = with pkgs; [
            pkg-config
          ];

          buildInputs = with pkgs; lib.optionals stdenv.isDarwin [
            libiconv
          ];

          meta = with pkgs.lib; {
            description = "Network diagnostic toolkit - dig-like DNS and mtr-like traceroute";
            homepage = "https://github.com/weareproxima/checkmy-cli";
            license = licenses.mit;
            maintainers = [ ];
            mainProgram = "checkmy";
          };
        };
      }
    );
}