Commit 7aef689
Changed files (4)
home
linux
gui
plasma
apps
vscode
home/linux/gui/plasma/apps/vscode/profiles/default.nix
@@ -0,0 +1,44 @@
+{
+ mylib,
+ pkgs,
+ ...
+}: let
+ baseExtensions = import ../baseExtensions.nix pkgs;
+in {
+ imports = mylib.scanPaths ./.;
+
+ programs.vscode.profiles.default = {
+ enableUpdateCheck = false;
+ enableExtensionUpdateCheck = false;
+
+ userSettings = {
+ # --- Editor Settings ---
+ "editor.fontSize" = 16;
+ "editor.fontLigatures" = true;
+ "editor.guides.bracketPairs" = true;
+ "editor.formatOnSave" = true;
+ # --- Terminal Settings ---
+ "terminal.integrated.fontSize" = 14;
+ # --- Workbench Settings ---
+ "workbench.iconTheme" = "material-icon-theme";
+ "workbench.startupEditor" = "none";
+ # --- Extension Settings ---
+ "nix.formatterPath" = "alejandra";
+ # --- Other Settings ---
+ "telemetry.telemetryLevel" = "off";
+ "security.workspace.trust.untrustedFiles" = "open";
+ "window.newWindowProfile" = "default";
+ "workbench.settings.applyToAllProfiles" = [
+ "editor.fontSize"
+ "editor.fontLigatures"
+ "editor.guides.bracketPairs"
+ "editor.semanticTokenColorCustomizations"
+ "terminal.integrated.fontSize"
+ "workbench.iconTheme"
+ "workbench.startupEditor"
+ ];
+ };
+
+ extensions = baseExtensions;
+ };
+}
home/linux/gui/plasma/apps/vscode/profiles/typst.nix
@@ -0,0 +1,19 @@
+{pkgs, ...}: let
+ baseExtensions = import ../baseExtensions.nix pkgs;
+in {
+ programs.vscode.profiles.typst = {
+ userSettings = {
+ "tinymist.formatterMode" = "typstyle";
+ "[typst-code]"."editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
+ "[typst]"."editor.unicodeHighlight.ambiguousCharacters" = false;
+ };
+
+ extensions =
+ (with pkgs.vscode-extensions; [
+ myriad-dreamin.tinymist # Typst LSP
+ tamasfe.even-better-toml # TOML syntax
+ tomoki1207.pdf # PDF Viewer
+ ])
+ ++ baseExtensions;
+ };
+}
home/linux/gui/plasma/apps/vscode/baseExtensions.nix
@@ -0,0 +1,24 @@
+pkgs:
+with pkgs.vscode-extensions; [
+ # Translation
+ ms-ceintl.vscode-language-pack-zh-hans
+ w88975.code-translate
+
+ # Appearance
+ pkief.material-icon-theme
+
+ # Utils
+ mhutchie.git-graph
+ christian-kohler.path-intellisense
+ usernamehw.errorlens
+ shardulm94.trailing-spaces
+ gruntfuggly.todo-tree
+
+ # LLM
+ github.copilot
+ github.copilot-chat
+ rooveterinaryinc.roo-cline
+
+ # Nix
+ jnoortheen.nix-ide
+]
home/linux/gui/plasma/apps/vscode/default.nix
@@ -1,5 +1,58 @@
-{...}: {
+{
+ mylib,
+ myvars,
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ inherit (lib.lists) concatLists;
+
+ homeDir = config.home.homeDirectory;
+ userDataDir = "${homeDir}/.data/vscode/data";
+ extensionsDir = "${homeDir}/.data/vscode/extensions";
+
+ pkg = pkgs.vscode.override {
+ commandLineArgs = concatLists [
+ ["--extensions-dir" extensionsDir]
+ ["--user-data-dir" userDataDir]
+ ];
+ };
+in {
+ imports = [./profiles];
+
programs.vscode = {
enable = true;
+ package = pkg;
+ mutableExtensionsDir = false;
+ };
+
+ # To solve VSCode wants to write settings.json
+ # VSCode will reset per reboot/rebuild.
+ systemd.user.services.vscode-setup = {
+ Unit = {
+ Description = "VSCode Setup service";
+ After = ["graphical-session-pre.target"];
+ Wants = ["graphical-session-pre.target"];
+ };
+ Install.WantedBy = ["graphical-session.target"];
+ Service = {
+ Type = "oneshot";
+ ExecStart = lib.getExe (pkgs.writeShellApplication {
+ name = "vscode-setup";
+ text = ''
+ rm -rf "${userDataDir}/User"
+ rm -rf "${extensionsDir}"
+
+ mkdir -p "${userDataDir}"
+ mkdir -p "${extensionsDir}"
+
+ cp -r --dereference --no-preserve=mode,ownership \
+ "${homeDir}/.config/Code/User" "${userDataDir}/User"
+ cp -r --dereference --no-preserve=mode,ownership \
+ "${homeDir}/.vscode/extensions/." "${extensionsDir}"
+ '';
+ });
+ };
};
}