kadmin 0.7.1

Rust bindings for the Kerberos administration interface (kadm5)
Documentation
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
    rust-overlay.url = "github:oxalica/rust-overlay";
    futils.url = "github:numtide/flake-utils";
  };

  outputs = {
    self,
    nixpkgs,
    rust-overlay,
    futils,
  } @ inputs: let
    inherit (nixpkgs) lib;
    inherit (futils.lib) eachDefaultSystem defaultSystems;

    nixpkgsFor = lib.genAttrs defaultSystems (system:
      import nixpkgs {
        inherit system;
        overlays = [
          rust-overlay.overlays.default
        ];
      });
  in
    eachDefaultSystem
    (system: let
      pkgs = nixpkgsFor.${system};
    in {
      devShell =
        pkgs.mkShell
        {
          buildInputs = with pkgs; [
            (lib.hiPrio rust-bin.nightly.latest.rustfmt)
            (rust-bin.fromRustupToolchainFile ./rust-toolchain.toml)
            sccache

            python314
            uv

            clang
            glibc
            krb5.out
            krb5.dev
            # heimdal.dev
            libclang
            openssl
            pkg-config

            cargo-msrv
            cargo-nextest
            cargo-release
            cargo-workspaces
            git
            just
            valgrind
          ];

          RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
          RUST_BACKTRACE = 1;
          RUSTC_WRAPPER = "sccache";
          LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
          UV_NO_BINARY_PACKAGE = "maturin ruff";

          KADMIN_MIT_CLIENT_INCLUDES = "${pkgs.krb5.dev}/include";
          KADMIN_MIT_SERVER_INCLUDES = "${pkgs.krb5.dev}/include";
          KADMIN_HEIMDAL_CLIENT_INCLUDES = "${pkgs.heimdal.dev}/include";
          KADMIN_HEIMDAL_SERVER_INCLUDES = "${pkgs.heimdal.dev}/include";
          KADMIN_MIT_CLIENT_KRB5_CONFIG = "${pkgs.krb5.dev}/bin/krb5-config";
          KADMIN_MIT_SERVER_KRB5_CONFIG = "${pkgs.krb5.dev}/bin/krb5-config";
          KADMIN_HEIMDAL_CLIENT_KRB5_CONFIG = "${pkgs.heimdal.dev}/bin/krb5-config";
          KADMIN_HEIMDAL_SERVER_KRB5_CONFIG = "${pkgs.heimdal.dev}/bin/krb5-config";

          K5TEST_MIT_KDB5_UTIL = "${pkgs.krb5}/bin/kdb5_util";
          K5TEST_MIT_KRB5KDC = "${pkgs.krb5}/bin/krb5kdc";
          K5TEST_MIT_KADMIN = "${pkgs.krb5}/bin/kadmin";
          K5TEST_MIT_KADMIN_LOCAL = "${pkgs.krb5}/bin/kadmin.local";
          K5TEST_MIT_KADMIND = "${pkgs.krb5}/bin/kadmind";
          K5TEST_MIT_KPROP = "${pkgs.krb5}/bin/kprop";
          K5TEST_MIT_KINIT = "${pkgs.krb5}/bin/kinit";
          K5TEST_MIT_KLIST = "${pkgs.krb5}/bin/klist";

          K5TEST_HEIMDAL_KDC = "${pkgs.heimdal}/libexec/kdc";
          K5TEST_HEIMDAL_KADMIN = "${pkgs.heimdal}/bin/kadmin";
          K5TEST_HEIMDAL_KADMIND = "${pkgs.heimdal}/libexec/kadmind";
          K5TEST_HEIMDAL_KINIT = "${pkgs.heimdal}/bin/kinit";
          K5TEST_HEIMDAL_KLIST = "${pkgs.heimdal}/bin/klist";
          K5TEST_HEIMDAL_KTUTIL = "${pkgs.heimdal}/bin/ktutil";
        };
    });
}