nixos-config/home/codium.nix
2025-03-03 09:28:29 -05:00

199 lines
6 KiB
Nix

{ pkgs, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium;
mutableExtensionsDir = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
extensions =
# if unfree
# with pkgs.vscode-marketplace;
(
with pkgs.open-vsx;
[
vscodevim.vim
jnoortheen.nix-ide
github.github-vscode-theme
rust-lang.rust-analyzer
shd101wyy.markdown-preview-enhanced
alefragnani.bookmarks
tomrijndorp.find-it-faster
streetsidesoftware.code-spell-checker
emilast.logfilehighlighter
]
);
userSettings =
let
vimCommonKeyBindings = [
{
"before" = [ "C-a" ];
"commands" = [ "cursorHome" ];
}
{
"before" = [ "C-e" ];
"commands" = [ "cursorEnd" ];
}
];
in
{
"workbench.colorTheme" = "GitHub Dark Default";
"workbench.startupEditor" = "none";
"workbench.enableExperiments" = false;
"files.autoSave" = "onFocusChange";
"editor.fontFamily" = "IBM Plex Mono";
"editor.fontSize" = 15;
"editor.minimap.enabled" = false;
"window.zoomLevel" = 0.5;
"security.promptForLocalFileProtocolHandling" = false;
"security.promptForRemoteFileProtocolHandling" = false;
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"editor.acceptSuggestionOnEnter" = "off";
"editor.acceptSuggestionOnCommitCharacter" = false;
"git.openRepositoryInParentFolders" = "never";
"git.ignoreLimitWarning" = true;
"extensions.ignoreRecommendations" = true;
"telemetry.enableTelemetry" = false;
"telemetry.telemetryLevel" = "off";
"window.titleBarStyle" = "custom";
# terminal stuff
"terminal.integrated.cursorBlinking" = true;
"terminal.integrated.cursorStyle" = "line";
"terminal.integrated.customGlyphs" = false;
"terminal.integrated.env.linux" = {
# https://github.com/tomrijndorp/vscode-finditfaster/issues/112#issuecomment-2475227546
FZF_DEFAULT_OPTS = "--bind ctrl-n:down,ctrl-p:up";
};
# don't let the workbench handle terminal keys like ctrl+n and friends
"terminal.integrated.sendKeybindingsToShell" = true;
"terminal.integrated.allowChords" = false;
"markdown-preview-enhanced.previewTheme" = "github-dark.css";
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
"bookmarks.saveBookmarksInProject" = true;
"cSpell.enabledFileTypes" = {
"markdown" = true;
"*" = false;
};
# vim stuff
"vim.leader" = ",";
"vim.normalModeKeyBindings" = vimCommonKeyBindings ++ [
{
"before" = [ ";" ];
"after" = [ ":" ];
"silent" = true;
}
{
"before" = [
"<leader>"
"m"
];
"commands" = [ "bookmarks.toggle" ];
}
{
"before" = [
"<leader>"
"l"
];
"commands" = [ "bookmarks.toggleLabeled" ];
}
{
"before" = [
"<leader>"
"b"
];
"commands" = [ "bookmarks.list" ];
}
{
"before" = [
"<leader>"
"s"
];
"commands" = [ "workbench.action.toggleSidebarVisibility" ];
}
{
"before" = [
"<leader>"
"f"
"f"
];
"commands" = [ "find-it-faster.findFiles" ];
}
{
"before" = [
"<leader>"
"f"
"g"
];
"commands" = [ "find-it-faster.findWithinFiles" ];
}
{
"before" = [
"<leader>"
"f"
"t"
];
"commands" = [ "find-it-faster.findWithinFilesWithType" ];
}
# "gd" for definitions is by default
{
"before" = [
"g"
"r"
];
"commands" = [ "editor.action.goToReferences" ];
}
# the default is weird when you need to go back within a file
{
"before" = [ "C-o" ];
"commands" = [ "workbench.action.navigateBack" ];
}
{
"before" = [ "C-i" ];
"commands" = [ "workbench.action.navigateForward" ];
}
# insert line without leaving normal mode
{
"before" = [
"<space>"
"o"
];
"commands" = [ "editor.action.insertLineAfter" ];
}
{
"before" = [
"<space>"
"O"
];
"commands" = [ "editor.action.insertLineBefore" ];
}
];
"vim.insertModeKeyBindings" = vimCommonKeyBindings ++ [
{
"before" = [ "C-k" ];
"commands" = [ "acceptSelectedSuggestion" ];
}
];
"vim.visualModeKeyBindings" = vimCommonKeyBindings ++ [
{
"before" = [ ">" ];
"commands" = [ "editor.action.indentLines" ];
}
{
"before" = [ "<" ];
"commands" = [ "editor.action.outdentLines" ];
}
];
"extensions.experimental.affinity" = {
"vscodevim.vim" = 1;
};
};
};
};
}