asciinema 3.0.0

Terminal session recorder, streamer, and player
{
  description = "Terminal session recorder";

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

  outputs =
    inputs@{
      flake-parts,
      rust-overlay,
      ...
    }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      systems = [
        "x86_64-linux"
        "aarch64-linux"
        "aarch64-darwin"
        "x86_64-darwin"
      ];
      perSystem =
        {
          self',
          pkgs,
          system,
          ...
        }:
        let
          packageToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package;
        in
        {
          formatter = pkgs.nixfmt-tree;

          _module.args = {
            pkgs = import inputs.nixpkgs {
              inherit system;
              overlays = [ (import rust-overlay) ];
            };
          };

          devShells = pkgs.callPackages ./shell.nix { inherit pkgs packageToml self'; };

          packages.default = pkgs.callPackage ./default.nix {
            inherit packageToml;
            rust = pkgs.rust-bin.stable.latest.minimal;
          };
        };
    };
}