{ pkgs ? (
    let
      inherit (builtins) fromJSON readFile;
      flakeLock = fromJSON (readFile ./flake.lock);
      locked = flakeLock.nodes.nixpkgs.locked;
      nixpkgs = assert locked.type == "github"; builtins.fetchTarball {
        url = "https://github.com/${locked.owner}/${locked.repo}/archive/${locked.rev}.tar.gz";
        sha256 = locked.narHash;
      };
    in
    import nixpkgs { }
  )
, srcDir ? null
, nix
}:

let
  inherit (pkgs) lib stdenv;
  nix-eval-jobs = pkgs.callPackage ./default.nix {
    inherit srcDir nix;
  };
in
pkgs.mkShell {
  inherit (nix-eval-jobs) buildInputs;
  nativeBuildInputs = nix-eval-jobs.nativeBuildInputs ++ [
    pkgs.treefmt
    pkgs.llvmPackages.clang # clang-format
    pkgs.nixpkgs-fmt
    pkgs.nodePackages.prettier

    (pkgs.python3.withPackages (ps: [
      ps.pytest
      ps.black
    ]))

  ];
  NODE_PATH = "${pkgs.nodePackages.prettier-plugin-toml}/lib/node_modules";

  shellHook = lib.optionalString stdenv.isLinux ''
    export NIX_DEBUG_INFO_DIRS="${pkgs.curl.debug}/lib/debug:${nix.debug}/lib/debug''${NIX_DEBUG_INFO_DIRS:+:$NIX_DEBUG_INFO_DIRS}"
  '';
}