flake/home-manager/vscode.nix

451 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}
'';
};
home.packages = with pkgs; [
powershell
ruff
ruff-lsp
];
programs.vscode = {
enable = true;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
package = pkgs.vscode;
# package = pkgs.vscode.fhsWithPackages (
# ps: with pkgs; [
# dotnetCorePackages.sdk_8_0
# jdk21
# go
# ]
# );
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#
pkgs.vscode-extensions.ms-dotnettools.csharp
pkgs.vscode-extensions.ms-dotnettools.csdevkit
pkgs.vscode-extensions.ms-dotnettools.vscodeintellicode-csharp
pkgs.vscode-extensions.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
ms-python.mypy-type-checker
charliermarsh.ruff
# 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
pkgs.vscode-extensions.golang.go
# Hugo
budparr.language-hugo-vscode
kaellarkin.hugo-shortcode-syntax
# 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
bradlc.vscode-tailwindcss
jnoortheen.nix-ide
tamasfe.even-better-toml
jnoortheen.xonsh
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
vasubasraj.flashpost
adpyke.codesnap
exodiusstudios.comment-anchors
elypia.magick-image-reader
adpyke.vscode-sql-formatter
qwtel.sqlite-viewer
yy0931.vscode-sqlite3-editor
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
# Copilot
github.copilot
github.copilot-chat
];
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";
};
};
"ruff.path" = [ "${pkgs.ruff}/bin/ruff" ];
"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";
"catppuccin.syncWithIconPack" = false;
"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";
"**/xonsh/*.py" = "xonsh";
};
"editor.semanticHighlighting.enabled" = true;
"[css]" = {
"editor.defaultFormatter" = "esbenp.prettier-vscode";
};
"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" = "xonsh";
"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";
};
"typescript.updateImportsOnFileMove.enabled" = "always";
"[javascript]" = {
"editor.defaultFormatter" = "esbenp.prettier-vscode";
};
"[json]" = {
"editor.defaultFormatter" = "esbenp.prettier-vscode";
};
"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";
};
"github.copilot.enable" = {
"markdown" = true;
};
};
};
}