Commit d60b036

HPCesia <me@hpcesia.com>
2025-11-19 07:39:29
feat: use biome for web development
1 parent e1c5d4e
modules/dev/helix/languages/astro.nix
@@ -9,11 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["astro-ls" "tailwindcss-ls"];
-          formatter = {
-            command = "prettier";
-            args = ["--parser" "astro" "--stdin-filepath" "%{buffer_name}"];
-          };
+          language-servers = ["astro-ls" "tailwindcss-ls" "biome"];
         }
       ];
       language-server = {
modules/dev/helix/languages/css.nix
@@ -1,17 +1,5 @@
 {
   flake.modules.homeManager.dev-helix = _: let
-    stylelintRoots = [
-      ".stylelintrc"
-      ".stylelintrc.mjs"
-      ".stylelintrc.cjs"
-      ".stylelintrc.js"
-      ".stylelintrc.json"
-      ".stylelintrc.yaml"
-      ".stylelintrc.yml"
-      "stylelint.config.mjs"
-      "stylelint.config.cjs"
-      "stylelint.config.js"
-    ];
   in {
     programs.helix.languages = {
       language = [
@@ -22,29 +10,9 @@
             tab-width = 2;
             unit = "  ";
           };
-          roots = stylelintRoots;
-          language-servers = ["stylelint-lsp" "tailwindcss-ls"];
-        }
-        {
-          name = "scss";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-          roots = stylelintRoots;
-          language-servers = ["stylelint-lsp" "tailwindcss-ls"];
+          language-servers = ["biome" "tailwindcss-ls"];
         }
       ];
-      language-server = {
-        stylelint-lsp = {
-          command = "stylelint-lsp";
-          args = ["--stdio"];
-          config = {
-            autoFixOnFormat = true;
-          };
-        };
-      };
     };
   };
 }
modules/dev/helix/languages/html.nix
@@ -9,11 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["vscode-html-language-server" "tailwindcss-ls"];
-          formatter = {
-            command = "prettier";
-            args = ["--parser" "html" "--stdin-filepath" "%{buffer_name}"];
-          };
+          language-servers = ["vscode-html-language-server" "tailwindcss-ls" "biome"];
         }
       ];
     };
modules/dev/helix/languages/javascript.nix
@@ -0,0 +1,29 @@
+{
+  flake.modules.homeManager.dev-helix = _: {
+    programs.helix.languages = {
+      language =
+        builtins.map (
+          lang: {
+            name = lang;
+            auto-format = true;
+            language-servers = [
+              {
+                name = "typescript-language-server";
+                except-features = ["format"];
+              }
+              "biome"
+            ];
+          }
+        ) [
+          "typescript"
+          "javascript"
+          "tsx"
+          "jsx"
+        ];
+      language-server.biome = {
+        command = "biome";
+        args = ["lsp-proxy"];
+      };
+    };
+  };
+}
modules/dev/helix/languages/typescript.nix
@@ -1,20 +0,0 @@
-{
-  flake.modules.homeManager.dev-helix = _: {
-    programs.helix.languages = {
-      language = [
-        {
-          name = "typescript";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-          formatter = {
-            command = "prettier";
-            args = ["--parser" "typescript" "--stdin-filepath" "%{buffer_name}"];
-          };
-        }
-      ];
-    };
-  };
-}
modules/dev/vscode/profiles/_astro.nix
@@ -14,6 +14,7 @@
       dbaeumer.vscode-eslint
       esbenp.prettier-vscode
       stylelint.vscode-stylelint
+      biomejs.biome
 
       yoavbls.pretty-ts-errors
     ];
modules/dev/vscode/profiles/_tauri.nix
@@ -28,6 +28,7 @@
       dbaeumer.vscode-eslint
       esbenp.prettier-vscode
       stylelint.vscode-stylelint
+      biomejs.biome
 
       yoavbls.pretty-ts-errors
     ];
modules/dev/zed/languages/astro.nix
@@ -5,15 +5,6 @@
     programs.zed-editor.userSettings = {
       languages.Astro = {
         format_on_save = "on";
-        formatter.external = {
-          command = "prettier";
-          arguments = [
-            "--parser"
-            "astro"
-            "--stdin-filepath"
-            "{buffer_path}"
-          ];
-        };
       };
     };
   };
modules/dev/zed/default.nix
@@ -13,6 +13,7 @@
         "material-icon-theme"
 
         # No specific config languages
+        "biome"
         "git-firefly" # Syntax highlighting for Git related files
         "just"
         "just-ls"
modules/dev/packages.nix
@@ -15,6 +15,7 @@
 
       # -- Documents
       marksman # Markdown LSP
+      rumdl
       tinymist # Typst LSP
       typstyle # Typst Formatter
       mdx-language-server
@@ -72,8 +73,9 @@
       nodePackages.vscode-langservers-extracted # HTML/CSS/JSON/ESLint LSP extracted from vscode
       nodePackages."@tailwindcss/language-server"
       nodePackages."@astrojs/language-server"
-      stylelint-lsp
+      # stylelint-lsp # Use biome instead
       nodePackages.prettier
+      biome
     ];
   };
 }