Commit ed72d76

HPCesia <me@hpcesia.com>
2025-07-31 06:58:46
refactor: vscode profiles
1 parent b6b078f
home/linux/gui/vscode/profiles/astro.nix
@@ -1,22 +1,18 @@
-{pkgs, ...}: let
-  baseExtensions = import ../baseExtensions.nix pkgs;
-in {
-  programs.vscode.profiles.Astro = {
+{pkgs, ...}: {
+  Astro = {
     userSettings = {
       "javascript.suggest.paths" = false;
       "typescript.suggest.paths" = false;
     };
 
-    extensions =
-      (with pkgs.vscode-extensions; [
-        astro-build.astro-vscode # Astro LSP
-        vue.volar # Vue LSP
-        bradlc.vscode-tailwindcss # Tailwind CSS LSP
-        unifiedjs.vscode-mdx # MDX LSP
+    extensions = with pkgs.vscode-extensions; [
+      astro-build.astro-vscode # Astro LSP
+      vue.volar # Vue LSP
+      bradlc.vscode-tailwindcss # Tailwind CSS LSP
+      unifiedjs.vscode-mdx # MDX LSP
 
-        dbaeumer.vscode-eslint
-        esbenp.prettier-vscode
-      ])
-      ++ baseExtensions;
+      dbaeumer.vscode-eslint
+      esbenp.prettier-vscode
+    ];
   };
 }
home/linux/gui/vscode/profiles/cpp.nix
@@ -1,7 +1,5 @@
-{pkgs, ...}: let
-  baseExtensions = import ../baseExtensions.nix pkgs;
-in {
-  programs.vscode.profiles."C++" = {
+{pkgs, ...}: {
+  "C++" = {
     userSettings = {
       "clangd.arguments" = [
         "--compile-commands-dir=\${workspaceFolder}/.vscode"
@@ -33,7 +31,6 @@ in {
             sha256 = "rxx/tG0WqSQoP1nfuknPewDkmEkNBkFBaC2ZrWwTLpg=";
           }
         ]
-      )
-      ++ baseExtensions;
+      );
   };
 }
home/linux/gui/vscode/profiles/default.nix
@@ -1,67 +1,81 @@
 {
+  # NOTE: the args not used in this file CAN NOT be removed!
+  # Just like haumea in `/outputs`.
+  lib,
   mylib,
   pkgs,
+  pkgs-unstable,
   ...
-}: let
-  baseExtensions = import ../baseExtensions.nix pkgs;
+} @ args: let
+  baseExtensions = import ../baseExtensions.nix args;
+  profilesList =
+    (map (path: import path args) (mylib.scanModules ./.))
+    ++ [
+      {
+        default = {
+          userSettings = {
+            # --- Editor Settings --- #
+            "editor.fontSize" = 16;
+            "editor.fontLigatures" = true;
+            "editor.guides.bracketPairs" = true;
+            "editor.formatOnSave" = true;
+            "editor.unicodeHighlight.allowedLocales"."zh-hans" = true;
+            # --- Terminal Settings --- #
+            "terminal.integrated.fontSize" = 14;
+            "terminal.integrated.minimumContrastRatio" = 1;
+            "terminal.integrated.defaultProfile.linux" = "fish";
+            # --- Workbench Settings --- #
+            "workbench.colorTheme" = "Catppuccin Macchiato";
+            "workbench.iconTheme" = "material-icon-theme";
+            "workbench.startupEditor" = "none";
+            # --- Extension Settings --- #
+            "GitCommitPlugin.ShowEmoji" = false;
+            "GitCommitPlugin.MaxSubjectCharacters" = 25;
+            "github.copilot.advanced".useLanguageServer = true;
+            "nix.enableLanguageServer" = true;
+            "nix.serverSettings".nil.formatting.command = ["alejandra"];
+            "evenBetterToml.formatter.alignEntries" = true;
+            "evenBetterToml.formatter.alignComments" = true;
+            "evenBetterToml.formatter.allowedBlankLines" = 1;
+            # --- Update Settings --- #
+            "extensions.autoCheckUpdates" = false;
+            "extensions.autoUpdate" = false;
+            "update.mode" = "none";
+            # --- Other Settings --- #
+            # Settings apply to all profiles
+            "telemetry.telemetryLevel" = "off";
+            "security.workspace.trust.untrustedFiles" = "open";
+            "window.newWindowProfile" = "Default";
+            "workbench.settings.applyToAllProfiles" = [
+              # Normal
+              "editor.fontSize"
+              "editor.fontLigatures"
+              "editor.guides.bracketPairs"
+              "editor.formatOnSave"
+              "terminal.integrated.fontSize"
+              "workbench.colorTheme"
+              "workbench.iconTheme"
+              "workbench.startupEditor"
+              # Extension
+              "GitCommitPlugin.ShowEmoji"
+              "GitCommitPlugin.MaxSubjectCharacters"
+              "github.copilot.advanced"
+              "nix.enableLanguageServer"
+              "nix.serverSettings"
+              "evenBetterToml.formatter.alignEntries"
+              "evenBetterToml.formatter.alignComments"
+              "evenBetterToml.formatter.allowedBlankLines"
+            ];
+          };
+        };
+      }
+    ];
+  profiles = lib.mergeAttrsList profilesList;
+  profilesWithBaseExtensions =
+    lib.mapAttrs
+    (_: v: (v // {extensions = v.extensions ++ baseExtensions;}))
+    profiles;
 in {
-  imports = mylib.scanModules ./.;
-
-  programs.vscode.profiles.default = {
-    userSettings = {
-      # --- Editor Settings --- #
-      "editor.fontSize" = 16;
-      "editor.fontLigatures" = true;
-      "editor.guides.bracketPairs" = true;
-      "editor.formatOnSave" = true;
-      "editor.unicodeHighlight.allowedLocales"."zh-hans" = true;
-      # --- Terminal Settings --- #
-      "terminal.integrated.fontSize" = 14;
-      "terminal.integrated.minimumContrastRatio" = 1;
-      # --- Workbench Settings --- #
-      "workbench.colorTheme" = "Catppuccin Macchiato";
-      "workbench.iconTheme" = "material-icon-theme";
-      "workbench.startupEditor" = "none";
-      # --- Extension Settings --- #
-      "GitCommitPlugin.ShowEmoji" = false;
-      "GitCommitPlugin.MaxSubjectCharacters" = 25;
-      "github.copilot.advanced".useLanguageServer = true;
-      "nix.enableLanguageServer" = true;
-      "nix.serverSettings".nil.formatting.command = ["alejandra"];
-      "evenBetterToml.formatter.alignEntries" = true;
-      "evenBetterToml.formatter.alignComments" = true;
-      "evenBetterToml.formatter.allowedBlankLines" = 1;
-      # --- Update Settings --- #
-      "extensions.autoCheckUpdates" = false;
-      "extensions.autoUpdate" = false;
-      "update.mode" = "none";
-      # --- Other Settings --- #
-      # Settings apply to all profiles
-      "telemetry.telemetryLevel" = "off";
-      "security.workspace.trust.untrustedFiles" = "open";
-      "window.newWindowProfile" = "Default";
-      "workbench.settings.applyToAllProfiles" = [
-        # Normal
-        "editor.fontSize"
-        "editor.fontLigatures"
-        "editor.guides.bracketPairs"
-        "editor.formatOnSave"
-        "terminal.integrated.fontSize"
-        "workbench.colorTheme"
-        "workbench.iconTheme"
-        "workbench.startupEditor"
-        # Extension
-        "GitCommitPlugin.ShowEmoji"
-        "GitCommitPlugin.MaxSubjectCharacters"
-        "github.copilot.advanced"
-        "nix.enableLanguageServer"
-        "nix.serverSettings"
-        "evenBetterToml.formatter.alignEntries"
-        "evenBetterToml.formatter.alignComments"
-        "evenBetterToml.formatter.allowedBlankLines"
-      ];
-    };
-
-    extensions = baseExtensions;
-  };
+  catppuccin.vscode.profiles.default.icons.enable = false;
+  programs.vscode.profiles = profilesWithBaseExtensions;
 }
home/linux/gui/vscode/profiles/rust.nix
@@ -1,15 +1,11 @@
-{pkgs, ...}: let
-  baseExtensions = import ../baseExtensions.nix pkgs;
-in {
-  programs.vscode.profiles.Rust = {
+{pkgs, ...}: {
+  Rust = {
     userSettings = {
     };
 
-    extensions =
-      (with pkgs.vscode-extensions; [
-        rust-lang.rust-analyzer
-        vadimcn.vscode-lldb
-      ])
-      ++ baseExtensions;
+    extensions = with pkgs.vscode-extensions; [
+      rust-lang.rust-analyzer
+      vadimcn.vscode-lldb
+    ];
   };
 }
home/linux/gui/vscode/profiles/typst.nix
@@ -1,18 +1,14 @@
-{pkgs, ...}: let
-  baseExtensions = import ../baseExtensions.nix pkgs;
-in {
-  programs.vscode.profiles.Typst = {
+{pkgs, ...}: {
+  Typst = {
     userSettings = {
       "tinymist.formatterMode" = "typstyle";
       "[typst-code]"."editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
       "[typst]"."editor.unicodeHighlight.ambiguousCharacters" = false;
     };
 
-    extensions =
-      (with pkgs.vscode-extensions; [
-        myriad-dreamin.tinymist # Typst LSP
-        tomoki1207.pdf # PDF Viewer
-      ])
-      ++ baseExtensions;
+    extensions = with pkgs.vscode-extensions; [
+      myriad-dreamin.tinymist # Typst LSP
+      tomoki1207.pdf # PDF Viewer
+    ];
   };
 }
home/linux/gui/vscode/baseExtensions.nix
@@ -1,7 +1,12 @@
-pkgs: (with pkgs.vscode-extensions;
+{
+  pkgs,
+  pkgs-unstable,
+  ...
+}:
+with pkgs.vscode-extensions;
   [
     # Translation
-    # ms-ceintl.vscode-language-pack-zh-hans
+    ms-ceintl.vscode-language-pack-zh-hans
     w88975.code-translate
 
     # Appearance
@@ -29,7 +34,7 @@ pkgs: (with pkgs.vscode-extensions;
     tamasfe.even-better-toml
     redhat.vscode-yaml
   ]
-  ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
+  ++ (pkgs.vscode-utils.extensionsFromVscodeMarketplace [
     {
       name = "git-commit-plugin";
       publisher = "redjue";