{ config, pkgs, ... }:

{
  home.packages = with pkgs; [
    nixd
    clang
    go
    nodejs
    luarocks
    jre
    python3
    python311Packages.pip
    julia
    unzip
    dotnet-sdk_8
    cargo
    neovim-unwrapped
    tree-sitter

    # LSPs
    texlab
    ltex-ls
    pyright
    libclang
    cmake-language-server
    vscode-langservers-extracted
    typescript
    nodePackages.bash-language-server
    nodePackages.vue-language-server
    docker-compose-language-service
    dockerfile-language-server-nodejs
    vim-language-server
    lua-language-server
    rust-analyzer
    gopls
    jdt-language-server
    # emmet-ls
    emmet-language-server
    ruff-lsp
    csharp-ls
    typst-lsp
  ];

  home.file."${config.xdg.configHome}/nvim" = {
    source = ./files;
    recursive = true;
  };

  home.file.".clang-tidy".text = ''
    Checks: "*,
    -abseil-*,
    -altera-*,
    -android-*,
    -fuchsia-*,
    -google-*,
    -llvm*,
    -zircon-*,
    -bugprone-easily-swappable-parameters
        -readability-identifier-length
        -readability-avoid-const-params-in-decls,
    -readability-magic-numbers
        -bugprone-narrowing-conversions
        -modernize-use-trailing-return-type
        -cppcoreguidelines-pro-type-union-access
        -modernize-use-nodiscard
        -cppcoreguidelines-narrowing-conversions
        -cppcoreguidelines-avoid-magic-numbers
        -Wsign-compare
        -hicpp-uppercase-literal-suffix
        -readability-uppercase-literal-suffix
        -readability-named-parameter
        -performance-avoid-endl"
        WarningsAsErrors: '''
        HeaderFilterRegex: '''
        FormatStyle:     none
  '';
  home.sessionVariables = {
    EDITOR = "nvim";
  };
}