{ pkgs, ... }:
{
  home.packages = with pkgs; [
    # unstable.zed-editor # not for headless remotes

    # TODO: should i wrap zed with these? That won't work remotely...

    # needed by builtin plugins paths:
    unstable.package-version-server # Zed autodownloads this
    vscode-langservers-extracted # vscode-{css,eslint,html,json,markdown}-language-server
    taplo # toml lsp
    gopls # TODO: requires 'go' in env, should i add it?
    pyright # (node) TODO: eww please figure out python-lsp-server!
    rust-analyzer # TODO: ra-multiplex, TODO: requires rustc or rustup?
    glsl_analyzer
    ruff
    # simple-completion-language-server # theirs seem to work?


    # needed by community plugins
    # bash-language-server # bash # TODO: bash.zed fetches this from npm
    shellcheck # bash
    shfmt # bash
    nixd # nix
    nil # nix
    unstable.nixfmt # nix
    harper # harper
    # vale-ls vale # vale, will nag a lot if no vale config present in project
    typos-lsp # typos
    tinymist # typst
    zls # zig
    typos # spell checker

    # https://github.com/JFryy/systemd-lsp
    # https://github.com/kristoff-it/superhtml

    # I prefer these in shell.nix / virtual environments
    # python3Packages.python-lsp-server # pylsp
  ];

  home.file.".config/vale/.vale.init".text = ''
    MinAlertLevel = suggestion
    [*]
    BasedOnStyles = Vale
  '';
}
