diff options
Diffstat (limited to 'configs/vscode/settings.nix')
| -rw-r--r-- | configs/vscode/settings.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/configs/vscode/settings.nix b/configs/vscode/settings.nix new file mode 100644 index 0000000..4e2fba1 --- /dev/null +++ b/configs/vscode/settings.nix @@ -0,0 +1,109 @@ +{ pkgs, lib, ... }: + +let + inherit (lib) getExe; + + # https://github.com/Sertion/vscode-gitblame?tab=readme-ov-file#message-tokens + blameMessageFormat = "\${author.name}; \${time.ago} * \${commit.summary}"; +in +{ + # appearance + "workbench.iconTheme" = "catppuccin-mocha"; + "workbench.colorTheme" = "Catppuccin Mocha"; + "workbench.productIconTheme" = "fluent-icons"; + "workbench.layoutControl.enabled" = false; + "workbench.activityBar.location" = "hidden"; + "window.menuBarVisibility" = "toggle"; + "window.commandCenter" = false; + "window.dialogStyle" = "custom"; + "window.titleBarStyle" = "custom"; + "window.title" = " "; + "vscode-pets.position" = "explorer"; + "vscode-pets.petSize" = "medium"; + + # editor appearance and behavior + "editor.fontSize" = 16; + "editor.fontFamily" = "Berkeley Mono"; + "editor.cursorStyle" = "block"; + "editor.formatOnSave" = true; + "editor.formatOnSaveMode" = "modificationsIfAvailable"; + "editor.cursorBlinking" = "smooth"; + "editor.cursorSmoothCaretAnimation" = "on"; + "editor.minimap.autohide" = true; + "files.autoSave" = "afterDelay"; + + # git configuration + "git.autofetch" = "all"; + "git.enableCommitSigning" = true; + "github.gitProtocol" = "ssh"; + + "gitblame.inlineMessageEnabled" = true; + "gitblame.ignoreWhitespace" = true; + "gitblame.inlineMessageNoCommit" = ""; + "gitblame.inlineMessageFormat" = blameMessageFormat; + "gitblame.statusBarMessageFormat" = blameMessageFormat; + "gitblame.delayBlame" = 1000; + + # language configuration + "nix.enableLanguageServer" = true; + "nix.serverPath" = getExe pkgs.nil; + "nix.formatterPath" = getExe pkgs.nixfmt-rfc-style; + + "mesonbuild.buildFolder" = "build"; + "mesonbuild.formatting.enabled" = true; + "mesonbuild.linter.muon.enabled" = true; + "mesonbuild.downloadLanguageServer" = false; + "mesonbuild.languageServerPath" = getExe pkgs.mesonlsp; + "mesonbuild.mesonPath" = getExe pkgs.meson; + "mesonbuild.muomPath" = getExe pkgs.muon; + + "rust-analyzer.server.path" = getExe pkgs.rust-analyzer; + + "go.formatFlags" = [ "-s" ]; + "go.alternateTools" = with pkgs; { + go = getExe go; + gopls = getExe gopls; + dlv = getExe delve; + }; + + # vscode+vim configuration + "vim.useSystemClipboard" = true; + "vim.easymotion" = true; + "vim.hlsearch" = true; + "vim.gdefault" = true; + "vim.sneak" = true; + "vim.sneakReplacesF" = true; + "vim.vimrc.enable" = true; + "vim.vimrc.path" = ./../.vimrc; + "extensions.experimental.affinity" = { + "vscodevim.vim" = 1; + }; + "vim.useCtrlKeys" = true; + "vim.handleKeys" = { + "<C-p>" = false; # command palette + "<C-n>" = false; # new file + "<C-b>" = false; # toggle sidebar + "<C-k>" = false; # key with a million uses + "<C-a>" = false; # select all text + }; + "vim.normalModeKeyBindings" = [ + # add binds to manage bookmarks (from the bookmarks extension) + { + before = [ + "<leader>" + "m" + ]; + commands = [ "bookmarks.toggle" ]; + } + { + before = [ + "<leader>" + "b" + ]; + commands = [ "bookmarks.list" ]; + } + ]; + + # some other extension behavior + "direnv.restart.automatic" = true; +} |
