vimcats 1.1.0

LuaCATS parser and vimdoc transformer
Documentation
{
  description = "A CLI to generate vim/nvim help doc from emmylua";

  nixConfig = {
    extra-substituters = "https://mrcjkb.cachix.org";
    extra-trusted-public-keys = "mrcjkb.cachix.org-1:KhpstvH5GfsuEFOSyGjSTjng8oDecEds7rbrI96tjA4=";
  };

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-parts.url = "github:hercules-ci/flake-parts";
  };

  outputs = inputs @ {
    self,
    nixpkgs,
    flake-parts,
    ...
  }:
    flake-parts.lib.mkFlake {inherit inputs;} {
      systems = [
        "x86_64-linux"
        "x86_64-darwin"
        "aarch64-linux"
        "aarch64-darwin"
      ];
      perSystem = {
        config,
        system,
        ...
      }: let
        pkgs = import nixpkgs {
          inherit system;
          overlays = [
            self.overlays.default
          ];
        };
      in {
        devShells.default = pkgs.mkShell {
          name = "vimcats devShell";
          buildInputs = with pkgs;
          with pkgs.rustPlatform; [
            cargo
            rustc
            rustfmt
            rust-analyzer
            alejandra
          ];
        };

        packages = rec {
          default = vimcats;
          inherit (pkgs) vimcats;
        };
      };
      flake = {
        overlays.default = final: prev: {
          vimcats = final.rustPlatform.buildRustPackage {
            pname = "vimcats";

            src = self;

            version = ((final.lib.importTOML "${self}/Cargo.toml").package).version;

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

            buildFeatures = ["cli"];

            meta = with final.lib; {
              description = "CLI for generating vimdoc from LuaCATS annotations";
              license = with licenses; [mit];
              mainProgram = "vimcats";
            };
          };
        };
      };
    };
}