# Shell for bootstrapping flake-enabled nix and home-manager
{ pkgs ? let
    # If pkgs is not defined, instantiate nixpkgs from locked commit
    lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
    nixpkgs = fetchTarball {
      url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
      sha256 = lock.narHash;
    };
    system = builtins.currentSystem;
    overlays = [ ]; # Explicit blank overlay to avoid interference


  in
  import nixpkgs { inherit system overlays; }
, ...
}:
let
  # setup the ssssnaaake
  my-python = pkgs.python311;
  python-with-my-packages = my-python.withPackages
    (p: with p; [
      mkdocs-material
      mkdocs-minify
      pygments
    ]);
in
pkgs.mkShell {
  # Enable experimental features without having to specify the argument
  NIX_CONFIG = "experimental-features = nix-command flakes";

  buildInputs = [
    python-with-my-packages
  ];
  shellHook = ''
    PYTHONPATH=${python-with-my-packages}/${python-with-my-packages.sitePackages}
  '';

  nativeBuildInputs = with pkgs; [
    nix
    home-manager
    git
    nil
    nixpkgs-fmt
    go-task
    sops
    pre-commit
    gitleaks
    mkdocs

  ];
}
