{ config, pkgs, ... }:

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

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

    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,
        -readability-braces-around-statements,
        -hicpp-uppercase-literal-suffix,
        -bugprone-easily-swappable-parameters,
        -hicpp-special-member-functions,
        -readability-identifier-length,
        -performance-avoid-endl"
    WarningsAsErrors: '''
    HeaderFilterRegex: '''
    FormatStyle:     none
    '';
    home.sessionVariables = {
        EDITOR = "nvim";
    };
}