{ inputs, config, lib, pkgs, ... }:
{
  imports = [ inputs.lazyvim.homeManagerModules.default ];
  programs.lazyvim = {
    enable = true;

    configFiles = ./lua;

    extras = {
      lang = {
        go.enable = true;
        clangd.enable = true;
        rust.enable = true;
        typescript.enable = true;
        python.enable = true;
        tailwind.enable = true;
        java.enable = true;
        json.enable = true;
        yaml.enable = true;
        toml.enable = true;
        docker.enable = true;
        kotlin.enable = true;
        dart.enable = true;
        nix.enable = true;
      };
    };

    extraPackages = with pkgs; [
      # All
      tree-sitter

      # Go
      gopls
      gofumpt
      golines

      # Lua
      stylua
      lua-language-server

      # Nix
      nixd
      nixpkgs-fmt

      # Java
      google-java-format
      jdt-language-server

      # Rust
      clippy
      rustfmt
      rust-analyzer

      # Shell
      shfmt
      bash-language-server

      # C/C++
      clang-tools

      # Kotlin
      ktlint
      kotlin-language-server

      # Python
      ruff
      black
      python312Packages.python-lsp-server

      # JS/TS/Web
      biome
      prettierd
      nodePackages.prettier

      # Data formats
      jq #JSON
      taplo #TOML
      yamlfmt #YAML
    ];
  };
}
