{ lib, pkgs, config, osConfig, ... }: let nix-development-enabled = osConfig.host.nix-development.enable; ai-tooling-enabled = osConfig.host.ai.enable; in { imports = [ ./user-words.nix ]; config = lib.mkIf config.user.isDesktopUser { programs = { bash.shellAliases = { code = "codium"; }; vscode = { package = pkgs.vscodium; mutableExtensionsDir = false; profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false; userSettings = lib.mkMerge [ { "javascript.updateImportsOnFileMove.enabled" = "always"; "editor.tabSize" = 2; "editor.insertSpaces" = false; } ]; extraExtensions = { # vs code feel oneDark.enable = true; atomKeybindings.enable = true; # html development autoRenameTag.enable = true; liveServer.enable = true; # js development es7ReactJsSnippets.enable = true; tauriVscode.enable = true; vscodeEslint.enable = true; vscodeJest.enable = true; vscodeStandard.enable = true; vscodeStylelint.enable = true; # nix development alejandra.enable = nix-development-enabled; nixIde.enable = nix-development-enabled; # ai tooling aiCode = { enable = ai-tooling-enabled; ollamaHost = "http://defiant:11434"; }; }; extensions = let extension-pkgs = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version; in ( ( with extension-pkgs.open-vsx; [ # vs code feel extensions streetsidesoftware.code-spell-checker streetsidesoftware.code-spell-checker-german streetsidesoftware.code-spell-checker-italian jeanp413.open-remote-ssh # go extensions golang.go # astro blog extensions astro-build.astro-vscode unifiedjs.vscode-mdx # misc extensions tamasfe.even-better-toml ] ) ++ ( with extension-pkgs.vscode-marketplace; ( [ # js extensions karyfoundation.nearley ] ++ (lib.lists.optionals ai-tooling-enabled [ ]) ) ) ); }; }; }; }; }