evix 0.3.0

Evaluate a Nix expression and stream derivation info as JSON lines
{
  lib,
  rustPlatform,
  glibc,
  nixVersions,
  pkg-config,
  rustc,
}:
let
  inherit (rustc) llvmPackages;
  nixForBindings = nixVersions.latest;
in
rustPlatform.buildRustPackage (finalAttrs: {
  pname = "evix";
  version = "0.1.0";

  src = let
    fs = lib.fileset;
    s = ../.;
  in
    fs.toSource {
      root = s;
      fileset = fs.unions [
        (s + /src)
        (s + /Cargo.lock)
        (s + /Cargo.toml)
      ];
    };

  cargoLock.lockFile = "${finalAttrs.src}/Cargo.lock";
  enableParallelBuilding = true;

  nativeBuildInputs = [
    pkg-config
  ];

  buildInputs = [
    nixForBindings.dev
    glibc.dev
  ];

  env = {
    LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
    BINDGEN_EXTRA_CLANG_ARGS = "--sysroot=${glibc.dev}";
  };

  meta = {
    description = "Evaluate a Nix expression and stream derivation info as JSON lines";
    mainProgram = "evix";
    license = lib.licenses.eupl12;
    maintainers = with lib.maintainers; [NotAShelf];
  };
})