123 lines
4.2 KiB
Nix
123 lines
4.2 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
inputs,
|
|
config,
|
|
system,
|
|
...
|
|
}:
|
|
{
|
|
programs.vscode = {
|
|
enable = true;
|
|
package = pkgs.vscodium;
|
|
mutableExtensionsDir = true;
|
|
extensions =
|
|
with pkgs.vscode-extensions;
|
|
[
|
|
ms-python.python
|
|
vscodevim.vim
|
|
yzhang.markdown-all-in-one
|
|
bungcip.better-toml
|
|
eamodio.gitlens
|
|
jnoortheen.nix-ide
|
|
mkhl.direnv
|
|
editorconfig.editorconfig
|
|
]
|
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
|
{
|
|
name = "Sync-Rsync";
|
|
publisher = "vscode-ext";
|
|
version = "0.36.0";
|
|
sha256 = "sha256-0b/OHLZfXo0NAVAVkzZSqMGDzF0uvPRoiqsZtW1iOdA";
|
|
}
|
|
# TODO: probably available in nixpkgs soonish?
|
|
{
|
|
name = "mypy-type-checker";
|
|
publisher = "ms-python";
|
|
version = "2023.3.12681020";
|
|
sha256 = "sha256-rhed7CQlvxksVCGc9nPU2oYQWtXcAV5TzuG63e8Y3zM=";
|
|
}
|
|
{
|
|
name = "black-formatter";
|
|
publisher = "ms-python";
|
|
version = "2023.5.12771008";
|
|
sha256 = "sha256-lJG0RRUUMhQGs2a6oBtoqt+uY1kSJ0+cbmaP07hNh2o=";
|
|
}
|
|
{
|
|
name = "vscode-pets";
|
|
publisher = "tonybaloney";
|
|
version = "1.25.1";
|
|
sha256 = "sha256-as3e2LzKBSsiGs/UGIZ06XqbLh37irDUaCzslqITEJQ=";
|
|
}
|
|
];
|
|
userSettings =
|
|
let
|
|
defaultPython = pkgs.python3.withPackages (ps: [
|
|
ps.jedi
|
|
ps.jedi-language-server
|
|
ps.pip
|
|
ps.setuptools # for pkg_resources
|
|
ps.black
|
|
ps.mypy
|
|
]);
|
|
in
|
|
{
|
|
"editor.fontLigatures" = true;
|
|
"editor.accessibilitySupport" = false; # prevent asking
|
|
"editor.cursorBlinking" = "phase";
|
|
"editor.stickyScroll.enabled" = true;
|
|
"workbench.editor.highlightModifiedTabs" = true;
|
|
"window.autoDetectColorScheme" = true;
|
|
"workbench.preferredDarkColorTheme" = "Default Dark Modern";
|
|
"workbench.preferredLightColorTheme" = "Default Light Modern";
|
|
"[nix]" = {
|
|
"editor.insertSpaces" = true;
|
|
"editor.tabSize" = 2;
|
|
# for now, disable automatic formatting to prevent disruption of existing code bases
|
|
"editor.formatOnPaste" = false;
|
|
"editor.formatOnSave" = false;
|
|
"editor.formatOnType" = false;
|
|
};
|
|
"nix.formatterPath" = lib.getExe pkgs.nixfmt-rfc-style;
|
|
"nix.enableLanguageServer" = true;
|
|
"nix.serverPath" = lib.getExe pkgs.nixd;
|
|
"nix.serverSettings" = { };
|
|
"editor.fontSize" = 13;
|
|
"editor.fontWeight" = "normal";
|
|
"git.detectSubmodulesLimit" = 30;
|
|
"[python]" = {
|
|
"breadcrumbs.showClasses" = true;
|
|
"breadcrumbs.showFunctions" = true;
|
|
"gitlens.codeLens.symbolScopes" = [ "!Module" ];
|
|
"editor.defaultFormatter" = "ms-python.black-formatter";
|
|
"editor.formatOnSave" = true;
|
|
};
|
|
"python.languageServer" = "Jedi"; # don't use proprietary pylance server
|
|
"python.defaultInterpreterPath" = "${defaultPython}/bin/python";
|
|
"black-formatter.path" = [ "${pkgs.python3Packages.black}/bin/black" ];
|
|
"black-formatter.importStrategy" = "fromEnvironment";
|
|
"mypy-type-checker.path" = [ "${pkgs.python3Packages.mypy}/bin/mypy" ];
|
|
"mypy-type-checker.importStrategy" = "fromEnvironment";
|
|
"mypy-type-checker.args" = [ "--ignore-missing-imports" ];
|
|
"gitlens.telemetry.enabled" = false;
|
|
"vim.highlightedyank.enable" = true;
|
|
"vim.history" = 500;
|
|
"vim.neovimUseConfigFile" = true;
|
|
"vim.enableNeovim" = true;
|
|
"git.suggestSmartCommit" = false;
|
|
"editor.rulers" = [ 79 ];
|
|
"vim.useSystemClipboard" = true;
|
|
"vim.smartRelativeLine" = true;
|
|
"diffEditor.ignoreTrimWhitespace" = false;
|
|
"files.associations" = {
|
|
"*.py" = "python";
|
|
};
|
|
"editor.renderWhitespace" = "all";
|
|
"editor.fontFamily" = "Iosevka Curly Slab, Menlo, Monaco, 'Courier New', monospace";
|
|
"vim.neovimPath" = lib.getExe pkgs.myVim;
|
|
"sync-rsync.options" = [ ];
|
|
"direnv.path.executable" = lib.getExe pkgs.direnv;
|
|
};
|
|
};
|
|
}
|