{
  pkgs,
  lib,
  config,
  ...
}: let
  cfg = config.pim.vscode;
in {
  options.pim.vscode.enable = lib.mkEnableOption "vscode";

  config = lib.mkIf cfg.enable {
    programs.vscode = {
      enable = true;
      package = pkgs.vscodium;
      extensions = with pkgs.vscode-extensions; [
        vscodevim.vim
        marp-team.marp-vscode
        jnoortheen.nix-ide
        mkhl.direnv
      ];

      userSettings = {
        "nix.enableLanguageServer" = true;
        "nix.serverPath" = lib.getExe pkgs.nil;
        "terminal.integrated.defaultProfile.linux" = "fish";
        "explorer.confirmDragAndDrop" = false;
        "explorer.confirmPasteNative" = false;
        "explorer.confirmDelete" = false;
      };
    };
  };
}