my system configurations ^-^
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(helix): improve prettier and dprint config

willow c597b291 0ea7f362

+144 -43
+69 -19
modules/shared/home/programs/tui/helix/default.nix
··· 13 13 config.allowUnfree = true; 14 14 }; 15 15 in { 16 - imports = [ 17 - ./moxide.nix 18 - ]; 19 - 20 16 config = lib.mkIf (cfg.tui.enable 21 17 && cfg.categories.dev.enable) { 22 - xdg.configFile.".dprint.jsonc".text = builtins.toJSON (import ./dprint-conf.nix {inherit pkgs;}); 18 + xdg.configFile.".prettierrc.json".text = builtins.toJSON (import ./prettier.nix {inherit pkgs;}); 19 + xdg.configFile.".dprint.jsonc".text = builtins.toJSON (import ./dprint.nix {inherit pkgs;}); 20 + xdg.configFile."moxide/settings.toml".source = ./moxide.toml; 23 21 24 22 programs.helix = { 25 23 enable = true; 26 24 defaultEditor = true; 27 25 28 26 languages = let 29 - prettierd = { 30 - command = lib.getExe pkgs.prettierd; 31 - args = ["--stdin-filepath" "%{buffer_name}"]; 27 + prettier = lang: { 28 + command = lib.getExe pkgs.nodePackages.prettier; 29 + args = [ 30 + "--parser" 31 + lang 32 + "--config" 33 + "${config.xdg.configHome}/.prettierrc.json" 34 + ]; 32 35 }; 36 + 33 37 dprint = { 34 38 command = lib.getExe pkgs.dprint; 35 - args = ["fmt" "--config" "${config.xdg.configHome}/.dprint.jsonc" "--stdin" "%{buffer_name}"]; 39 + args = [ 40 + "fmt" 41 + "--config" 42 + "${config.xdg.configHome}/.dprint.jsonc" 43 + ]; 36 44 }; 37 45 in { 38 46 language-server = { ··· 40 48 command = lib.getExe pkgs.emmet-language-server; 41 49 args = ["--stdio"]; 42 50 }; 51 + svelte-lsp = { 52 + command = lib.getExe pkgs.svelte-language-server; 53 + args = ["--stdio"]; 54 + }; 43 55 typescript-lsp = { 44 56 command = lib.getExe pkgs.typescript-language-server; 45 57 args = ["--stdio"]; 46 58 }; 59 + json-lsp = { 60 + command = lib.getExe' pkgs.vscode-langservers-extracted "vscode-json-language-server"; 61 + args = ["--stdio"]; 62 + }; 47 63 css-lsp = { 48 64 command = lib.getExe' pkgs.vscode-langservers-extracted "vscode-css-language-server"; 65 + args = ["--stdio"]; 66 + }; 67 + html-lsp = { 68 + command = lib.getExe' pkgs.vscode-langservers-extracted "vscode-html-language-server"; 69 + args = ["--stdio"]; 70 + }; 71 + markdown-lsp = { 72 + command = lib.getExe' pkgs.vscode-langservers-extracted "vscode-markdown-language-server"; 49 73 args = ["--stdio"]; 50 74 }; 51 75 nil = { ··· 69 93 language = [ 70 94 { 71 95 name = "nix"; 72 - language-servers = ["nil"]; 73 96 auto-format = true; 97 + language-servers = ["nil"]; 74 98 formatter.command = lib.getExe pkgs.alejandra; 75 99 } 76 100 { 77 101 name = "html"; 78 - roots = [".git"]; 79 - language-servers = ["emmet-lsp"]; 80 - formatter = prettierd; 102 + auto-format = true; 103 + language-servers = ["emmet-lsp" "html-lsp"]; 104 + formatter = prettier "html"; 105 + } 106 + { 107 + name = "svelte"; 108 + auto-format = true; 109 + language-servers = ["svelte-lsp"]; 110 + formatter = prettier "html"; 81 111 } 82 112 { 83 113 name = "markdown"; 84 - language-servers = ["markdown-oxide"]; 85 - formatter = dprint; 86 114 auto-format = true; 115 + language-servers = ["markdown-oxide" "markdown-lsp"]; 116 + formatter = dprint; 117 + soft-wrap.enable = true; 87 118 } 88 119 { 89 120 name = "typescript"; 121 + auto-format = true; 90 122 language-servers = ["typescript-lsp"]; 91 - formatter = prettierd; 123 + formatter = prettier "html"; 92 124 } 93 125 { 94 126 name = "javascript"; 127 + auto-format = true; 95 128 language-servers = ["javascript-lsp"]; 96 - formatter = prettierd; 129 + formatter = prettier "html"; 97 130 } 98 131 { 99 132 name = "css"; 133 + auto-format = true; 100 134 language-servers = ["css-lsp"]; 101 - formatter = prettierd; 135 + formatter = prettier "html"; 102 136 } 103 137 { 104 138 name = "typst"; 139 + auto-format = true; 105 140 language-servers = ["tinymist"]; 106 141 soft-wrap.enable = true; 107 - auto-format = true; 108 142 } 109 143 { 110 144 name = "openscad"; 145 + auto-format = true; 111 146 language-servers = ["openscad-lsp"]; 147 + } 148 + { 149 + name = "json"; 112 150 auto-format = true; 151 + language-servers = ["json-lsp"]; 152 + formatter = dprint; 153 + } 154 + { 155 + name = "toml"; 156 + auto-format = true; 157 + formatter = dprint; 158 + } 159 + { 160 + name = "yaml"; 161 + auto-format = true; 162 + formatter = dprint; 113 163 } 114 164 ]; 115 165 };
-15
modules/shared/home/programs/tui/helix/dprint-conf.nix
··· 1 - {pkgs, ...}: { 2 - # lineWidth = 120; 3 - # json = { 4 - # indentWidth = 2; 5 - # }; 6 - plugins = with pkgs; 7 - dprint-plugins.getPluginList ( 8 - plugins: 9 - with dprint-plugins; [ 10 - dprint-plugin-toml 11 - dprint-plugin-markdown 12 - dprint-plugin-json 13 - ] 14 - ); 15 - }
+22
modules/shared/home/programs/tui/helix/dprint.nix
··· 1 + {pkgs, ...}: { 2 + json = { 3 + indentWidth = 2; 4 + }; 5 + markup = { 6 + scriptIndent = true; 7 + styleIndent = true; 8 + }; 9 + plugins = with pkgs; 10 + dprint-plugins.getPluginList ( 11 + plugins: 12 + with dprint-plugins; [ 13 + dprint-plugin-json 14 + dprint-plugin-markdown 15 + dprint-plugin-toml 16 + dprint-plugin-typescript 17 + g-plane-malva 18 + g-plane-markup_fmt 19 + g-plane-pretty_yaml 20 + ] 21 + ); 22 + }
-9
modules/shared/home/programs/tui/helix/moxide.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: { 6 - config = lib.mkIf config.programs.helix.enable { 7 - xdg.configFile."moxide/settings.toml".source = ./moxide.toml; 8 - }; 9 - }
+53
modules/shared/home/programs/tui/helix/prettier.nix
··· 1 + {pkgs, ...}: let 2 + # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/javascript.section.md#buildnpmpackage-javascript-buildnpmpackage 3 + prettier-plugin-svelte = pkgs.buildNpmPackage (_finalAttrs: { 4 + pname = "prettier-plugin-svelte"; 5 + version = "3.4.0"; 6 + src = pkgs.fetchFromGitHub { 7 + owner = "sveltejs"; 8 + repo = "prettier-plugin-svelte"; 9 + rev = "7d68c92243a654ca0a35606dede44694941ad805"; 10 + hash = "sha256-6DoMm7KpWUEDrnYE7K7l/dtYVEvVzfWgG0kkNl5m9Qk="; 11 + }; 12 + dontNpmPrune = true; 13 + npmDepsHash = "sha256-MG1DiutTelg6GQwIbMya+mQTx6UoDoRHZvAkVYC9deI="; 14 + }); 15 + # prettier-plugin-organize-imports = pkgs.buildNpmPackage (_finalAttrs: { 16 + # pname = "prettier-plugin-organize-imports"; 17 + # version = "4.3.0"; 18 + # src = pkgs.fetchFromGitHub { 19 + # owner = "simonhaenisch"; 20 + # repo = "prettier-plugin-organize-imports"; 21 + # rev = "f354c0ef8689f4592807e85fa5bc0157588390c7"; 22 + # hash = "sha256-MvasPRODzK0OPrThhd/pcoSkwu8a1aZwYtvugTG4l0E="; 23 + # }; 24 + # dontNpmPrune = true; 25 + # npmDepsHash = ""; 26 + # }); 27 + prettier-plugin-tailwindcss = pkgs.buildNpmPackage (_finalAttrs: { 28 + pname = "prettier-plugin-tailwindcss"; 29 + version = "0.7.1"; 30 + src = pkgs.fetchFromGitHub { 31 + owner = "tailwindlabs"; 32 + repo = "prettier-plugin-tailwindcss"; 33 + rev = "v0.7.1"; 34 + hash = "sha256-eKzhjZ0MTwufyodWoPfsWiMPkOtt0HJ+Gby65G+N0Hc="; 35 + }; 36 + dontNpmPrune = true; 37 + npmDepsHash = "sha256-dTStXc92F4Izcg2mfWfhu8DzIqXoOHJlOAR2uYTjCvk="; 38 + }); 39 + in { 40 + printWidth = 120; 41 + bracketSameLine = true; 42 + plugins = [ 43 + "${prettier-plugin-svelte}/lib/node_modules/prettier-plugin-svelte/plugin.js" 44 + # "${prettier-plugin-organize-imports}/lib/node_modules/prettier-plugin-organize-imports/index.js" 45 + "${prettier-plugin-tailwindcss}/lib/node_modules/prettier-plugin-tailwindcss/dist/index.mjs" 46 + ]; 47 + overrides = [ 48 + { 49 + files = "*.svelte"; 50 + options = {parser = "svelte";}; 51 + } 52 + ]; 53 + }