squall-mesh 0.1.0

agentic software
{
  description = "squall-mesh";
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs";
    flake-utils.url = "github:numtide/flake-utils";
    naersk.url = "github:nmattia/naersk";
    rust-overlay.url = "github:oxalica/rust-overlay";
  };
  outputs = {
    nixpkgs,
    flake-utils,
    naersk,
    rust-overlay,
    ...
  }:
    flake-utils.lib.eachDefaultSystem (
      system: let
        overlays = import ./overlays;
        pkgs = import nixpkgs {
          inherit system;
          overlays =
            [rust-overlay.overlays.default]
            ++ overlays;
        };
        rustToolchain = pkgs.rust-bin.nightly.latest.default;
        naersk-lib = pkgs.callPackage naersk {
          rustc = rustToolchain;
          cargo = rustToolchain;
        };
        packages = rec {
          squall-mesh = naersk-lib.buildPackage {
            src = ./.;
            nativeBuildInputs = with pkgs; [
              curl
              pkg-config
              clang
              protobuf
            ];
            buildInputs = with pkgs; [
              ffmpeg
            ];
            LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
          };
          default = packages.squall-mesh;
          rust = rustToolchain;
          dockerImage = pkgs.dockerTools.buildImage {
            name = "squall-mesh";
            tag = "latest";
            config = {
              Cmd = ["${squall-mesh}/bin/${squall-mesh.pname or "squall-mesh"}"];
            };
            copyToRoot = pkgs.buildEnv {
              name = "squall-mesh-root";
              pathsToLink = ["/bin" "/etc/squall-mesh"];
              paths = [
                squall-mesh
                (pkgs.runCommand "config" {} ''
                  mkdir -p $out/etc/squall-mesh
                  cp ${./squall-mesh.yaml} $out/etc/squall-mesh/config.yaml
                '')
              ];
            };
          };
        };
      in {
        inherit packages;
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            rustToolchain
            pkg-config
            openssl
            docker
            protobuf
          ];
        };
      }
    );
}