{ config, pkgs, ... }:

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

  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
  '';

  programs.neovim = {
    enable = true;
    viAlias = true;
    vimAlias = true;
    defaultEditor = true;
  };
}
