{pkgs, ...}: { programs.vscode = { enable = true; package = pkgs.vscodium; extensions = with pkgs.vscode-extensions; [ # nix language bbenoist.nix # nix-shell suport arrterian.nix-env-selector # nix formatting kamadorueda.alejandra # python ms-python.python # C/C++ ms-vscode.cpptools # OCaml ocamllabs.ocaml-platform # Color theme catppuccin.catppuccin-vsc catppuccin.catppuccin-vsc-icons ]; userSettings = { "update.mode" = "none"; "extensions.autoUpdate" = false; # This stuff fixes vscode freaking out when theres an update "window.titleBarStyle" = "custom"; # needed otherwise vscode crashes, see https://github.com/NixOS/nixpkgs/issues/246509 "window.menuBarVisibility" = "toggle"; "editor.fontFamily" = "'JetBrainsMono Nerd Font', 'SymbolsNerdFont', 'monospace', monospace"; "terminal.integrated.fontFamily" = "'JetBrainsMono Nerd Font', 'SymbolsNerdFont'"; "editor.fontSize" = 16; "workbench.colorTheme" = "Catppuccin Mocha"; "workbench.iconTheme" = "catppuccin-mocha"; "catppuccin.accentColor" = "lavender"; "vsicons.dontShowNewVersionMessage" = true; "explorer.confirmDragAndDrop" = true; "editor.fontLigatures" = true; "editor.minimap.enabled" = true; "workbench.startupEditor" = "none"; "editor.formatOnSave" = true; "editor.formatOnType" = true; "editor.formatOnPaste" = true; "workbench.layoutControl.type" = "menu"; "workbench.editor.limit.enabled" = true; "workbench.editor.limit.value" = 10; "workbench.editor.limit.perEditorGroup" = true; "workbench.editor.showTabs" = "multiple"; "files.autoSave" = "onWindowChange"; "explorer.openEditors.visible" = 0; "breadcrumbs.enabled" = false; "editor.renderControlCharacters" = false; "workbench.activityBar.location" = "default"; "workbench.statusBar.visible" = false; "editor.scrollbar.verticalScrollbarSize" = 4; "editor.scrollbar.horizontalScrollbarSize" = 4; "editor.scrollbar.vertical" = "auto"; "editor.scrollbar.horizontal" = "auto"; "workbench.layoutControl.enabled" = false; "editor.mouseWheelZoom" = true; "C_Cpp.autocompleteAddParentheses" = true; "C_Cpp.formatting" = "vcFormat"; "C_Cpp.vcFormat.newLine.closeBraceSameLine.emptyFunction" = true; "C_Cpp.vcFormat.newLine.closeBraceSameLine.emptyType" = true; "C_Cpp.vcFormat.space.beforeEmptySquareBrackets" = true; "C_Cpp.vcFormat.newLine.beforeOpenBrace.block" = "sameLine"; "C_Cpp.vcFormat.newLine.beforeOpenBrace.function" = "sameLine"; "C_Cpp.vcFormat.newLine.beforeElse" = false; "C_Cpp.vcFormat.newLine.beforeCatch" = false; "C_Cpp.vcFormat.newLine.beforeOpenBrace.type" = "sameLine"; "C_Cpp.vcFormat.space.betweenEmptyBraces" = true; "C_Cpp.vcFormat.space.betweenEmptyLambdaBrackets" = true; "C_Cpp.vcFormat.indent.caseLabels" = true; "C_Cpp.intelliSenseCacheSize" = 2048; "C_Cpp.intelliSenseMemoryLimit" = 2048; "C_Cpp.default.browse.path" = [ ''''${workspaceFolder}/**'' ]; "C_Cpp.default.cStandard" = "gnu11"; "C_Cpp.inlayHints.parameterNames.hideLeadingUnderscores" = false; "C_Cpp.intelliSenseUpdateDelay" = 500; "C_Cpp.workspaceParsingPriority" = "medium"; "C_Cpp.clang_format_sortIncludes" = true; "C_Cpp.doxygen.generatedStyle" = "/**"; }; # Keybindings keybindings = [ { key = "ctrl+q"; command = "editor.action.commentLine"; when = "editorTextFocus && !editorReadonly"; } { key = "ctrl+s"; command = "workbench.action.files.saveFiles"; } ]; }; }