{ lib, pkgs, inputs, osConfig, ... }: let nix-development-enabled = osConfig.host.nix-development.enable; in { nixpkgs = { overlays = [ inputs.nix-vscode-extensions.overlays.default ]; }; programs = { bash.shellAliases = { code = "codium"; }; vscode = let extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system}; open-vsx = extensions.open-vsx; vscode-marketplace = extensions.vscode-marketplace; in { enable = true; package = pkgs.vscodium; mutableExtensionsDir = false; profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false; userSettings = lib.mkMerge [ { "workbench.colorTheme" = "Atom One Dark"; "cSpell.userWords" = [ "webdav" ]; } (lib.mkIf nix-development-enabled { "nix.enableLanguageServer" = true; "nix.serverPath" = "nil"; "[nix]" = { "editor.defaultFormatter" = "kamadorueda.alejandra"; "editor.formatOnPaste" = true; "editor.formatOnSave" = true; "editor.formatOnType" = true; }; "alejandra.program" = "alejandra"; "nixpkgs" = { "expr" = "import {}"; }; }) (lib.mkIf osConfig.services.ollama.enable { "twinny.fileContextEnabled" = true; "twinny.enableLogging" = false; "twinny.completionCacheEnabled" = true; # builtins.elemAt osConfig.services.ollama.loadModels 0; }) ]; extensions = ( with open-vsx; [ # vs code feel extensions ms-vscode.atom-keybindings akamud.vscode-theme-onedark 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 firsttris.vscode-jest-runner stylelint.vscode-stylelint tauri-apps.tauri-vscode # astro blog extensions astro-build.astro-vscode unifiedjs.vscode-mdx # misc extensions bungcip.better-toml ] ++ ( lib.lists.optionals osConfig.services.ollama.enable [ rjmacarthy.twinny ] ) ++ (lib.lists.optionals nix-development-enabled [ # nix extensions pinage404.nix-extension-pack jnoortheen.nix-ide kamadorueda.alejandra ]) ++ ( with vscode-marketplace; [ # js extensions karyfoundation.nearley ] ) ); }; }; }; }