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}