perf-event-open 0.6.2

Full-featured support for the perf_event_open syscall.
Documentation
{
  inputs = {
    pkgs.url = "github:NixOS/nixpkgs/295c3f1c2ac1a55504373727cd6cafb26fb6b047"; # 26-5-23
    rust-overlay = {
      url = "github:oxalica/rust-overlay/40b0a3a193e0840c76174b4a322874c8f6dd0a63"; # 26-5-29
      inputs.nixpkgs.follows = "pkgs";
    };
    flake-utils.url = "github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b"; # 24-11-14
  };

  outputs = inputs@{ ... }: inputs.flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = import inputs.pkgs {
        inherit system;
        overlays = [ (import inputs.rust-overlay) ];
      };

      rustfmt = pkgs.rust-bin.nightly."2026-05-29".rustfmt;
      rust-toolchain = pkgs.rust-bin.stable."1.80.1".complete.override {
        extensions = [ "rust-src" ];
        targets = [
          "x86_64-unknown-linux-gnu"
          "x86_64-unknown-linux-musl"
          "x86_64-unknown-freebsd"
        ];
      };
    in
    {
      devShells.default = pkgs.mkShell {
        name = "perf-event-open";

        # Use nightly fmt for better style
        RUSTFMT = "${rustfmt}/bin/rustfmt";

        nativeBuildInputs = [
          rust-toolchain
        ];

        checkPhase = "./check.sh";
      };
    });
}