{ pkgs, lib, ... }: { nixpkgs.config.allowUnfree = true; programs.vscode = { enable = true; package = pkgs.vscodium; profiles = { default = { extensions = with pkgs.vscode-extensions; [ batisteo.vscode-django bradlc.vscode-tailwindcss christian-kohler.npm-intellisense christian-kohler.path-intellisense continue.continue davidanson.vscode-markdownlint dbaeumer.vscode-eslint donjayamanne.githistory esbenp.prettier-vscode ethansk.restore-terminals formulahendry.auto-close-tag formulahendry.auto-rename-tag gruntfuggly.todo-tree jnoortheen.nix-ide mechatroner.rainbow-csv ms-azuretools.vscode-docker njpwerner.autodocstring octref.vetur oderwat.indent-rainbow shd101wyy.markdown-preview-enhanced streetsidesoftware.code-spell-checker supermaven.supermaven tomoki1207.pdf visualstudioexptteam.intellicode-api-usage-examples visualstudioexptteam.vscodeintellicode vscode-icons-team.vscode-icons vue.volar wholroyd.jinja yoavbls.pretty-ts-errors tamasfe.even-better-toml ms-ceintl.vscode-language-pack-pl rust-lang.rust-analyzer fill-labs.dependi usernamehw.errorlens bierner.docs-view stkb.rewrap ms-vscode.live-server vadimcn.vscode-lldb batisteo.vscode-django vitaliymaz.vscode-svg-previewer ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ { name = "goto-alias"; publisher = "antfu"; version = "0.2.1"; hash = "sha256-BJBJVG/zW2BW6K0UqQ4EE12VVIxW3g+z5CecZXRPIrM="; } { name = "vite"; publisher = "antfu"; version = "0.2.5"; hash = "sha256-F3uaqoaLXLE7M8OPzNIIUSraTBeRMwtjxrbgQyMIyZE="; } { name = "django-html"; publisher = "bibhasdn"; version = "1.3.0"; hash = "sha256-7xVJVcjmwl6917lqkTa0KFwMLkAvHkNT2wVML14gVCk="; } { name = "one-dark-pro-monokai-darker"; publisher = "eserozvataf"; version = "1.1.0"; hash = "sha256-jUjBiy0CD7jw2WBMvM3h8bEC2ySEuj7532dC3v9lpyI="; } { name = "bootstrap-intellisense"; publisher = "hossaini"; version = "3.0.2"; hash = "sha256-stZfbh42HncdRzFZ9ShumZ9Tuery9RF9c8rk3TD3P2g="; } { name = "tab-indent-space-align"; publisher = "j-zeppenfeld"; version = "0.0.3"; hash = "sha256-+WEdYJOVWW7YumfzLkvZmrnpUiC85oLsG1BKMwL1NHc="; } { name = "bun-lockb"; publisher = "jaaxxx"; version = "0.0.7"; hash = "sha256-CkdH/luVTFycRn4Td6ovFnEQep+tVEIXsyUjhfJwfN4="; } { name = "search-node-modules"; publisher = "jasonnutter"; version = "1.3.0"; hash = "sha256-X2CkCVF46McnXDlASlRHKixlAzR+hU4ys8A8JsbpfYI="; } { name = "polacode-2019"; publisher = "jeff-hykin"; version = "0.6.1"; hash = "sha256-SbfsD28gaVHAmJskUuc1Q8kA47jrVa3OO5Ur7ULk3jI="; } { name = "vsc-python-indent"; publisher = "kevinrose"; version = "1.21.0"; hash = "sha256-SvJhVG8sofzV0PebZG4IIORX3AcfmErDQ00tRF9fk/4="; } { name = "json-to-ts"; publisher = "mariusalchimavicius"; version = "1.8.0"; hash = "sha256-WoSycVtUAkVXv7BDuh+jFbnaU1IdVLvVjOYuIuUp79M="; } { name = "inline-fold-new"; publisher = "ctf0"; version = "0.0.2"; hash = "sha256-DpXTBYN1Ohh3ZvvpUtas0G99fZcimsp1NL7mpIC07yk="; } { name = "mdc"; publisher = "nuxt"; version = "0.3.1"; hash = "sha256-YJ+7gzDjA8kzxBwGLpEmfx0erJdgAntWc2OrK2zp9DM="; } { name = "nuxtr-vscode"; publisher = "nuxtr"; version = "0.2.16"; hash = "sha256-DVoq8zdlJ2ch8PCG34f1PRkILym9XdclUHQ9s2B5OME="; } { name = "bun-vscode"; publisher = "oven"; version = "0.0.28"; hash = "sha256-WlGqqKbfrV0gqCCdVo/UFF+Gnxhq0TNJ4LuHwFaFYXA="; } { name = "csv-to-table"; publisher = "phplasma"; version = "1.4.1"; hash = "sha256-npe7cQ4lAZr8HCyQSJmVsCDUJcOhGhL6y1QtUtqUY50="; } { name = "nuxt-snippets"; publisher = "praburangki"; version = "1.8.0"; hash = "sha256-qrWrrDO/Ie/mdygw18C0mrPzNQzZLsd+fapUyTVhc14="; } { name = "bash-debug"; publisher = "rogalmic"; version = "0.3.9"; hash = "sha256-f8FUZCvz/PonqQP9RCNbyQLZPnN5Oce0Eezm/hD19Fg="; } { name = "vs-code-prettier-eslint"; publisher = "rvest"; version = "6.0.0"; hash = "sha256-PogNeKhIlcGxUKrW5gHvFhNluUelWDGHCdg5K+xGXJY="; } { name = "vscode-preview-docs"; publisher = "selemondev"; version = "0.1.7"; hash = "sha256-Q9bEIb2m6cqHtdVjOaNivfYvbc5/VVdabM2NVTwBOFA="; } { name = "autoimport"; publisher = "steoates"; version = "1.5.4"; hash = "sha256-7iIwJJsoNbtTopc+BQ+195aSCLqdNAaGtMoxShyhBWY="; } { name = "code-spell-checker-polish"; publisher = "streetsidesoftware"; version = "2.1.3"; hash = "sha256-MZeTvK9dO4Kj6hK+afJPWGmnKBtlLrrnoqtUd5s2te0="; } { name = "vscode-pets"; publisher = "tonybaloney"; version = "1.30.0"; hash = "sha256-RxOA6xQ29JuB0NzEqMDkF9W1U+AsvgAOzGbtIUw0WyM="; } { name = "explorer"; publisher = "vitest"; version = "1.17.0"; hash = "sha256-7OePMFsWIyrPkAW/+SRiOoowluLMEszEjWmBsW0LPpc="; } { name = "prettify-json"; publisher = "mohsen1"; version = "0.0.3"; hash = "sha256-lvds+lFDzt1s6RikhrnAKJipRHU+Dk85ZO49d1sA8uo="; } { name = "uv-toolkit"; publisher = "the0807"; version = "0.0.2"; hash = "sha256-OXHUwynWm4RqJYjcv5qXt5DyjFDxtNjZFNpnd22gUgg="; } { name = "kylin-python"; publisher = "kylinideteam"; version = "0.4.2"; hash = "sha256-LhOsIvECrxLCnRjUVffS4G4fFsdP70iP/twoNoto354="; } { name = "rust-flash-snippets"; publisher = "lorenzopirro"; version = "3.1.1"; hash = "sha256-L8x/OqbrsKDmyphzV3CDpoZ27rTnPS0U1YGv9KakW+U="; } { name = "rustowl-vscode"; publisher = "cordx56"; version = "0.3.4"; hash = "sha256-sM4CxQfdtDkZg5B7gxw66k7ZpIfHQFORIukHRpg0+S8="; } { name = "vscode-coverage-gutters"; publisher = "ryanluker"; version = "2.13.0"; hash = "sha256-qgPKGikqNIeZkKfd0P0keAdxRl9XNzvEJKQy58eaUZk="; } { name = "vscode-change-case"; publisher = "hjdarnel"; version = "1.4.0"; hash = "sha256-6LS4MrG16054DQkPmr7BQJeekpEtcL2NtRe0Ckfq2w4="; } { name = "vscode-bevy-inspector"; publisher = "splo"; version = "0.3.0"; hash = "sha256-f0FAgQ0wm3FYPz5qpMHWHnTf3un0xw+5gcyBG7PYM2E="; } ]; userSettings = { "editor.foldingImportsByDefault" = true; "editor.fontFamily" = "FiraCode Nerd Font"; "editor.formatOnPaste" = true; "editor.formatOnSave" = true; "editor.guides.bracketPairs" = false; "editor.guides.indentation" = false; "editor.inlayHints.enabled" = "off"; "editor.inlineSuggest.showToolbar" = "always"; "editor.largeFileOptimizations" = false; "editor.minimap.enabled" = false; "editor.quickSuggestions" = { "strings" = "on"; }; "editor.suggestFontSize" = 16; "editor.suggestLineHeight" = 30; "editor.tabSize" = 2; "editor.unicodeHighlight.ambiguousCharacters" = false; "editor.unicodeHighlight.invisibleCharacters" = false; "editor.wordWrap" = "off"; # Workbench settings "workbench.colorCustomizations" = { "editor.lineHighlightBackground" = "#1073cf2d"; "editor.lineHighlightBorder" = "#9fced11f"; }; "workbench.colorTheme" = "One Dark Pro Monokai Darker"; "workbench.iconTheme" = "vscode-icons"; "workbench.startupEditor" = "none"; # Terminal settings "terminal.integrated.fontFamily" = "FiraCode Nerd Fonts Mono"; # Git settings "git.confirmSync" = false; "git.enableSmartCommit" = true; # Explorer settings "explorer.confirmDelete" = false; "explorer.confirmDragAndDrop" = false; # Diff editor settings "diffEditor.ignoreTrimWhitespace" = false; "diffEditor.wordWrap" = "off"; # Zen mode settings "zenMode.centerLayout" = false; "zenMode.hideActivityBar" = false; "zenMode.hideLineNumbers" = false; # Language specific settings "[typescript]" = { "editor.defaultFormatter" = "esbenp.prettier-vscode"; }; "[vue]" = { "editor.defaultFormatter" = "esbenp.prettier-vscode"; }; "[jsonc]" = { "editor.defaultFormatter" = "vscode.json-language-features"; }; "[json]" = { "editor.defaultFormatter" = "vscode.json-language-features"; }; "[python]" = { "editor.tabSize" = 4; }; # File associations "files.associations" = { "*.html" = "html"; "*.txt" = "plaintext"; }; # JavaScript/TypeScript settings "javascript.updateImportsOnFileMove.enabled" = "always"; "typescript.updateImportsOnFileMove.enabled" = "always"; # Python settings "python.linting.pylintEnabled" = false; "python.linting.flake8Enabled" = true; "python.linting.flake8Args" = [ "--line-width=119" "--ignore=T000;E501;E265;E266;N802;D;Q;W504" "--exclude=migrations;mocks" ]; "python.linting.enabled" = true; "python.formatting.provider" = "yapf"; "python.formatting.yapfArgs" = [ "--style={based_on_style = pep8; column_limit = 119; dedent_closing_brackets = true; split_before_first_argument = true; coalesce_brackets = false; split_before_dict_set_generator = false; allow_split_before_dict_value = false; split_all_comma_separated_values = false; split_before_arithmetic_operator = false; split_before_logical_operator = false; split_before_named_assigns = false}" ]; "python.languageServer" = "Jedi"; "python.jediMemoryLimit" = 1024; "python.jedi.hover.enable" = true; "python.jedi.hover.detailed" = false; "python.jedi.hover.signature" = true; "python.analysis.completeFunctionParens" = true; "editor.hover.enabled" = true; # Vue settings "vue.codeActions.enabled" = false; "vue.format.script.initialIndent" = true; "vue.format.style.initialIndent" = true; "vue.splitEditors.icon" = true; "vue.splitEditors.layout.left" = [ "script" "scriptSetup" ]; "vue.splitEditors.layout.right" = [ "template" "customBlocks" "style" ]; "vetur.ignoreProjectWarning" = true; "vetur.languageFeatures.codeActions" = false; "vetur.useWorkspaceDependencies" = true; "prettier.vueIndentScriptAndStyle" = true; # // Nuxt settings "nuxtr.defaultPackageManager" = "Bun"; "nuxtr.monorepoMode.DirectoryName" = ""; "nuxtr.openItemsAfterCreation" = true; "nuxtr.piniaFiles.defaultTemplate" = "setup"; "nuxtr.vueFiles.firstTag" = "script"; "nuxtr.vueFiles.style.defaultLanguage" = "postcss"; # CSS/Tailwind settings "tailwindCSS.emmetCompletions" = true; # Syntax highlighting and appearance "indentRainbow.colorOnWhiteSpaceOnly" = true; "indentRainbow.indicatorStyle" = "light"; "indentRainbow.lightIndicatorStyleLineWidth" = 4; # Spelling and language "cSpell.language" = "en;pl"; "cSpell.userWords" = [ "garand" "Garand's" "garandplg" "garands" "lockb" "Shadcn" "Vite" ]; # Navigation and intellisense "editor.gotoLocation.multipleDefinitions" = "goto"; "path-intellisense.extensionOnImport" = true; # Markdown settings "markdown-preview-enhanced.previewTheme" = "one-dark.css"; # Extension specific settings "supermaven.allowGitignore" = true; "supermaven.enable" = { "*" = true; }; "continue.enableTabAutocomplete" = false; "continue.showInlineTip" = false; "continue.telemetryEnabled" = false; "hediet.vscode-drawio.resizeImages" = null; "todo-tree.highlights.useColourScheme" = true; "vite.autoStart" = false; # Security and trust "security.workspace.trust.untrustedFiles" = "open"; # Remote development "remote.autoForwardPortsSource" = "hybrid"; "[plaintext]" = { "editor.unicodeHighlight.ambiguousCharacters" = false; "editor.unicodeHighlight.invisibleCharacters" = false; }; "python.diagnostics.sourceMapsEnabled" = true; "vsintellicode.modify.editor.suggestSelection" = "automaticallyOverrodeDefaultValue"; "githubLocalActions.workflowsDirectory" = ".gitea/workflows"; "errorLens.excludeBySource" = [ "cSpell" ]; }; keybindings = [ { "key" = "tab"; "command" = "-editor.emmet.action.expandAbbreviation"; "when" = "config.emmet.triggerExpansionOnTab && editorTextFocus && !editorReadonly && !editorTabMovesFocus"; } { "key" = "tab"; "command" = "-editor.action.inlineSuggest.jump"; "when" = "inlineEditIsVisible && tabShouldJumpToInlineEdit && !editorHoverFocused && !editorTabMovesFocus && !suggestWidgetVisible"; } { "key" = "tab"; "command" = "-Alignment Preserving Indent"; "when" = "editorTextFocus && !editorReadOnly && !editorTabMovesFocus && !inSnippetMode && !suggestWidgetVisible && config.editor.tabCompletion != 'on'"; } { "key" = "tab"; "command" = "-Alignment Preserving Indent"; "when" = "editorTextFocus && !editorReadOnly && !editorTabMovesFocus && !hasOtherSuggestions && !inSnippetMode && !suggestWidgetVisible && config.editor.tabCompletion == 'on'"; } ]; }; }; }; }