{ config, pkgs, lib, ... }:

let
  themePath = ../../themes/palettes + "/${config.nomarchy.theme}/apps/vscode.json";
  themeConfig = if builtins.pathExists themePath then
    builtins.fromJSON (builtins.readFile themePath)
  else
    { name = "Default Dark Modern"; };

  # 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;
      profiles.default.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);
    };
  };
}
