nix/modules/home/vscode.nix
2024-09-15 11:22:50 +02:00

179 lines
4.9 KiB
Nix

{ pkgs, ... }:
{
programs.vscode = {
enable = true;
enableUpdateCheck = false;
extensions =
(with pkgs.vscode-extensions; [
# Bash
timonwong.shellcheck
# C#
ms-dotnettools.vscodeintellicode-csharp
ms-dotnettools.vscode-dotnet-runtime
ms-dotnettools.csharp
ms-dotnettools.csdevkit
# Nix
arrterian.nix-env-selector
jnoortheen.nix-ide
# Theme and Icons
catppuccin.catppuccin-vsc-icons
catppuccin.catppuccin-vsc
# General Dev
continue.continue
dotenv.dotenv-vscode
ms-vscode.hexeditor
mkhl.direnv
skellock.just
ms-vscode-remote.remote-ssh
# Formatter
redhat.vscode-xml
])
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "remote-ssh-edit";
publisher = "ms-vscode-remote";
version = "0.47.2";
sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
}
];
# ++ (with extensions.vscode-marketplace; [
# # C#
# patcx.vscode-nuget-gallery
# # Tool
# jetpack-io.devbox
# rangav.vscode-thunder-client
# ]);
keybindings = [
{
"key" = "ctrl+k ctrl+c";
"command" = "editor.action.commentLine";
"when" = "editorTextFocus && !editorReadonly";
}
{
"key" = "ctrl+k ctrl+u";
"command" = "editor.action.removeCommentLine";
"when" = "editorTextFocus && !editorReadonly";
}
{
"key" = "ctrl+r ctrl+r";
"command" = "editor.action.rename";
"when" = "editorHasRenameProvider && editorTextFocus && !editorReadonly";
}
{
"key" = "alt+d";
"command" = "editor.action.copyLinesDownAction";
"when" = "editorTextFocus && !editorReadonly";
}
{
"key" = "ctrl+shift+alt+down";
"command" = "-editor.action.copyLinesDownAction";
"when" = "editorTextFocus && !editorReadonly";
}
{
"key" = "shift+alt+d";
"command" = "editor.action.copyLinesUpAction";
"when" = "editorTextFocus && !editorReadonly";
}
{
"key" = "ctrl+shift+alt+up";
"command" = "-editor.action.copyLinesUpAction";
"when" = "editorTextFocus && !editorReadonly";
}
];
userSettings = {
# Editor
"telemetry.telemetryLevel" = "off";
"update.mode" = "none";
"workbench.colorTheme" = "Flexoki Light";
"workbench.iconTheme" = "catppuccin-latte";
"workbench.editor.wrapTabs" = true;
"explorer.excludeGitIgnore" = true;
"files.autoSave" = "afterDelay";
"files.autoSaveDelay" = 5000;
"diffEditor.codeLens" = true;
"diffEditor.ignoreTrimWhitespace" = false;
"editor.bracketPairColorization.enabled" = true;
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = true;
"editor.quickSuggestions" = {
"comments" = "on";
"strings" = "on";
"other" = "on";
};
"window.titleBarStyle" = "custom";
# Git
"git.enableSmartCommit" = true;
"git.autofetch" = true;
# C#
# "csharp.maxProjectFileCountForDiagnosticAnalysis" = 100;
# "csharp.semanticHighlighting.enabled" = true;
# "csharp.suppressHiddenDiagnostics" = false;
# "dotnetAcquisitionExtension.enableTelemetry" = false;
# "omnisharp.enableEditorConfigSupport" = true;
# "omnisharp.useModernNet" = true;
# "omnisharp.useGlobalMono" = "never";
#"dotnet.dotnetPath" = "/home/${config.home.username}/.nix-profile/bin/dotnet";
#"omnisharp.sdkPath" = "/home/${config.home.username}/.nix-profile/bin/dotnet";
#"dotnet.preferCSharpExtension" = false;
# "dotnetAcquisitionExtension.existingDotnetPath" = [
# {
# "extensionId" = "ms-dotnettools.csdevkit";
# "path" = "/home/${config.home.username}/.nix-profile/bin/dotnet";
# }
# ];
# "NugetGallery.sources" = [
# "{\"name\": \"nuget.org\",\"url\": \"https://api.nuget.org/v3/index.json\"}"
# ];
# Markdown
"markdown-preview-enhanced.previewTheme" = "github-dark.css";
# Python
"python.experiments.enabled" = false;
"python.analysis.inlayHints.variableTypes" = true;
"python.analysis.inlayHints.pytestParameters" = true;
"python.analysis.inlayHints.functionReturnTypes" = true;
# Bash
"shellcheck.customArgs" = [ "-x" ];
"shellcheck.exclude" = [ "2001" ];
# Nix
"nix.formatterPath" = [
"nix"
"fmt"
"--"
"-"
];
"nix.serverPath" = "nil";
"nix.enableLanguageServer" = true;
"nix.serverSettings" = {
"nil" = {
"diagnostics" = {
"ignored" = [
"unused_binding"
"unused_with"
];
};
};
};
};
};
}