mostlybot 0.3.0

mostlybot is the twitch bot that I use for my stream on twitch
Documentation
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

    crane.url = "github:ipetkov/crane";
    fenix = {
      url = "github:nix-community/fenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    flake-parts.url = "github:hercules-ci/flake-parts";
  };

  outputs = {
    self,
    nixpkgs,
    crane,
    flake-parts,
    fenix,
    ...
  } @ inputs:
    flake-parts.lib.mkFlake {inherit inputs;} {
      systems = ["x86_64-linux" "aarch64-linux"];

      perSystem = {system, ...}: let
        pkgs = import nixpkgs {
          inherit system;
          overlays = [fenix.overlays.default];
        };
        lib = pkgs.lib;
        craneLib = (crane.mkLib pkgs).overrideToolchain (fenix.packages.${system}.fromToolchainFile {
          dir = ./.;
          sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo=";
        });

        bot-crate = craneLib.buildPackage {
          src = lib.cleanSourceWith {
            src = ./.;
            filter = path: type: (lib.strings.hasSuffix ".md" path) || (craneLib.filterCargoSources path type);
            name = "source";
          };

          buildInputs =
            [
              pkgs.openssl
              pkgs.pkg-config
            ]
            ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
              pkgs.libiconv
            ];
        };
      in {
        formatter = pkgs.alejandra;
        packages.default = bot-crate;

        devShells.default = craneLib.devShell {
          inputsFrom = [bot-crate];

          packages = [
            pkgs.rust-analyzer-nightly
          ];
        };
      };
    };
}