grace/dots

dotfiles/nix configs

git clone https://git.gae.moe/grace/dots

Grace Yoderhamano againa4b6f88

wafrn-testing
14.1 KiB621 linesraw
1{
2  config,
3  pkgs,
4  ...
5}:
6
7let
8  wRoots =
9    roots:
10    roots
11    ++ [
12      ".jj"
13      ".git"
14    ];
15
16in
17{
18  home.packages = [
19    pkgs.nerd-fonts.symbols-only
20  ];
21
22  home.sessionVariables.STEEL_HOME = "${config.xdg.dataHome}/steel";
23
24  xdg.configFile."helix/ignore".text = ''
25    .git/
26    node_modules/
27    build/
28  '';
29
30  xdg.configFile."helix/runtime/queries/rust".source = "${pkgs.helix.runtime}/queries/rust";
31
32  programs.helix = {
33    enable = true;
34    package = pkgs.helix;
35    # extraPackages = [ pkgs.steel ];
36    defaultEditor = false;
37    settings = {
38      theme = "grace_rose_pine";
39      editor = {
40        bufferline = "multiple";
41        color-modes = true;
42        cursor-shape = {
43          insert = "bar";
44          normal = "block";
45          select = "underline";
46        };
47        default-yank-register = "+";
48        clipboard-provider = if (import ../hosts.nix).name == "turing" then "pasteboard" else "termcode";
49        cursorline = true;
50        cursorcolumn = true;
51        continue-comments = false;
52        line-number = "relative";
53        text-width = 100;
54        soft-wrap = {
55          enable = true;
56          max-indent-retain = 40;
57          wrap-at-text-width = true;
58          wrap-indicator = " ";
59        };
60        indent-guides = {
61          render = true;
62          character = "┆";
63        };
64        lsp = {
65          display-messages = true;
66        };
67
68        file-picker = {
69          hidden = false;
70          ignore = true;
71          git-ignore = true;
72          git-global = true;
73          git-exclude = true;
74        };
75
76        statusline = {
77          left = [
78            "mode"
79            "separator"
80            "spinner"
81            "version-control"
82            "file-name"
83            "read-only-indicator"
84            "file-modification-indicator"
85          ];
86          center = [ ];
87          right = [
88            "diagnostics"
89            "workspace-diagnostics"
90            "selections"
91            "position-percentage"
92            "position"
93            "file-type"
94          ];
95          separator = "";
96          mode = {
97            normal = "  NOR ";
98            insert = "  INS ";
99            select = "  SEL ";
100          };
101
102        };
103      };
104      keys.normal = {
105        "C-w" = "no_op";
106        "C-r" = ":reload";
107        y = "yank_to_clipboard";
108        p = "paste_clipboard_after";
109        P = "paste_clipboard_before";
110        space = {
111          t = ":new";
112          v = "vsplit";
113        };
114        "K" = "hover";
115        "ret" = "goto_word";
116      };
117      keys.select = {
118        "C-w" = "no_op";
119        "C-k" = "page_cursor_half_up";
120        "C-j" = "page_cursor_half_down";
121      };
122    };
123
124    languages = {
125      language-server = {
126        nixd = {
127          command = "${pkgs.nixd}/bin/nixd";
128        };
129        nil = {
130          command = "${pkgs.nil}/bin/nil";
131        };
132        luals = {
133          command = "${pkgs.lua-language-server}/bin/lua-language-server";
134        };
135
136        pyright = {
137          command = "${pkgs.pyright}/bin/pyright-langserver";
138          args = [ "--stdio" ];
139          config = {
140            python.analysis = {
141              autoSearchPaths = true;
142              useLibraryCodeForTypes = true;
143              diagnosticMode = "openFilesOnly";
144            };
145          };
146        };
147
148        ruff = {
149          command = "${pkgs.ruff}/bin/ruff";
150          args = [ "server" ];
151        };
152
153        clangd = {
154          command = "${pkgs.clang-tools}/bin/clangd";
155          args = [
156            "--background-index"
157            "--offset-encoding=utf-8"
158            "--query-driver=/Users/scie/.platformio/packages/toolchain-xtensa-esp32/**"
159            "--query-driver=/Users/scie/.platformio/packages/framework-arduinoststm32/**"
160          ];
161        };
162
163        tailwindcss = {
164          command = "${pkgs.tailwindcss-language-server}/bin/tailwindcss-language-server";
165          args = [ "--stdio" ];
166        };
167
168        zls.command = "${pkgs.zls}/bin/zls";
169        gopls.command = "${pkgs.gopls}/bin/gopls";
170
171        tinymist = {
172          command = "${pkgs.tinymist}/bin/tinymist";
173          config.tinymist.formatterMode = "typstyle";
174          typstExtraArgs = [
175            "--features"
176            "bundle,html"
177            "site.typ"
178          ];
179        };
180
181        rust-analyzer = {
182          command = "${pkgs.rust-analyzer}/bin/rust-analyzer";
183          config."rust-analyzer" = {
184            check.command = "clippy";
185            diagnostics.enable = true;
186          };
187        };
188
189        gdscript = {
190          command = "${pkgs.netcat}/bin/nc";
191          args = [
192            "127.0.0.1"
193            "6005"
194          ];
195        };
196
197        # csharp-ls = {
198        # command = "${pkgs.csharp-ls}/bin/csharp-ls";
199        # config.AutomaticWorkspaceInit = true;
200        # };
201
202        asm-lsp.command = "${pkgs.asm-lsp}/bin/asm-lsp";
203
204        codebook = {
205          command = "${pkgs.codebook}/bin/codebook-lsp";
206          args = [ "serve" ];
207        };
208
209        json = {
210          command = "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server";
211          args = [ "--stdio" ];
212          config.provideFormatter = true;
213        };
214
215        eslint = {
216          command = "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server";
217          args = [ "--stdio" ];
218        };
219
220        css = {
221          command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
222          args = [ "--stdio" ];
223        };
224
225        html = {
226          command = "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server";
227          args = [ "--stdio" ];
228          config = {
229            provideFormatter = true;
230            embeddedLanguages = {
231              css = true;
232              javascript = true;
233            };
234            configurationSection = [
235              "html"
236              "css"
237              "javascript"
238            ];
239          };
240        };
241
242        fish = {
243          command = "${pkgs.fish-lsp}/bin/fish-lsp";
244          args = [ "start" ];
245        };
246
247        astro = {
248          command = "${pkgs.astro-language-server}/bin/astro-ls";
249          args = [ "--stdio" ];
250          config.typescript.tsdk = "./node_modules/typescript/lib";
251        };
252
253        steel = {
254          command = "${pkgs.steel-language-server}";
255
256          environment = {
257            STEEL_HOME = "${config.xdg.dataHome}/steel";
258          };
259
260        };
261      };
262
263      language = [
264        {
265          name = "nix";
266          scope = "source.nix";
267          file-types = [ "nix" ];
268          language-servers = [
269            "nixd"
270            "nil"
271            "codebook"
272          ];
273          formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
274          auto-format = true;
275          roots = wRoots [ ];
276        }
277        {
278          name = "lua";
279          scope = "source.lua";
280          file-types = [ "lua" ];
281          language-servers = [
282            "luals"
283            "codebook"
284          ];
285          roots = wRoots [
286            ".luarc.json"
287            ".luarc.jsonc"
288          ];
289        }
290        {
291          name = "python";
292          scope = "source.python";
293          file-types = [
294            "py"
295            "pyi"
296          ];
297          language-servers = [
298            "pyright"
299            "ruff"
300            "codebook"
301          ];
302          roots = wRoots [
303            "pyproject.toml"
304            "setup.py"
305            "setup.cfg"
306            "requirements.txt"
307            "Pipfile"
308            "pyrightconfig.json"
309          ];
310        }
311        {
312          name = "c";
313          scope = "source.c";
314          file-types = [
315            "c"
316            "h"
317            "arduino"
318          ];
319          language-servers = [
320            "clangd"
321            "codebook"
322          ];
323          roots = wRoots [
324            ".clangd"
325            ".clang-tidy"
326            ".clang-format"
327            "compile_commands.json"
328            "compile_flags.txt"
329            "configure.ac"
330          ];
331        }
332        {
333          name = "cpp";
334          scope = "source.cpp";
335          file-types = [
336            "cc"
337            "hh"
338            "cxx"
339            "hpp"
340            "cpp"
341            "hxx"
342            "proto"
343          ];
344          language-servers = [
345            "clangd"
346            "codebook"
347          ];
348          roots = wRoots [
349            ".clangd"
350            ".clang-tidy"
351            ".clang-format"
352            "compile_commands.json"
353            "compile_flags.txt"
354            "configure.ac"
355          ];
356        }
357        {
358          name = "zig";
359          scope = "source.zig";
360          file-types = [ "zig" ];
361          language-servers = [
362            "zls"
363            "codebook"
364          ];
365          roots = wRoots [
366            "zls.json"
367            "build.zig"
368          ];
369        }
370        {
371          name = "go";
372          scope = "source.go";
373          file-types = [
374            "go"
375            "gomod"
376            "gowork"
377            "gotmpl"
378          ];
379          language-servers = [
380            "gopls"
381            "codebook"
382          ];
383          roots = wRoots [
384            "go.work"
385            "go.mod"
386          ];
387        }
388        {
389          name = "typst";
390          scope = "source.typst";
391          file-types = [ "typ" ];
392          language-servers = [
393            "tinymist"
394            "codebook"
395          ];
396          roots = wRoots [ ];
397          text-width = 80;
398          soft-wrap = {
399            enable = true;
400            max-indent-retain = 40;
401            wrap-at-text-width = true;
402            wrap-indicator = " ";
403          };
404        }
405        {
406          name = "markdown";
407          language-servers = [ "codebook" ];
408          roots = wRoots [ ];
409          text-width = 80;
410          soft-wrap = {
411            enable = true;
412            max-indent-retain = 40;
413            wrap-at-text-width = true;
414            wrap-indicator = " ";
415          };
416        }
417        {
418          name = "rust";
419          scope = "source.rust";
420          file-types = [ "rs" ];
421          language-servers = [
422            "rust-analyzer"
423            "codebook"
424          ];
425          roots = wRoots [
426            "Cargo.toml"
427            "Cargo.lock"
428          ];
429        }
430        {
431          name = "gdscript";
432          scope = "source.gdscript";
433          file-types = [ "gd" ];
434          language-servers = [ "gdscript" ];
435          roots = wRoots [
436            "project.godot"
437          ];
438        }
439        {
440          name = "c-sharp";
441          scope = "source.cs";
442          file-types = [ "cs" ];
443          language-servers = [ "csharp-ls" ];
444          roots = wRoots [ ];
445        }
446        {
447          name = "asm";
448          scope = "source.asm";
449          file-types = [
450            "s"
451            "S"
452            "asm"
453          ];
454          language-servers = [ "asm-lsp" ];
455          roots = wRoots [
456            ".asm-lsp.toml"
457          ];
458        }
459        {
460          name = "json";
461          scope = "source.json";
462          file-types = [
463            "json"
464            "jsonc"
465          ];
466          language-servers = [
467            "json"
468            "codebook"
469          ];
470          roots = wRoots [ ];
471        }
472        {
473          name = "javascript";
474          scope = "source.js";
475          file-types = [
476            "js"
477            "jsx"
478            "mjs"
479            "cjs"
480          ];
481          language-servers = [
482            "eslint"
483            "tailwindcss"
484            "codebook"
485          ];
486          roots = wRoots [
487            "package.json"
488          ];
489        }
490        {
491          name = "typescript";
492          scope = "source.ts";
493          file-types = [
494            "ts"
495            "tsx"
496            "mts"
497            "cts"
498          ];
499          language-servers = [
500            "eslint"
501            "tailwindcss"
502            "codebook"
503          ];
504          roots = wRoots [
505            "package.json"
506            "tsconfig.json"
507          ];
508        }
509        {
510          name = "html";
511          scope = "source.html";
512          file-types = [ "html" ];
513          language-servers = [
514            "html"
515            "tailwindcss"
516            "codebook"
517          ];
518          roots = wRoots [
519            "package.json"
520          ];
521        }
522        {
523          name = "css";
524          scope = "source.css";
525          file-types = [
526            "css"
527            "scss"
528            "less"
529          ];
530          language-servers = [
531            "css"
532            "tailwindcss"
533            "codebook"
534          ];
535          roots = wRoots [
536            "package.json"
537          ];
538        }
539        {
540          name = "astro";
541          scope = "source.astro";
542          file-types = [ "astro" ];
543          language-servers = [
544            "astro"
545            "eslint"
546            "tailwindcss"
547          ];
548          roots = wRoots [
549            "package.json"
550            "tsconfig.json"
551            "jsconfig.json"
552          ];
553        }
554        {
555          name = "fish";
556          scope = "source.fish";
557          file-types = [ "fish" ];
558          language-servers = [ "fish" ];
559          roots = wRoots [
560            "config.fish"
561          ];
562        }
563        {
564          name = "scheme";
565          file-types = [ "scm" ];
566          scope = "source.scm";
567          language-servers = [ "steel" ];
568          roots = wRoots [
569            "init.scm"
570          ];
571        }
572      ];
573    };
574
575    themes.grace_rose_pine = {
576      inherits = "rose_pine_moon";
577
578      "ui.statusline" = {
579        fg = "text";
580        bg = "surface";
581      };
582      "ui.statusline.inactive" = {
583        fg = "muted";
584        bg = "base";
585      };
586      "ui.statusline.normal" = {
587        fg = "base";
588        bg = "pine";
589        modifiers = [ "bold" ];
590      };
591      "ui.statusline.insert" = {
592        fg = "base";
593        bg = "pine";
594        modifiers = [ "bold" ];
595      };
596      "ui.statusline.select" = {
597        fg = "base";
598        bg = "pine";
599        modifiers = [ "bold" ];
600      };
601      "ui.statusline.separator" = {
602        fg = "pine";
603        bg = "surface";
604      };
605      "ui.bufferline" = {
606        fg = "subtle";
607        bg = "base";
608      };
609      "ui.bufferline.active" = {
610        fg = "base";
611        bg = "rose";
612        modifiers = [ "bold" ];
613      };
614      "ui.bufferline.background" = {
615        bg = "base";
616      };
617    };
618
619  };
620
621}