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 ms-vscode.hexeditor
51 lokalise.i18n-ally
52 kisstkondoros.vscode-gutter-preview
53 ms-python.isort
54 bierner.markdown-preview-github-styles
55 unifiedjs.vscode-mdx
56 jnoortheen.nix-ide
57 nuxtr.nuxtr-vscode
58 vunguyentuan.vscode-postcss
59 esbenp.prettier-vscode
60 prisma.prisma
61 gleam.gleam
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 golang.go
84 vscode-marketplace.wraith13.background-phi-colors
85 vscode-marketplace.be5invis.theme-dolch
86 vscode-marketplace.fabiospampinato.vscode-diff
87 vscode-marketplace.jakebecker.elixir-ls
88 vscode-marketplace.zh9528.file-size
89 vscode-marketplace.vladdesv.vscode-klog
90 vscode-marketplace.dt.ghlink
91 vscode-marketplace.tyriar.lorem-ipsum
92 vscode-marketplace.phoenixframework.phoenix
93 vscode-marketplace.frigus02.vscode-sql-tagged-template-literals-syntax-only # TODO: alternative?
94 ];
95
96 userSettings = {
97 # Formatters
98 "editor.defaultFormatter" = "esbenp.prettier-vscode";
99 "[elixir]"."editor.defaultFormatter" = "JakeBecker.elixir-ls";
100 "[nix]"."editor.defaultFormatter" = "kamadorueda.alejandra";
101 "[prisma]"."editor.defaultFormatter" = "Prisma.prisma";
102 "[python]"."editor.defaultFormatter" = "ms-python.python";
103 "[rust]"."editor.defaultFormatter" = "rust-lang.rust-analyzer";
104 "[go]"."editor.defaultFormatter" = "golang.go";
105
106 # Sane defaults
107 "editor.tabSize" = 2;
108 "editor.insertSpaces" = true;
109 "breadcrumbs.enabled" = true;
110 "editor.wordWrap" = "off";
111 "security.workspace.trust.enabled" = false;
112 "security.workspace.trust.untrustedFiles" = "open";
113 "files.eol" = "\n";
114 "workbench.editor.empty.hint" = "hidden";
115 "comments.openView" = "never";
116 "editor.minimap.enabled" = false;
117 "editor.stickyScroll.enabled" = true;
118 "workbench.layoutControl.enabled" = false;
119 "diffEditor.ignoreTrimWhitespace" = true;
120 "editor.acceptSuggestionOnEnter" = "off";
121 "editor.formatOnSave" = true;
122 "editor.inlineSuggest.enabled" = true;
123 "editor.renderWhitespace" = "none";
124 "editor.suggestSelection" = "first";
125 "editor.tabCompletion" = "on";
126 "emmet.triggerExpansionOnTab" = true;
127 "explorer.confirmDelete" = false;
128 "explorer.confirmDragAndDrop" = false;
129 "redhat.telemetry.enabled" = false;
130 "workbench.tips.enabled" = false;
131 "workbench.tree.indent" = 16;
132 "workbench.tree.renderIndentGuides" = "always";
133 "editor.unicodeHighlight.ambiguousCharacters" = true;
134 "errorLens.enabledDiagnosticLevels" = ["error" "warning"];
135 "editor.acceptSuggestionOnCommitCharacter" = false;
136 "files.watcherExclude" = {
137 "**/.git/**" = true;
138 "**/node_modules/*/**" = true;
139 };
140 "search.exclude" = {
141 "**/node_modules" = true;
142 "**/bower_components" = true;
143 "**/*.code-search" = true;
144 "**/.yarn" = true;
145 };
146 "terminal.integrated.commandsToSkipShell" = [
147 "-workbench.action.quickOpenView"
148 "-workbench.action.quickOpen"
149 "-editor.action.clipboardCutAction"
150 ];
151 # "prettier.prettierPath" = "prettierd";
152 "prettier.proseWrap" = "always";
153 "chat.disableAIFeatures" = true;
154
155 # Pretties
156 "workbench.colorTheme" = "Dolch";
157 "workbench.iconTheme" = "chalice-icon-theme";
158 "editor.fontFamily" = "'Iosevka Solai', Menlo, Monaco, 'Courier New', monospace";
159 "editor.fontSize" = 16;
160 "terminal.integrated.fontFamily" = "'Iosevka Solai Term', Consolas, 'Courier New', monospace";
161 "terminal.integrated.fontSize" = 14;
162 "terminal.integrated.scrollback" = 9999999999;
163 "editor.fontLigatures" = true;
164 "editor.cursorSmoothCaretAnimation" = "on";
165 "editor.smoothScrolling" = true;
166 "zenMode.fullScreen" = false;
167 "zenMode.centerLayout" = false;
168 "zenMode.hideLineNumbers" = true;
169
170 # No barfing rainbows over my UI pls
171 "backgroundPhiColors.baseColor" = "#FFFFFF";
172 "backgroundPhiColors.bodySpacesEnabled" = false;
173 "backgroundPhiColors.indentErrorEnabled" = false;
174 "backgroundPhiColors.lineEnabled" = false;
175 "backgroundPhiColors.spacesAlpha" = 10;
176 "backgroundPhiColors.tokenActiveAlpha" = 30;
177 "editor.bracketPairColorization.enabled" = false;
178
179 # Codesnap
180 "codesnap.containerPadding" = "2em";
181 "codesnap.target" = "window";
182 "codesnap.transparentBackground" = true;
183 "codesnap.boxShadow" = "none";
184 "codesnap.showLineNumbers" = false;
185 "codesnap.showWindowControls" = false;
186 "codesnap.shutterAction" = "copy";
187 "codesnap.roundedCorners" = true;
188
189 # Git
190 "git.autorefresh" = true;
191 "git.autofetch" = false;
192 "git.autoStash" = true;
193 "git.mergeEditor" = false;
194 "git.confirmSync" = false;
195 "git.enableSmartCommit" = true;
196 "gitlens.advanced.messages" = {
197 "suppressLineUncommittedWarning" = true;
198 };
199 "gitlens.hovers.currentLine.over" = "annotation";
200
201 # Nix
202 "nix.enableLanguageServer" = true;
203 "nix.serverPath" = "nil";
204 "alejandra.program" = "alejandra";
205
206 # Elixir/erlang
207 "elixirLS.suggestSpecs" = false;
208 "elixirLS.fetchDeps" = false;
209 "elixirLS.mixEnv" = "dev";
210 "elixir.credo.ignoreWarningMessages" = true;
211
212 # Python
213 "python.analysis.typeCheckingMode" = "basic";
214
215 # JS
216 "debug.javascript.autoAttachFilter" = "onlyWithFlag";
217
218 # CSS
219 "files.associations"."*.css" = "tailwindcss";
220
221 # Misc
222 "yaml.format.proseWrap" = "always";
223 "workbench.startupEditor" = "none";
224 "remote.SSH.connectTimeout" = 30;
225 "remote.SSH.useLocalServer" = true;
226 "remote.SSH.path" = "/run/current-system/sw/bin/ssh";
227 "extensions.ignoreRecommendations" = true;
228 "svg.preview.mode" = "svg";
229 "vscord.status.problems.enabled" = false;
230 "vscord.status.state.text.editing" = "Working on {file_name}{file_extension}";
231 "vscord.ignore.workspaces" = ["~/Work"];
232 "typescript.updateImportsOnFileMove.enabled" = "never";
233 "git.openRepositoryInParentFolders" = "never";
234 "diffEditor.useInlineViewWhenSpaceIsLimited" = false;
235 "svelte.enable-ts-plugin" = true;
236 "gitlens.launchpad.indicator.enabled" = false;
237 "window.titleBarStyle" = "custom";
238 "files.simpleDialog.enable" = true;
239 "window.dialogStyle" = "custom";
240 };
241 };
242 };
243 };
244}