Nix configurations for my personal machines (Linux & macOS)
1{ 2 delib, 3 inputs, 4 pkgs, 5 ... 6}: 7delib.module { 8 name = "programs.vscode"; 9 10 options = delib.singleEnableOption true; 11 12 home.ifEnabled = { 13 home.sessionVariables.EDITOR = "codium --wait"; 14 15 programs.vscode = { 16 enable = true; 17 mutableExtensionsDir = false; 18 package = pkgs.vscodium; 19 20 profiles.default = { 21 enableUpdateCheck = false; 22 enableExtensionUpdateCheck = false; 23 24 extensions = let 25 vscode-extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system}; 26 inherit (vscode-extensions) open-vsx vscode-marketplace; 27 in 28 with open-vsx; [ 29 kamadorueda.alejandra 30 astro-build.astro-vscode 31 matthewpi.caddyfile-support 32 raidou.calc 33 artlaman.chalice-icon-theme # TODO: i should fork this to add support for some newer files (tbd) 34 adpyke.codesnap 35 clinyong.vscode-css-modules 36 mkhl.direnv 37 leonardssh.vscord 38 ms-azuretools.vscode-docker 39 editorconfig.editorconfig 40 irongeek.vscode-env 41 jjk.jjk 42 pgourlain.erlang 43 usernamehw.errorlens 44 dbaeumer.vscode-eslint 45 tamasfe.even-better-toml 46 sleistner.vscode-fileutils 47 bmalehorn.vscode-fish 48 github.vscode-github-actions 49 eamodio.gitlens 50 # TODO: terraform (use opentofu instead) 51 ms-vscode.hexeditor 52 lokalise.i18n-ally 53 kisstkondoros.vscode-gutter-preview 54 ms-python.isort 55 bierner.markdown-preview-github-styles 56 unifiedjs.vscode-mdx 57 jnoortheen.nix-ide 58 nuxtr.nuxtr-vscode 59 vunguyentuan.vscode-postcss 60 esbenp.prettier-vscode 61 prisma.prisma 62 # TODO: use jedi instead of pylance 63 ms-python.python 64 ms-python.debugpy 65 mechatroner.rainbow-csv 66 medo64.render-crlf 67 stkb.rewrap 68 rust-lang.rust-analyzer 69 mrmlnc.vscode-scss 70 svelte.svelte-vscode 71 jock.svg 72 coolbear.systemd-unit-file 73 bradlc.vscode-tailwindcss 74 myriad-dreamin.tinymist 75 gruntfuggly.todo-tree 76 tomoki1207.pdf 77 zxh404.vscode-proto3 78 styled-components.vscode-styled-components # TODO: don't really need this 79 vue.volar 80 wakatime.vscode-wakatime 81 redhat.vscode-yaml 82 arcanis.vscode-zipfs 83 vscode-marketplace.wraith13.background-phi-colors 84 vscode-marketplace.be5invis.theme-dolch 85 vscode-marketplace.fabiospampinato.vscode-diff 86 vscode-marketplace.jakebecker.elixir-ls 87 vscode-marketplace.zh9528.file-size 88 vscode-marketplace.vladdesv.vscode-klog 89 vscode-marketplace.dt.ghlink 90 vscode-marketplace.tyriar.lorem-ipsum 91 vscode-marketplace.phoenixframework.phoenix 92 vscode-marketplace.frigus02.vscode-sql-tagged-template-literals-syntax-only # TODO: alternative? 93 ]; 94 95 userSettings = { 96 # Formatters 97 "editor.defaultFormatter" = "esbenp.prettier-vscode"; 98 "[elixir]"."editor.defaultFormatter" = "JakeBecker.elixir-ls"; 99 "[nix]"."editor.defaultFormatter" = "kamadorueda.alejandra"; 100 "[prisma]"."editor.defaultFormatter" = "Prisma.prisma"; 101 "[python]"."editor.defaultFormatter" = "ms-python.python"; 102 "[rust]"."editor.defaultFormatter" = "rust-lang.rust-analyzer"; 103 104 # Sane defaults 105 "editor.tabSize" = 2; 106 "editor.insertSpaces" = true; 107 "breadcrumbs.enabled" = true; 108 "editor.wordWrap" = "off"; 109 "security.workspace.trust.enabled" = false; 110 "security.workspace.trust.untrustedFiles" = "open"; 111 "files.eol" = "\n"; 112 "workbench.editor.empty.hint" = "hidden"; 113 "comments.openView" = "never"; 114 "editor.minimap.enabled" = false; 115 "editor.stickyScroll.enabled" = true; 116 "workbench.layoutControl.enabled" = false; 117 "diffEditor.ignoreTrimWhitespace" = true; 118 "editor.acceptSuggestionOnEnter" = "off"; 119 "editor.formatOnSave" = true; 120 "editor.inlineSuggest.enabled" = true; 121 "editor.renderWhitespace" = "none"; 122 "editor.suggestSelection" = "first"; 123 "editor.tabCompletion" = "on"; 124 "emmet.triggerExpansionOnTab" = true; 125 "explorer.confirmDelete" = false; 126 "explorer.confirmDragAndDrop" = false; 127 "redhat.telemetry.enabled" = false; 128 "workbench.tips.enabled" = false; 129 "workbench.tree.indent" = 16; 130 "workbench.tree.renderIndentGuides" = "always"; 131 "editor.unicodeHighlight.ambiguousCharacters" = true; 132 "errorLens.enabledDiagnosticLevels" = ["error" "warning"]; 133 "editor.acceptSuggestionOnCommitCharacter" = false; 134 "files.watcherExclude" = { 135 "**/.git/**" = true; 136 "**/node_modules/*/**" = true; 137 }; 138 "search.exclude" = { 139 "**/node_modules" = true; 140 "**/bower_components" = true; 141 "**/*.code-search" = true; 142 "**/.yarn" = true; 143 }; 144 "terminal.integrated.commandsToSkipShell" = [ 145 "-workbench.action.quickOpenView" 146 "-workbench.action.quickOpen" 147 "-editor.action.clipboardCutAction" 148 ]; 149 # "prettier.prettierPath" = "prettierd"; 150 "prettier.proseWrap" = "always"; 151 152 # Pretties 153 "workbench.colorTheme" = "Dolch"; 154 "workbench.iconTheme" = "chalice-icon-theme"; 155 "editor.fontFamily" = "'Iosevka Solai', Menlo, Monaco, 'Courier New', monospace"; 156 "editor.fontSize" = 16; 157 "terminal.integrated.fontFamily" = "'Iosevka Solai Term', Consolas, 'Courier New', monospace"; 158 "terminal.integrated.fontSize" = 14; 159 "terminal.integrated.scrollback" = 9999999999; 160 "editor.fontLigatures" = true; 161 "editor.cursorSmoothCaretAnimation" = "on"; 162 "editor.smoothScrolling" = true; 163 "zenMode.fullScreen" = false; 164 "zenMode.centerLayout" = false; 165 "zenMode.hideLineNumbers" = true; 166 167 # No barfing rainbows over my UI pls 168 "backgroundPhiColors.baseColor" = "#FFFFFF"; 169 "backgroundPhiColors.bodySpacesEnabled" = false; 170 "backgroundPhiColors.indentErrorEnabled" = false; 171 "backgroundPhiColors.lineEnabled" = false; 172 "backgroundPhiColors.spacesAlpha" = 10; 173 "backgroundPhiColors.tokenActiveAlpha" = 30; 174 "editor.bracketPairColorization.enabled" = false; 175 176 # Codesnap 177 "codesnap.containerPadding" = "2em"; 178 "codesnap.target" = "window"; 179 "codesnap.transparentBackground" = true; 180 "codesnap.boxShadow" = "none"; 181 "codesnap.showLineNumbers" = false; 182 "codesnap.showWindowControls" = false; 183 "codesnap.shutterAction" = "copy"; 184 "codesnap.roundedCorners" = true; 185 186 # Git 187 "git.autorefresh" = true; 188 "git.autofetch" = false; 189 "git.autoStash" = true; 190 "git.mergeEditor" = false; 191 "git.confirmSync" = false; 192 "git.enableSmartCommit" = true; 193 "gitlens.advanced.messages" = { 194 "suppressLineUncommittedWarning" = true; 195 }; 196 "gitlens.hovers.currentLine.over" = "annotation"; 197 198 # Nix 199 "nix.enableLanguageServer" = true; 200 "nix.serverPath" = "nil"; 201 "alejandra.program" = "alejandra"; 202 203 # Elixir/erlang 204 "elixirLS.suggestSpecs" = false; 205 "elixirLS.fetchDeps" = false; 206 "elixirLS.mixEnv" = "dev"; 207 "elixir.credo.ignoreWarningMessages" = true; 208 209 # Python 210 "python.analysis.typeCheckingMode" = "basic"; 211 212 # JS 213 "debug.javascript.autoAttachFilter" = "onlyWithFlag"; 214 215 # CSS 216 "files.associations"."*.css" = "tailwindcss"; 217 218 # Misc 219 "yaml.format.proseWrap" = "always"; 220 "workbench.startupEditor" = "none"; 221 "remote.SSH.connectTimeout" = 30; 222 "remote.SSH.useLocalServer" = true; 223 "remote.SSH.path" = "/run/current-system/sw/bin/ssh"; 224 "extensions.ignoreRecommendations" = true; 225 "svg.preview.mode" = "svg"; 226 "vscord.status.problems.enabled" = false; 227 "vscord.status.state.text.editing" = "Working on {file_name}{file_extension}"; 228 "vscord.ignore.workspaces" = ["~/Work"]; 229 "typescript.updateImportsOnFileMove.enabled" = "never"; 230 "git.openRepositoryInParentFolders" = "never"; 231 "diffEditor.useInlineViewWhenSpaceIsLimited" = false; 232 "svelte.enable-ts-plugin" = true; 233 "gitlens.launchpad.indicator.enabled" = false; 234 "window.titleBarStyle" = "custom"; 235 "files.simpleDialog.enable" = true; 236 "window.dialogStyle" = "custom"; 237 }; 238 }; 239 }; 240 }; 241}