{pkgs, ...}: {
  programs.vscode = {
    enable = true;
    package =
      if pkgs.hostPlatform.isDarwin
      then pkgs.vscode
      else pkgs.vscode.fhsWithPackages (ps: with ps; [rustup zlib openssl.dev pkg-config]);

    extensions = with pkgs.vscode-extensions; [
      bbenoist.nix
      catppuccin.catppuccin-vsc
      catppuccin.catppuccin-vsc-icons
      llvm-vs-code-extensions.vscode-clangd
      kamadorueda.alejandra
      mkhl.direnv
      usernamehw.errorlens
      vadimcn.vscode-lldb
      vscodevim.vim
    ];

    userSettings = {
      "files.autoSave" = "afterDelay";

      "editor.fontFamily" = "Iosevka Comfy Motion";
      "editor.fontLigatures" = true;
      "editor.fontSize" =
        if pkgs.hostPlatform.isDarwin
        then 14
        else 16;
      "editor.formatOnSave" = true;
      "editor.minimap.enabled" = false;

      "git.autofetch" = true;
      "git.confirmSync" = false;
      "git.enableSmartCommit" = true;

      "vim.camelCaseMotion.enable" = true;
      "vim.smartRelativeLine" = false;
      "vim.sneak" = true;
      "vim.useSystemClipboard" = true;
      "vim.normalModeKeyBindingsNonRecursive" = [
        {
          before = ["K"];
          commands = ["editor.action.showHover"];
          silent = true;
        }
      ];

      "mesonbuild.downloadLanguageServer" = true;

      "terminal.integrated.fontSize" =
        if pkgs.hostPlatform.isDarwin
        then 14
        else 16;

      "workbench.colorTheme" = "Catppuccin Mocha";
      "workbench.iconTheme" = "catppuccin-mocha";

      "window.menuBarVisibility" = "toggle";
      "window.titleBarStyle" = "custom";
    };
  };
}
