Commit 69e3b87

HPCesia <me@hpcesia.com>
2025-12-31 12:17:10
feat: wakatime
1 parent 5cc1d00
modules/dev/helix/languages/astro.nix
@@ -9,7 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["astro-ls" "tailwindcss-ls" "biome"];
+          language-servers = ["astro-ls" "tailwindcss-ls" "biome" "wakatime"];
         }
       ];
       language-server = {
modules/dev/helix/languages/cpp.nix
@@ -1,24 +1,24 @@
 {
   flake.modules.homeManager.dev-helix = _: {
     programs.helix.languages = {
-      language = [
-        {
-          name = "c";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-        }
-        {
-          name = "cpp";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-        }
-      ];
+      language =
+        builtins.map (
+          lang: {
+            name = lang;
+            auto-format = true;
+            indent = {
+              tab-width = 2;
+              unit = "  ";
+            };
+            language-servers = [
+              "clangd"
+              "wakatime"
+            ];
+          }
+        ) [
+          "c"
+          "cpp"
+        ];
       language-server.clangd = {
         command = "clangd";
         args = [
modules/dev/helix/languages/css.nix
@@ -10,7 +10,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["biome" "tailwindcss-ls"];
+          language-servers = ["biome" "tailwindcss-ls" "wakatime"];
         }
       ];
     };
modules/dev/helix/languages/html.nix
@@ -9,7 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["vscode-html-language-server" "tailwindcss-ls" "biome"];
+          language-servers = ["vscode-html-language-server" "tailwindcss-ls" "biome" "wakatime"];
         }
       ];
     };
modules/dev/helix/languages/javascript.nix
@@ -11,7 +11,9 @@
                 name = "typescript-language-server";
                 except-features = ["format"];
               }
+              "tailwindcss-ls"
               "biome"
+              "wakatime"
             ];
           }
         ) [
modules/dev/helix/languages/latex.nix
@@ -1,32 +1,28 @@
 {
   flake.modules.homeManager.dev-helix = _: {
     programs.helix.languages = {
-      language = [
-        {
-          name = "latex";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-          formatter = {
-            command = "tex-fmt";
-            args = ["--stdin"];
-          };
-        }
-        {
-          name = "bibtex";
-          auto-format = true;
-          indent = {
-            tab-width = 2;
-            unit = "  ";
-          };
-          formatter = {
-            command = "tex-fmt";
-            args = ["--stdin"];
-          };
-        }
-      ];
+      language =
+        builtins.map (
+          lang: {
+            name = lang;
+            auto-format = true;
+            indent = {
+              tab-width = 2;
+              unit = "  ";
+            };
+            formatter = {
+              command = "tex-fmt";
+              args = ["--stdin"];
+            };
+            language-servers = [
+              "texlab"
+              "wakatime"
+            ];
+          }
+        ) [
+          "latex"
+          "bibtex"
+        ];
     };
   };
 }
modules/dev/helix/languages/lua.nix
@@ -27,6 +27,7 @@
             ".stylua.toml"
             ".editorconfig"
           ];
+          language-servers = ["lua-language-server" "wakatime"];
         }
       ];
       language-server.lua-language-server = {
modules/dev/helix/languages/markdown.nix
@@ -22,7 +22,7 @@
             command = "prettier";
             args = ["--parser" "markdown" "--stdin-filepath" "%{buffer_name}"];
           };
-          language-servers = ["marksman"];
+          language-servers = ["marksman" "wakatime"];
         }
       ];
     };
modules/dev/helix/languages/mdx.nix
@@ -27,7 +27,7 @@
             command = "prettier";
             args = ["--parser" "mdx" "--stdin-filepath" "%{buffer_name}"];
           };
-          language-servers = ["mdx-language-server"];
+          language-servers = ["mdx-language-server" "wakatime"];
         }
       ];
       grammar = [
modules/dev/helix/languages/nix.nix
@@ -9,7 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
-          language-servers = ["nixd"];
+          language-servers = ["nixd" "wakatime"];
         }
       ];
       language-server = {
modules/dev/helix/languages/rust.nix
@@ -9,6 +9,7 @@
             tab-width = 2;
             unit = "  ";
           };
+          language-servers = ["rust-analyzer" "wakatime"];
         }
       ];
       language-server.rust-analyzer.config = {
modules/dev/helix/languages/typst.nix
@@ -10,6 +10,7 @@
             unit = "  ";
           };
           soft-wrap.enable = true;
