oxzy-lib 3.0.1

Your oxidised fuzzer lib!
Documentation
{
  description = "Your oxidised fuzzer lib!";

  nixConfig = {
    extra-substituters = ["https://oxzy-lib.cachix.org"];
    extra-trusted-public-keys = ["oxzy-lib.cachix.org-1:xWJcWsS1mLr68D9RML0Rno4x7ZCIwD4wli/3n9l3+UE="];
  };

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

    crane = {
      url = "github:ipetkov/crane";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    flake-utils.url = "github:numtide/flake-utils";

    advisory-db = {
      url = "github:rustsec/advisory-db";
      flake = false;
    };
  };

  outputs = {
    self,
    nixpkgs,
    crane,
    flake-utils,
    advisory-db,
    ...
  }:
    flake-utils.lib.eachDefaultSystem (system: let
      pkgs = import nixpkgs {
        inherit system;
      };

      inherit (pkgs) lib;

      craneLib = crane.lib.${system};
      src = craneLib.cleanCargoSource (craneLib.path ./.);

      commonArgs = {
        inherit src;
        buildInputs = with pkgs;
          [
            pkg-config
            glib
            atk
            gtk3
            librsvg
            gtk-layer-shell
          ]
          ++ lib.optionals pkgs.stdenv.isDarwin [];
      };

      cargoArtifacts = craneLib.buildDepsOnly commonArgs;

      oxzy-lib = craneLib.buildPackage (commonArgs
        // {
          inherit cargoArtifacts;
        });
    in {
      formatter = pkgs.alejandra;

      checks = {
        inherit oxzy-lib;

        oxzy-lib-clippy = craneLib.cargoClippy (commonArgs
          // {
            inherit cargoArtifacts;
            cargoClippyExtraArgs = "--all-targets -- --deny warnings";
          });

        oxzy-lib-doc = craneLib.cargoDoc (commonArgs
          // {
            inherit cargoArtifacts;
          });

        oxzy-lib-fmt = craneLib.cargoFmt {
          inherit src;
        };

        oxzy-lib-audit = craneLib.cargoAudit {
          inherit src advisory-db;
        };
      };

      packages.default = oxzy-lib;

      devShells.default = pkgs.mkShell {
        inputsFrom = builtins.attrValues self.checks.${system};

        nativeBuildInputs = with pkgs; [
          cargo # rust package manager
          gcc # GNU Compiler Collection
          lldb # software debugger
          rust-analyzer # rust analyzer
        ];
      };
    });
}