{pkgs, ...}:
{
  programs.vscode = {
    enable = true;

    # profiles = {
    #   default = {
    extensions = with pkgs.vscode-extensions; [
      # QOL
      mhutchie.git-graph
      redhat.vscode-yaml
      github.copilot

      # python
      ms-python.python
      ms-python.isort
      ms-python.debugpy
      ms-python.vscode-pylance
      ms-toolsai.jupyter
      ms-toolsai.vscode-jupyter-slideshow
      ms-toolsai.jupyter-renderers

      # Nix language
      jnoortheen.nix-ide

      # typst
      myriad-dreamin.tinymist
    ];
      # };

    keybindings = [
      {
        key = "ctrl+#";
        command = "editor.action.commentLine";
        when = "editorTextFocus";
      }
    ];

    userSettings = {
      # visual
      "window.menuBarVisibility" = "toggle";

      "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace";
      "terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono";
      "workbench.iconTheme" = "vs-seti";

      # telemetry
      "telemetry.enableCrashReporter" = false;
      "telemetry.enableTelemetry" = false;
      "redhat.telemetry.enabled" = false;


      # editor QOL
      "security.workspace.trust.untrustedFiles" = "open";
      "editor.wordWrap" = "on";
      "editor.suggestSelection" = "first";
      "editor.renderWhitespace" = "none";
      "editor.acceptSuggestionOnEnter" = "off";
      "editor.fontLigatures" = true;
      "editor.inlineSuggest.enabled" = true;
      "editor.bracketPairColorization.enabled" = true;
      "editor.unicodeHighlight.nonBasicASCII" = false;
      "editor.unicodeHighlight.invisibleCharacters" = false;
      "editor.unicodeHighlight.ambiguousCharacters" = false;

      "files.autoSave" = "onWindowChange";
      "files.autoSaveDelay" = 1000;
      "files.insertFinalNewline" = true;
      "files.trimTrailingWhitespace" = true;

      "explorer.confirmDelete" = false;
      "explorer.confirmDragAndDrop" = false;
      "terminal.integrated.enableMultiLinePasteWarning" = false;
      "update.showReleaseNotes" = false;
      "terminal.external.linuxExec" = "kitty";
      "workbench.startupEditor" = "newUntitledFile";
      # "workbench.colorTheme" = "Default Light+";

      # Extension management
      "extensions.autoCheckUpdates" = false;
      "extensions.autoUpdate" = false;
      "extensions.ignoreRecommendations" = true;


      # git
      "git.ignoreMissingGitWarning" = true;
      "git.confirmSync" = false;
      "git.enableSmartCommit" = true;
      "git.autofetch" = true;
      "diffEditor.renderSideBySide" = false;
      "diffEditor.hideUnchangedRegions.enabled" = true;
      "diffEditor.ignoreTrimWhitespace" = false;

      # Copilot
      "github.copilot.editor.enableAutoCompletions" = true;
      "github.copilot.advanced" = {};
      "github.copilot.enable" = {
          "*" = true;
      };

      # Python
      "python.terminal.activateEnvironment" = false; # let nix-shell handle this
      "jupyter.disableJupyterAutoStart" = true;
      "jupyter.askForKernelRestart" = false;
      "workbench.editorAssociations" = {
          "*.ipynb" = "jupyter-notebook";
      };
      "notebook.cellToolbarLocation" = {
          "default" = "right";
          "jupyter-notebook" = "left";
      };
      "jupyter.widgetScriptSources" = [
          "jsdelivr.com"
          "unpkg.com"
      ];


      # Typst
      "[typst]" = {
          "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
      };
      "[typst-code]" = {
      "git.openRepositoryInParentFolders" = "never";
          "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
      };
      "tinymist.fontPaths" = [
          "./font"
      ];
    };
  };

}