+          language-servers = ["tinymist" "wakatime"];
         }
       ];
       language-server.tinymist.config = {
modules/dev/helix/languages/wakatime.nix
@@ -0,0 +1,9 @@
+{
+  flake.modules.homeManager.dev-helix = _: {
+    programs.helix.languages = {
+      language-server = {
+        wakatime = {command = "wakatime-ls";};
+      };
+    };
+  };
+}
modules/dev/helix/default.nix
@@ -1,7 +1,10 @@
-{
-  flake.modules.homeManager.dev-helix = _: {
+{inputs, ...}: {
+  flake.modules.homeManager.dev-helix = {pkgs, ...}: {
     programs.helix = {
       enable = true;
+      extraPackages = [
+        inputs.wakatime-ls.packages.${pkgs.stdenv.system}.default
+      ];
       settings = {
         editor = {
           line-number = "relative";
modules/dev/vscode/base-extensions.nix
@@ -20,6 +20,7 @@
         shardulm94.trailing-spaces
         gruntfuggly.todo-tree
         editorconfig.editorconfig
+        wakatime.vscode-wakatime
 
         # LLM
         github.copilot
modules/dev/zed/default.nix
@@ -1,5 +1,22 @@
 {
-  flake.modules.homeManager.dev-zed = {pkgs, ...}: {
+  flake.modules.homeManager.dev-zed = {pkgs, ...}: let
+    wakatime-ls = pkgs.rustPlatform.buildRustPackage (finalAttrs: {
+      pname = "wakatime-ls";
+      version = "0.1.10";
+      src = pkgs.fetchFromGitHub {
+        owner = "wakatime";
+        repo = "zed-wakatime";
+        tag = "v${finalAttrs.version}";
+        hash = "sha256-Jmm+eRHMNBkc6ZzadvkWrfsb+bwEBNM0fnXU4dJ0NgE=";
+      };
+      buildAndTestSubdir = "wakatime-ls";
+      cargoHash = "sha256-x2axmHinxYZ2VEddeCTqMJd8ok0KgAVdUhbWaOdRA30=";
+      meta = {
+        homepage = "https://github.com/wakatime/zed-wakatime/tree/master/wakatime-ls";
+        license = pkgs.lib.licenses.mit;
+      };
+    });
+  in {
     programs.zed-editor = {
       enable = true;
       extraPackages = with pkgs; [
@@ -7,11 +24,17 @@
         # Use extraPackages to avoid Zed error with self-downloading binaries without FHS environment
         # Alternative: use `zed-editor-fhs` package
         package-version-server
+
+        # Used by Zed wakatime plugin, different from another one.
+        wakatime-ls
       ];
       extensions = [
         # Appearance
         "material-icon-theme"
 
+        # Utilities
+        "wakatime"
+
         # No specific config languages
         "biome"
         "dart"
modules/dev/packages.nix
@@ -27,6 +27,8 @@
       just # Command snippet runner
       just-lsp
 
+      wakatime-cli
+
       # === General Purpose Languages === #
       # -- C/C++
       cmake
flake.lock
@@ -411,6 +411,27 @@
         "type": "github"
       }
     },
+    "gitignore_2": {
+      "inputs": {
+        "nixpkgs": [
+          "wakatime-ls",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1762808025,
+        "narHash": "sha256-XmjITeZNMTQXGhhww6ed/Wacy2KzD6svioyCX7pkUu4=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
     "gnome-shell": {
       "flake": false,
       "locked": {
@@ -1035,6 +1056,7 @@
         "silentSDDM": "silentSDDM",
         "stylix": "stylix",
         "vaultix": "vaultix",
+        "wakatime-ls": "wakatime-ls",
         "wallpapers": "wallpapers"
       }
     },
@@ -1077,6 +1099,27 @@
         "type": "github"
       }
     },
+    "rust-overlay_3": {
+      "inputs": {
+        "nixpkgs": [
+          "wakatime-ls",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1764557621,
+        "narHash": "sha256-kX5PoY8hQZ80+amMQgOO9t8Tc1JZ70gYRnzaVD4AA+o=",
+        "owner": "oxalica",
+        "repo": "rust-overlay",
+        "rev": "93316876c2229460a5d6f5f052766cc4cef538ce",
+        "type": "github"
+      },
+      "original": {
+        "owner": "oxalica",
+        "repo": "rust-overlay",
+        "type": "github"
+      }
+    },
     "silentSDDM": {
       "inputs": {
         "nixpkgs": "nixpkgs_11"
@@ -1310,6 +1353,28 @@
         "type": "github"
       }
     },
+    "wakatime-ls": {
+      "inputs": {
+        "gitignore": "gitignore_2",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "rust-overlay": "rust-overlay_3"
+      },
+      "locked": {
+        "lastModified": 1764772399,
+        "narHash": "sha256-iZmN5d42tOsmssuFzOf3saUUeXbrwraQmDgh5czuMis=",
+        "owner": "mrnossiom",
+        "repo": "wakatime-ls",
+        "rev": "b8b9c1e612f198d767a64142f34c33ffbd347fae",
+        "type": "github"
+      },
+      "original": {
+        "owner": "mrnossiom",
+        "repo": "wakatime-ls",
+        "type": "github"
+      }
+    },
     "wallpapers": {
       "flake": false,
       "locked": {
flake.nix
@@ -47,6 +47,9 @@
 
     vaultix.url = "github:milieuim/vaultix";
 
+    wakatime-ls.url = "github:mrnossiom/wakatime-ls";
+    wakatime-ls.inputs.nixpkgs.follows = "nixpkgs";
+
     # == Personal inputs ==
     nixos-logo.url = "git+https://repo.hpcesia.com/HPCesia/nixos-logo?shallow=1";
     nixos-logo.flake = false;