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