{ 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 = { oneDark.enable = true; atomKeybindings.enable = true; aiCode = { enable = ai-tooling-enabled; ollamaHost = "http://defiant:11434"; }; alejandra.enable = nix-development-enabled; nixIde.enable = nix-development-enabled; }; 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 # html extensions formulahendry.auto-rename-tag ms-vscode.live-server # js extensions dsznajder.es7-react-js-snippets dbaeumer.vscode-eslint standard.vscode-standard orta.vscode-jest stylelint.vscode-stylelint tauri-apps.tauri-vscode # 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 [ ]) ) ) ); }; }; }; }; }