{ config, pkgs, lib, ... }: let themeConfig = builtins.fromJSON (builtins.readFile (../../themes/palettes + "/${config.nomarchy.theme}/vscode.json")); # Development extensions that match the system theme devExtensions = with pkgs.vscode-extensions; [ # Language support ms-python.python rust-lang.rust-analyzer golang.go jnoortheen.nix-ide # Git integration eamodio.gitlens # Editor enhancements esbenp.prettier-vscode dbaeumer.vscode-eslint bradlc.vscode-tailwindcss # Theme extensions (provide color themes matching nomarchy palettes) catppuccin.catppuccin-vsc enkia.tokyo-night arcticicestudio.nord-visual-studio-code sainnhe.everforest mvllow.rose-pine ]; in { options.nomarchy.vscode = { devExtensions = lib.mkOption { type = lib.types.bool; default = false; description = "Whether to install development extensions for VSCode."; }; }; config = { programs.vscode = { enable = lib.mkDefault true; package = lib.mkDefault pkgs.vscode; userSettings = lib.mkDefault { "update.mode" = "none"; "workbench.colorTheme" = themeConfig.name; "window.titleBarStyle" = "custom"; "editor.fontFamily" = "'${config.nomarchy.fonts.monospace}', 'Droid Sans Mono', monospace"; "terminal.integrated.fontFamily" = config.nomarchy.fonts.monospace; }; extensions = lib.mkIf config.nomarchy.vscode.devExtensions (lib.mkDefault devExtensions); }; }; }