387 lines
14 KiB
Nix
387 lines
14 KiB
Nix
{ pkgs, config, system, inputs, ... }: rec {
|
|
|
|
# Make VSCode config writable
|
|
# https://github.com/nix-community/home-manager/issues/1800#issuecomment-2262881846
|
|
home.activation.makeVSCodeConfigWritable = let
|
|
configDirName = {
|
|
"vscode" = "Code";
|
|
"vscode-insiders" = "Code - Insiders";
|
|
"vscodium" = "VSCodium";
|
|
}.${programs.vscode.package.pname};
|
|
configPath = "${config.xdg.configHome}/${configDirName}/User/settings.json";
|
|
in {
|
|
after = [ "writeBoundary" ];
|
|
before = [ ];
|
|
data = ''
|
|
install -m 0640 "$(readlink ${configPath})" ${configPath}
|
|
'';
|
|
};
|
|
|
|
programs.vscode = {
|
|
enable = true;
|
|
package = pkgs.vscode.fhsWithPackages
|
|
(ps: with pkgs; [ dotnetCorePackages.sdk_8_0 mypy ]);
|
|
extensions =
|
|
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace;
|
|
with inputs.nix-vscode-extensions.extensions.${system}.vscode-marketplace-release; [
|
|
# Themes
|
|
(pkgs.catppuccin-vsc.override {
|
|
accent = "blue";
|
|
extraBordersEnabled = true;
|
|
italicKeywords = false;
|
|
customUIColors = {
|
|
mocha = { "statusBar.foreground" = "accent"; };
|
|
macchiato = { "statusBar.foreground" = "accent"; };
|
|
frappe = { "statusBar.foreground" = "accent"; };
|
|
latte = { "statusBar.foreground" = "accent"; };
|
|
};
|
|
})
|
|
catppuccin.catppuccin-vsc-icons
|
|
|
|
# C#
|
|
ms-dotnettools.csharp
|
|
ms-dotnettools.csdevkit
|
|
ms-dotnettools.vscodeintellicode-csharp
|
|
ms-dotnettools.vscode-dotnet-runtime
|
|
csharpier.csharpier-vscode
|
|
patcx.vscode-nuget-gallery
|
|
|
|
# Python
|
|
ms-python.python
|
|
ms-python.vscode-pylance
|
|
ms-python.debugpy
|
|
ms-python.black-formatter
|
|
charliermarsh.ruff
|
|
matangover.mypy
|
|
|
|
# JavaScript / TypeScript
|
|
dbaeumer.vscode-eslint
|
|
yoavbls.pretty-ts-errors
|
|
quick-lint.quick-lint-js
|
|
gregorbiswanger.json2ts
|
|
vendicated.vencord-companion
|
|
|
|
# Lua
|
|
sumneko.lua
|
|
|
|
# Luau
|
|
evaera.vscode-rojo
|
|
undermywheel.roblox-lua
|
|
johnnymorganz.stylua
|
|
johnnymorganz.luau-lsp
|
|
nightrains.robloxlsp
|
|
|
|
# Go
|
|
golang.go
|
|
|
|
# Kotlin
|
|
mathiasfrohlich.kotlin
|
|
|
|
# Java
|
|
vscjava.vscode-java-debug
|
|
vscjava.vscode-gradle
|
|
vscjava.vscode-maven
|
|
vscjava.vscode-java-dependency
|
|
vscjava.vscode-java-test
|
|
redhat.java
|
|
|
|
# Bash
|
|
mads-hartmann.bash-ide-vscode
|
|
foxundermoon.shell-format
|
|
timonwong.shellcheck
|
|
shakram02.bash-beautify
|
|
|
|
# Paradox Interactive Scripting
|
|
tboby.cwtools-vscode
|
|
|
|
# Git
|
|
donjayamanne.githistory
|
|
codezombiech.gitignore
|
|
eamodio.gitlens
|
|
|
|
# GitHub
|
|
ziyasal.vscode-open-in-github
|
|
pkgs.vscode-extensions.github.vscode-github-actions
|
|
github.vscode-pull-request-github
|
|
|
|
# Misc - Language Support
|
|
jnoortheen.nix-ide
|
|
tamasfe.even-better-toml
|
|
matthewpi.caddyfile-support
|
|
editorconfig.editorconfig
|
|
prisma.prisma
|
|
redhat.vscode-yaml
|
|
ms-vscode.powershell
|
|
irongeek.vscode-env
|
|
wholroyd.jinja
|
|
ms-vscode.makefile-tools
|
|
tnze.snbt
|
|
logerfo.sln-support
|
|
tboby.paradox-syntax
|
|
xteal.mcmeta
|
|
footerman.heracles-support
|
|
|
|
# Misc - Debuggers
|
|
firefox-devtools.vscode-firefox-debug
|
|
rogalmic.zsh-debug
|
|
|
|
# Misc - Linters
|
|
tekumara.typos-vscode
|
|
stylelint.vscode-stylelint
|
|
davidanson.vscode-markdownlint
|
|
|
|
# Misc - Formatters
|
|
esbenp.prettier-vscode
|
|
|
|
# Misc - Visuals
|
|
naumovs.color-highlight
|
|
kshetline.ligatures-limited
|
|
|
|
# Misc - Utilities
|
|
adpyke.codesnap
|
|
exodiusstudios.comment-anchors
|
|
elypia.magick-image-reader
|
|
adpyke.vscode-sql-formatter
|
|
qwtel.sqlite-viewer
|
|
yy0931.vscode-sqlite3-editor
|
|
supermaven.supermaven # requires a supermaven subscription - https://supermaven.com/
|
|
leonardssh.vscord
|
|
alefragnani.project-manager
|
|
mkhl.direnv
|
|
ms-vsliveshare.vsliveshare
|
|
ms-azuretools.vscode-docker
|
|
ms-vscode-remote.remote-ssh
|
|
pkgs.vscode-extensions.ms-vscode-remote.remote-ssh-edit
|
|
ms-vscode.remote-server
|
|
ms-vscode.remote-explorer
|
|
pkgs.vscode-extensions.ms-vscode-remote.remote-containers
|
|
ms-vscode.remote-repositories
|
|
formulahendry.auto-rename-tag
|
|
prunoideae.probejs
|
|
d-koppenhagen.file-tree-to-text-generator
|
|
];
|
|
userSettings = {
|
|
"DO-NOT-EDIT-1" = "This file is managed by the Nix module located at `/etc/nixos/home-manager/vscode.nix`.";
|
|
"DO-NOT-EDIT-2" = "Changes will be overwritten when VSCode is restarted.";
|
|
"DO-NOT-EDIT-3" = "To persist changes, edit the module and run `upd` in your terminal.";
|
|
"editor.tokenColorCustomizations" = {
|
|
"[Catppuccin*]" = {
|
|
"variables" = "#82eaf0";
|
|
"textMateRules" = [
|
|
{
|
|
"scope" = "comment";
|
|
"settings" = {
|
|
"foreground" = "#f465ec";
|
|
"fontStyle" = "italic";
|
|
};
|
|
}
|
|
{
|
|
"scope" = "punctuation.definition.comment";
|
|
"settings" = {
|
|
"foreground" = "#f465ec";
|
|
"fontStyle" = "italic";
|
|
};
|
|
}
|
|
{
|
|
"scope" = "variable.other.readwrite";
|
|
"settings" = { "foreground" = "#82eaf0"; };
|
|
}
|
|
{
|
|
"scope" = "keyword.operator";
|
|
"settings" = { "foreground" = "#EBA0AC"; };
|
|
}
|
|
{
|
|
"scope" = "meta.block.paradox";
|
|
"settings" = { "foreground" = "#EBA0AC"; };
|
|
}
|
|
{
|
|
"scope" = "meta.shebang.shell";
|
|
"settings" = {
|
|
"foreground" = "#fb5d1f";
|
|
"fontStyle" = "italic bold";
|
|
};
|
|
}
|
|
{
|
|
"scope" = "punctuation.definition.comment.shebang.shell";
|
|
"settings" = {
|
|
"foreground" = "#fb5d1f";
|
|
"fontStyle" = "italic bold";
|
|
};
|
|
}
|
|
{
|
|
"scope" =
|
|
"string.quoted.double.shell variable.other.normal.shell";
|
|
"settings" = { "foreground" = "#82e5f0"; };
|
|
}
|
|
{
|
|
"scope" = "variable.other.property.ts";
|
|
"settings" = { "foreground" = "#32d5e7"; };
|
|
}
|
|
];
|
|
};
|
|
};
|
|
"[python]" = {
|
|
"editor.formatOnType" = true;
|
|
"editor.formatOnSave" = true;
|
|
"editor.defaultFormatter" = "charliermarsh.ruff";
|
|
"editor.codeActionsOnSave" = {
|
|
"source.fixAll" = "explicit";
|
|
"source.organizeImports" = "explicit";
|
|
};
|
|
};
|
|
"python.terminal.activateEnvironment" = false;
|
|
"python.terminal.activateEnvInCurrentTerminal" = false;
|
|
"[csharp]" = {
|
|
"editor.defaultFormatter" = "csharpier.csharpier-vscode";
|
|
"editor.formatOnSave" = true;
|
|
"editor.formatOnSaveMode" = "file";
|
|
};
|
|
"[typescript]" = {
|
|
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
|
"editor.formatOnType" = false;
|
|
"editor.formatOnPaste" = true;
|
|
"editor.formatOnSave" = true;
|
|
"editor.formatOnSaveMode" = "file";
|
|
"files.autoSave" = "onFocusChange";
|
|
};
|
|
"[markdown]" = { "files.trimTrailingWhitespace" = false; };
|
|
"yaml.schemas" = {
|
|
"https://json.schemastore.org/github-workflow.json" = [
|
|
".github/workflows/*.{yml,yaml}"
|
|
".forgejo/workflows/*.{yml,yaml}"
|
|
".gitea/workflows/*.{yml,yaml}"
|
|
];
|
|
};
|
|
"yaml.schemaStore.enable" = true;
|
|
"nix.enableLanguageServer" = true;
|
|
"nix.serverSettings" = {
|
|
"nil" = { "formatting" = { "command" = [ "nixfmt" ]; }; };
|
|
};
|
|
"nix.serverPath" = "nil";
|
|
"vscord.status.image.large.debugging.key" =
|
|
"https://vscord.catppuccin.com/mocha/debugging.webp";
|
|
"vscord.status.image.large.editing.key" =
|
|
"https://vscord.catppuccin.com/mocha/{lang}.webp";
|
|
"vscord.status.image.large.idle.key" =
|
|
"https://vscord.catppuccin.com/mocha/idle-{app_id}.webp";
|
|
"vscord.status.image.large.notInFile.key" =
|
|
"https://vscord.catppuccin.com/mocha/idle-{app_id}.webp";
|
|
"vscord.status.image.large.viewing.key" =
|
|
"https://vscord.catppuccin.com/mocha/{lang}.webp";
|
|
"vscord.status.image.small.debugging.key" =
|
|
"https://vscord.catppuccin.com/mocha/debugging.webp";
|
|
"vscord.status.image.small.editing.key" =
|
|
"https://vscord.catppuccin.com/mocha/{app_id}.webp";
|
|
"vscord.status.image.small.idle.key" =
|
|
"https://vscord.catppuccin.com/mocha/idle.webp";
|
|
"vscord.status.image.small.notInFile.key" =
|
|
"https://vscord.catppuccin.com/mocha/idle.webp";
|
|
"vscord.status.image.small.viewing.key" =
|
|
"https://vscord.catppuccin.com/mocha/{app_id}.webp";
|
|
"git.enableSmartCommit" = true;
|
|
"git.autofetch" = true;
|
|
"git.confirmSync" = false;
|
|
"security.workspace.trust.untrustedFiles" = "open";
|
|
"files.insertFinalNewline" = true;
|
|
"files.trimFinalNewlines" = true;
|
|
"files.trimTrailingWhitespace" = true;
|
|
"editor.inlineSuggest.enabled" = true;
|
|
"diffEditor.ignoreTrimWhitespace" = false;
|
|
"git.enableCommitSigning" = true;
|
|
"editor.accessibilitySupport" = "off";
|
|
"git.inputValidationSubjectLength" = null;
|
|
"git.inputValidationLength" = 150;
|
|
"editor.fontLigatures" =
|
|
"'cv01', 'cv02', 'ss05', 'ss08', 'ss03', 'cv29', 'cv30', 'cv11'";
|
|
"workbench.iconTheme" = "catppuccin-latte";
|
|
"codesnap.shutterAction" = "copy";
|
|
"codesnap.transparentBackground" = true;
|
|
"codesnap.realLineNumbers" = true;
|
|
"codesnap.roundedCorners" = true;
|
|
"codesnap.showWindowTitle" = true;
|
|
"codesnap.showWindowControls" = false;
|
|
"gitlens.remotes" = [{
|
|
"domain" = "www.coastalcommits.com";
|
|
"type" = "Gitea";
|
|
}];
|
|
"markdownlint.config" = {
|
|
"ol-prefix" = false;
|
|
"html" = false;
|
|
};
|
|
"markdownlint.lintWorkspaceGlobs" = [
|
|
"**/*.{md,mkd,mdwn,mdown,markdown,markdn,mdtxt,mdtext,workbook}"
|
|
"!**/node_modules"
|
|
"!**/bower_components"
|
|
"!**/.git"
|
|
"!**/LICENSE"
|
|
"!**/LICENSE.md"
|
|
];
|
|
"editor.largeFileOptimizations" = false;
|
|
"files.associations" = {
|
|
".env" = "properties";
|
|
"*.ini" = "paradox";
|
|
"*.kt" = "kotlin";
|
|
};
|
|
"editor.semanticHighlighting.enabled" = true;
|
|
"[css]" = { "editor.defaultFormatter" = "vscode.css-language-features"; };
|
|
"git.ignoreRebaseWarning" = true;
|
|
"remote.autoForwardPortsSource" = "hybrid";
|
|
"git.replaceTagsWhenPull" = true;
|
|
"redhat.telemetry.enabled" = true;
|
|
"editor.fontSize" = 14;
|
|
"workbench.colorTheme" = "Catppuccin Mocha";
|
|
"editor.codeLensFontFamily" =
|
|
"'ComicCodeLigatures Nerd Font', 'Comic Code Ligatures', 'FiraCode Nerd Font'";
|
|
"editor.inlayHints.fontFamily" =
|
|
"'ComicCodeLigatures Nerd Font', 'Comic Code Ligatures', 'FiraCode Nerd Font', 'FiraCode Nerd Font Light'";
|
|
"editor.fontFamily" =
|
|
"'ComicCodeLigatures Nerd Font', 'Comic Code Ligatures', 'FiraCode Nerd Font'";
|
|
"explorer.confirmDelete" = false;
|
|
"window.confirmSaveUntitledWorkspace" = false;
|
|
"cwtools.cache.stellaris" = "/bulk/steam/steamapps/common/Stellaris";
|
|
"python.analysis.inlayHints.callArgumentNames" = "partial";
|
|
"python.analysis.inlayHints.functionReturnTypes" = true;
|
|
"explorer.confirmDragAndDrop" = false;
|
|
"editor.unicodeHighlight.allowedLocales" = { ru = true; };
|
|
"terminal.integrated.defaultProfile.linux" = "zsh";
|
|
"explorer.confirmPasteNative" = false;
|
|
"editor.renderWhitespace" = "none";
|
|
"explorer.fileNesting.patterns" = {
|
|
"*.ts" = "\${capture}.js";
|
|
"*.js" = "\${capture}.js.map, \${capture}.min.js, \${capture}.d.ts";
|
|
"*.jsx" = "\${capture}.js";
|
|
"*.tsx" = "\${capture}.ts";
|
|
"tsconfig.json" = "tsconfig.*.json";
|
|
"package.json" =
|
|
"package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb";
|
|
"Cargo.toml" = "Cargo.lock";
|
|
"*.sqlite" = "\${capture}.\${extname}-*";
|
|
"*.db" = "\${capture}.\${extname}-*";
|
|
"*.sqlite3" = "\${capture}.\${extname}-*";
|
|
"*.db3" = "\${capture}.\${extname}-*";
|
|
"*.sdb" = "\${capture}.\${extname}-*";
|
|
"*.s3db" = "\${capture}.\${extname}-*";
|
|
};
|
|
"[shellscript]" = {
|
|
"editor.defaultFormatter" = "shakram02.bash-beautify";
|
|
};
|
|
"vscord.app.name" = "Visual Studio Code";
|
|
"workbench.editorAssociations" = { "*.db" = "sqlite3-editor.editor"; };
|
|
"vs-code-prettier-eslint.prettierLast" = false;
|
|
"typescript.updateImportsOnFileMove.enabled" = "always";
|
|
"supermaven.allowGitignore" = true;
|
|
"[javascript]" = {
|
|
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
|
};
|
|
"[json]" = {
|
|
"editor.defaultFormatter" = "vscode.json-language-features";
|
|
};
|
|
"go.toolsManagement.autoUpdate" = true;
|
|
"remote.SSH.remotePlatform" = { "eclipse" = "linux"; };
|
|
"terminal.integrated.fontWeightBold" = "bold";
|
|
"terminal.integrated.fontFamily" =
|
|
"'ComicCodeLigatures Nerd Font', 'Comic Code Ligatures', 'FiraCode Nerd Font'";
|
|
"[jsonc]" = { "editor.defaultFormatter" = "esbenp.prettier-vscode"; };
|
|
};
|
|
};
|
|
}
|